From 9ce99ee0080451fc1eab2f81677bf4cdface5a33 Mon Sep 17 00:00:00 2001 From: Waldir Pimenta Date: Thu, 2 Nov 2017 11:57:36 +0000 Subject: [PATCH 0001/1070] change label of indentation action in status bar This change is to conform to the labels of the other actions, which clearly indicate that they will provide a way to *do* something (Go to, Select, etc.) --- src/vs/workbench/browser/parts/editor/editorStatus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index 2ffc03718df..179be2d4fda 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -305,7 +305,7 @@ export class EditorStatus implements IStatusbarItem { hide(this.selectionElement); this.indentationElement = append(this.element, $('a.editor-status-indentation')); - this.indentationElement.title = nls.localize('indentation', "Indentation"); + this.indentationElement.title = nls.localize('indentation', "Select Indentation"); this.indentationElement.onclick = () => this.onIndentationClick(); hide(this.indentationElement); From 32357e96d914b5d362f8667fbed4630c0b09bdb9 Mon Sep 17 00:00:00 2001 From: Waldir Pimenta Date: Fri, 3 Nov 2017 17:58:34 +0000 Subject: [PATCH 0002/1070] change l10n key of status bar's Indentation action This is to match both its contents and the keys of similar actions in the status bar --- src/vs/workbench/browser/parts/editor/editorStatus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index 179be2d4fda..baf87d1afee 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -305,7 +305,7 @@ export class EditorStatus implements IStatusbarItem { hide(this.selectionElement); this.indentationElement = append(this.element, $('a.editor-status-indentation')); - this.indentationElement.title = nls.localize('indentation', "Select Indentation"); + this.indentationElement.title = nls.localize('selectIndentation', "Select Indentation"); this.indentationElement.onclick = () => this.onIndentationClick(); hide(this.indentationElement); From 8b92c975f136d5673720c52272c081a2279e2ec9 Mon Sep 17 00:00:00 2001 From: KarelCasier Date: Sun, 12 Nov 2017 18:20:41 -0500 Subject: [PATCH 0003/1070] Add config option to disable multicursor collapse --- .../editor/common/config/commonEditorConfig.ts | 5 +++++ src/vs/editor/common/config/editorOptions.ts | 16 ++++++++++++++++ .../editor/common/controller/cursorCollection.ts | 4 ++++ src/vs/editor/common/controller/cursorCommon.ts | 2 ++ src/vs/monaco.d.ts | 7 +++++++ 5 files changed, 34 insertions(+) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 76613d9b7c4..6c8efdb88b8 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -352,6 +352,11 @@ const editorConfiguration: IConfigurationNode = { ] }, "The modifier to be used to add multiple cursors with the mouse. `ctrlCmd` maps to `Control` on Windows and Linux and to `Command` on OSX. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier.") }, + 'editor.multiCursorCollapsible': { + 'type': 'boolean', + 'default': EDITOR_DEFAULTS.multiCursorCollapsible, + 'description': nls.localize('multiCursorCollapsible', "Enable cursors to collapse when overlapping.") + }, 'editor.quickSuggestions': { 'anyOf': [ { diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index ebb78f046b7..e33c8f2561a 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -367,6 +367,11 @@ export interface IEditorOptions { * Defaults to 'alt' */ multiCursorModifier?: 'ctrlCmd' | 'alt'; + /** + * Enable cursors to collapse when overlapping. + * Defaults to true + */ + multiCursorCollapsible?: boolean; /** * Configure the editor's accessibility support. * Defaults to 'auto'. It is best to leave this to 'auto'. @@ -840,6 +845,7 @@ export interface IValidatedEditorOptions { readonly emptySelectionClipboard: boolean; readonly useTabStops: boolean; readonly multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'; + readonly multiCursorCollapsible: boolean; readonly accessibilitySupport: 'auto' | 'off' | 'on'; readonly viewInfo: InternalEditorViewOptions; @@ -862,6 +868,7 @@ export class InternalEditorOptions { */ readonly accessibilitySupport: platform.AccessibilitySupport; readonly multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'; + readonly multiCursorCollapsible: boolean; // ---- cursor options readonly wordSeparators: string; @@ -890,6 +897,7 @@ export class InternalEditorOptions { readOnly: boolean; accessibilitySupport: platform.AccessibilitySupport; multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'; + multiCursorCollapsible: boolean; wordSeparators: string; autoClosingBrackets: boolean; autoIndent: boolean; @@ -910,6 +918,7 @@ export class InternalEditorOptions { this.readOnly = source.readOnly; this.accessibilitySupport = source.accessibilitySupport; this.multiCursorModifier = source.multiCursorModifier; + this.multiCursorCollapsible = source.multiCursorCollapsible; this.wordSeparators = source.wordSeparators; this.autoClosingBrackets = source.autoClosingBrackets; this.autoIndent = source.autoIndent; @@ -936,6 +945,7 @@ export class InternalEditorOptions { && this.readOnly === other.readOnly && this.accessibilitySupport === other.accessibilitySupport && this.multiCursorModifier === other.multiCursorModifier + && this.multiCursorCollapsible === other.multiCursorCollapsible && this.wordSeparators === other.wordSeparators && this.autoClosingBrackets === other.autoClosingBrackets && this.autoIndent === other.autoIndent @@ -963,6 +973,7 @@ export class InternalEditorOptions { readOnly: (this.readOnly !== newOpts.readOnly), accessibilitySupport: (this.accessibilitySupport !== newOpts.accessibilitySupport), multiCursorModifier: (this.multiCursorModifier !== newOpts.multiCursorModifier), + multiCursorCollapsible: (this.multiCursorCollapsible !== newOpts.multiCursorCollapsible), wordSeparators: (this.wordSeparators !== newOpts.wordSeparators), autoClosingBrackets: (this.autoClosingBrackets !== newOpts.autoClosingBrackets), autoIndent: (this.autoIndent !== newOpts.autoIndent), @@ -1307,6 +1318,7 @@ export interface IConfigurationChangedEvent { readonly readOnly: boolean; readonly accessibilitySupport: boolean; readonly multiCursorModifier: boolean; + readonly multiCursorCollapsible: boolean; readonly wordSeparators: boolean; readonly autoClosingBrackets: boolean; readonly autoIndent: boolean; @@ -1492,6 +1504,7 @@ export class EditorOptionsValidator { emptySelectionClipboard: _boolean(opts.emptySelectionClipboard, defaults.emptySelectionClipboard), useTabStops: _boolean(opts.useTabStops, defaults.useTabStops), multiCursorModifier: multiCursorModifier, + multiCursorCollapsible: _boolean(opts.multiCursorCollapsible, defaults.multiCursorCollapsible), accessibilitySupport: _stringSet<'auto' | 'on' | 'off'>(opts.accessibilitySupport, defaults.accessibilitySupport, ['auto', 'on', 'off']), viewInfo: viewInfo, contribInfo: contribInfo, @@ -1721,6 +1734,7 @@ export class InternalEditorOptionsFactory { emptySelectionClipboard: opts.emptySelectionClipboard, useTabStops: opts.useTabStops, multiCursorModifier: opts.multiCursorModifier, + multiCursorCollapsible: opts.multiCursorCollapsible, accessibilitySupport: opts.accessibilitySupport, viewInfo: { @@ -1924,6 +1938,7 @@ export class InternalEditorOptionsFactory { readOnly: opts.readOnly, accessibilitySupport: accessibilitySupport, multiCursorModifier: opts.multiCursorModifier, + multiCursorCollapsible: opts.multiCursorCollapsible, wordSeparators: opts.wordSeparators, autoClosingBrackets: opts.autoClosingBrackets, autoIndent: opts.autoIndent, @@ -2145,6 +2160,7 @@ export const EDITOR_DEFAULTS: IValidatedEditorOptions = { emptySelectionClipboard: true, useTabStops: true, multiCursorModifier: 'altKey', + multiCursorCollapsible: true, accessibilitySupport: 'auto', viewInfo: { diff --git a/src/vs/editor/common/controller/cursorCollection.ts b/src/vs/editor/common/controller/cursorCollection.ts index 9fcae512f2f..296084099b0 100644 --- a/src/vs/editor/common/controller/cursorCollection.ts +++ b/src/vs/editor/common/controller/cursorCollection.ts @@ -193,6 +193,10 @@ export class CursorCollection { const currentViewSelection = current.viewSelection; const nextViewSelection = next.viewSelection; + if (!this.context.config.multiCursorCollapsible) { + continue; + } + let shouldMergeCursors: boolean; if (nextViewSelection.isEmpty() || currentViewSelection.isEmpty()) { // Merge touching cursors if one of them is collapsed diff --git a/src/vs/editor/common/controller/cursorCommon.ts b/src/vs/editor/common/controller/cursorCommon.ts index b3b40cca6b3..160bb58a3c6 100644 --- a/src/vs/editor/common/controller/cursorCommon.ts +++ b/src/vs/editor/common/controller/cursorCommon.ts @@ -77,6 +77,7 @@ export class CursorConfiguration { public readonly useTabStops: boolean; public readonly wordSeparators: string; public readonly emptySelectionClipboard: boolean; + public readonly multiCursorCollapsible: boolean; public readonly autoClosingBrackets: boolean; public readonly autoIndent: boolean; public readonly autoClosingPairsOpen: CharacterMap; @@ -113,6 +114,7 @@ export class CursorConfiguration { this.useTabStops = c.useTabStops; this.wordSeparators = c.wordSeparators; this.emptySelectionClipboard = c.emptySelectionClipboard; + this.multiCursorCollapsible = c.multiCursorCollapsible; this.autoClosingBrackets = c.autoClosingBrackets; this.autoIndent = c.autoIndent; diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 483ffdfa1de..d388f99157f 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -2698,6 +2698,11 @@ declare module monaco.editor { * Defaults to 'alt' */ multiCursorModifier?: 'ctrlCmd' | 'alt'; + /** + * Enable cursors to collapse when overlapping. + * Defaults to true + */ + multiCursorCollapsible?: boolean; /** * Configure the editor's accessibility support. * Defaults to 'auto'. It is best to leave this to 'auto'. @@ -3099,6 +3104,7 @@ declare module monaco.editor { readonly lineHeight: number; readonly readOnly: boolean; readonly multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'; + readonly multiCursorCollapsible: boolean; readonly wordSeparators: string; readonly autoClosingBrackets: boolean; readonly autoIndent: boolean; @@ -3232,6 +3238,7 @@ declare module monaco.editor { readonly readOnly: boolean; readonly accessibilitySupport: boolean; readonly multiCursorModifier: boolean; + readonly multiCursorCollapsible: boolean; readonly wordSeparators: boolean; readonly autoClosingBrackets: boolean; readonly autoIndent: boolean; From 8fea388c71d9698774552fb5eb7b9aee18a15e70 Mon Sep 17 00:00:00 2001 From: Farid DJERMOUN Date: Thu, 11 Jan 2018 14:26:07 +0100 Subject: [PATCH 0004/1070] fix: change default keybinding of cursorColumnSelectUp to ctrl+shift+up on Windows --- src/vs/editor/browser/controller/coreCommands.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index be5019013e0..a8a111bb7d1 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -377,7 +377,7 @@ export namespace CoreNavigationCommands { kbOpts: { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textFocus, - primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow, + primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow, linux: { primary: 0 } } })); @@ -415,7 +415,7 @@ export namespace CoreNavigationCommands { kbOpts: { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textFocus, - primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow, + primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow, linux: { primary: 0 } } })); @@ -587,7 +587,6 @@ export namespace CoreNavigationCommands { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textFocus, primary: KeyMod.Shift | KeyCode.UpArrow, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow], mac: { primary: KeyMod.Shift | KeyCode.UpArrow }, linux: { primary: KeyMod.Shift | KeyCode.UpArrow } } @@ -655,7 +654,6 @@ export namespace CoreNavigationCommands { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textFocus, primary: KeyMod.Shift | KeyCode.DownArrow, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow], mac: { primary: KeyMod.Shift | KeyCode.DownArrow }, linux: { primary: KeyMod.Shift | KeyCode.DownArrow } } From 1aa56272a37d4e1fbb2dc55fe2ee87fb878ff7ec Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Fri, 2 Feb 2018 14:13:27 +0900 Subject: [PATCH 0005/1070] Fix typo * ture -> true --- .../parts/emmet/electron-browser/emmet.contribution.i18n.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/cht/src/vs/workbench/parts/emmet/electron-browser/emmet.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/emmet/electron-browser/emmet.contribution.i18n.json index d368fda6a7e..af127333714 100644 --- a/i18n/cht/src/vs/workbench/parts/emmet/electron-browser/emmet.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/emmet/electron-browser/emmet.contribution.i18n.json @@ -6,9 +6,9 @@ { "emmetConfigurationTitle": "Emmet", "triggerExpansionOnTab": "啟用時,按下 TAB 即可展開 Emmet 縮寫。當 emmet.useNewemmet 設定為 true 時不適用。", - "emmetPreferences": "用以修改部分 Emmet 動作及解析程式之行為的喜好設定。emmet.useNewemmet 設定為 ture 時不適用。", + "emmetPreferences": "用以修改部分 Emmet 動作及解析程式之行為的喜好設定。emmet.useNewemmet 設定為 true 時不適用。", "emmetSyntaxProfiles": "為指定的語法定義設定檔,或透過特定規則使用自己的設定檔。", "emmetExclude": "不應展開 Emmet 縮寫的語言陣列。", "emmetExtensionsPath": "包含 Emmet 設定檔、片段及喜好設定的資料夾路徑。emmet.useNewEmmet 設定為 true 時僅會從延伸模組路徑接受設定檔。", "useNewEmmet": "試試所有 Emmet 功能的新 Emmet 模組 (最終會取代舊的單一 Emmet 程式庫)。" -} \ No newline at end of file +} From efce0a9d5f37ff147e7c653941456ff6e9808bbb Mon Sep 17 00:00:00 2001 From: Mihail Bodrov Date: Sun, 4 Feb 2018 19:39:03 +0300 Subject: [PATCH 0006/1070] Simplify check lang.mimetypes --- src/vs/editor/common/services/languagesRegistry.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/vs/editor/common/services/languagesRegistry.ts b/src/vs/editor/common/services/languagesRegistry.ts index 546aa1bbc17..a99127c1536 100644 --- a/src/vs/editor/common/services/languagesRegistry.ts +++ b/src/vs/editor/common/services/languagesRegistry.ts @@ -111,13 +111,9 @@ export class LanguagesRegistry { let primaryMime: string = null; - if (typeof lang.mimetypes !== 'undefined' && Array.isArray(lang.mimetypes)) { - for (let i = 0; i < lang.mimetypes.length; i++) { - if (!primaryMime) { - primaryMime = lang.mimetypes[i]; - } - resolvedLanguage.mimetypes.push(lang.mimetypes[i]); - } + if (Array.isArray(lang.mimetypes) && lang.mimetypes.length) { + resolvedLanguage.mimetypes.push(...lang.mimetypes); + primaryMime = lang.mimetypes[0]; } if (!primaryMime) { From f198b6fdd015aa2e0e9e20428bcd96396816b162 Mon Sep 17 00:00:00 2001 From: Michael Klement Date: Thu, 22 Feb 2018 17:04:29 -0500 Subject: [PATCH 0007/1070] Update package.json PowerShell Core, whose executable filename is `pwsh`, supports shebang lines on Unix platforms. This change would make VSCode properly recognize extension-less PowerShell Core scripts that have a shebang line. --- extensions/powershell/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/powershell/package.json b/extensions/powershell/package.json index 82b93077a48..f26fc072676 100644 --- a/extensions/powershell/package.json +++ b/extensions/powershell/package.json @@ -10,6 +10,7 @@ "id": "powershell", "extensions": [ ".ps1", ".psm1", ".psd1", ".pssc", ".psrc" ], "aliases": [ "PowerShell", "powershell", "ps", "ps1" ], + "firstLine": "^#!/.*\\bpwsh\\b", "configuration": "./language-configuration.json" }], "grammars": [{ @@ -25,4 +26,4 @@ "scripts": { "update-grammar": "node ../../build/npm/update-grammar.js PowerShell/EditorSyntax PowerShellSyntax.tmLanguage ./syntaxes/powershell.tmLanguage.json" } -} \ No newline at end of file +} From 173d9a2dec16a038d9d21ce174a38f53e0d3c8a8 Mon Sep 17 00:00:00 2001 From: Greg Van Liew Date: Thu, 1 Mar 2018 14:23:32 -0800 Subject: [PATCH 0008/1070] Edit pass on built-in extension descriptions --- extensions/bat/package.nls.json | 2 +- extensions/clojure/package.nls.json | 2 +- extensions/coffeescript/package.nls.json | 2 +- extensions/configuration-editing/package.nls.json | 2 +- extensions/cpp/package.nls.json | 2 +- extensions/csharp/package.nls.json | 2 +- extensions/docker/package.nls.json | 2 +- extensions/extension-editing/package.nls.json | 2 +- extensions/fsharp/package.nls.json | 2 +- extensions/go/package.nls.json | 2 +- extensions/groovy/package.nls.json | 2 +- extensions/handlebars/package.nls.json | 2 +- extensions/hlsl/package.nls.json | 2 +- extensions/ini/package.nls.json | 2 +- extensions/java/package.nls.json | 2 +- extensions/javascript/package.nls.json | 2 +- extensions/less/package.nls.json | 2 +- extensions/log/package.nls.json | 2 +- extensions/lua/package.nls.json | 2 +- extensions/make/package.nls.json | 2 +- extensions/markdown-basics/package.nls.json | 2 +- extensions/merge-conflict/package.nls.json | 2 +- extensions/objective-c/package.nls.json | 2 +- extensions/perl/package.nls.json | 2 +- extensions/php/package.nls.json | 2 +- extensions/powershell/package.nls.json | 2 +- extensions/pug/package.nls.json | 2 +- extensions/python/package.nls.json | 2 +- extensions/r/package.nls.json | 2 +- extensions/razor/package.nls.json | 2 +- extensions/ruby/package.nls.json | 2 +- extensions/rust/package.nls.json | 2 +- extensions/scss/package.nls.json | 2 +- extensions/shaderlab/package.nls.json | 2 +- extensions/shellscript/package.nls.json | 2 +- extensions/sql/package.nls.json | 2 +- extensions/swift/package.nls.json | 2 +- extensions/typescript-basics/package.nls.json | 2 +- extensions/vb/package.nls.json | 2 +- extensions/xml/package.nls.json | 2 +- extensions/yaml/package.nls.json | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/extensions/bat/package.nls.json b/extensions/bat/package.nls.json index d03ce9092a3..c5052ca0214 100644 --- a/extensions/bat/package.nls.json +++ b/extensions/bat/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Windows Bat Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in Windows batch files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in Windows batch files." } \ No newline at end of file diff --git a/extensions/clojure/package.nls.json b/extensions/clojure/package.nls.json index b104a0b455f..30bff28016a 100644 --- a/extensions/clojure/package.nls.json +++ b/extensions/clojure/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Clojure Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Clojure files" + "description": "Provides syntax highlighting and bracket matching in Clojure files." } \ No newline at end of file diff --git a/extensions/coffeescript/package.nls.json b/extensions/coffeescript/package.nls.json index 97a46719ce4..6cc7751873b 100644 --- a/extensions/coffeescript/package.nls.json +++ b/extensions/coffeescript/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "CoffeeScript Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in CoffeeScript files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in CoffeeScript files." } diff --git a/extensions/configuration-editing/package.nls.json b/extensions/configuration-editing/package.nls.json index 7e75dbe9053..b8c247a9de3 100644 --- a/extensions/configuration-editing/package.nls.json +++ b/extensions/configuration-editing/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Configuration Editing", - "description": "Provides capabilities (advanced intelli-sense, auto-fixing) in configuration files like settings, launch and extension recommendation files" + "description": "Provides capabilities (advanced IntelliSense, auto-fixing) in configuration files like settings, launch and extension recommendation files." } \ No newline at end of file diff --git a/extensions/cpp/package.nls.json b/extensions/cpp/package.nls.json index 10d615e7215..558bf45298a 100644 --- a/extensions/cpp/package.nls.json +++ b/extensions/cpp/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "C/C++ Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in C/C++ files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in C/C++ files." } \ No newline at end of file diff --git a/extensions/csharp/package.nls.json b/extensions/csharp/package.nls.json index a488acb7de2..bdc206114dd 100644 --- a/extensions/csharp/package.nls.json +++ b/extensions/csharp/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "C# Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in C# files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in C# files." } \ No newline at end of file diff --git a/extensions/docker/package.nls.json b/extensions/docker/package.nls.json index 89e45d3ad8f..2a38ca3da6b 100644 --- a/extensions/docker/package.nls.json +++ b/extensions/docker/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Docker Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Docker files" + "description": "Provides syntax highlighting and bracket matching in Docker files." } \ No newline at end of file diff --git a/extensions/extension-editing/package.nls.json b/extensions/extension-editing/package.nls.json index 89325ce28d9..9265e6a3c9d 100644 --- a/extensions/extension-editing/package.nls.json +++ b/extensions/extension-editing/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Package File Editing", - "description": "Provides intelli-sense for VS Code extension points and linting capabilities in Package json files" + "description": "Provides IntelliSense for VS Code extension points and linting capabilities in package.json files." } \ No newline at end of file diff --git a/extensions/fsharp/package.nls.json b/extensions/fsharp/package.nls.json index 914b614cb4b..42733fffaf8 100644 --- a/extensions/fsharp/package.nls.json +++ b/extensions/fsharp/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "F# Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in F# files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in F# files." } \ No newline at end of file diff --git a/extensions/go/package.nls.json b/extensions/go/package.nls.json index d781cc6f3c6..dfd2ae9f474 100644 --- a/extensions/go/package.nls.json +++ b/extensions/go/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Go Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Go files" + "description": "Provides syntax highlighting and bracket matching in Go files." } \ No newline at end of file diff --git a/extensions/groovy/package.nls.json b/extensions/groovy/package.nls.json index 82c811d8c43..9e08b0bf49b 100644 --- a/extensions/groovy/package.nls.json +++ b/extensions/groovy/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Groovy Language Basics", - "description": "Provides Syntax highlighting, Bracket matching and Snippets in Groovy files" + "description": "Provides snippets, syntax highlighting and bracket matching in Groovy files." } \ No newline at end of file diff --git a/extensions/handlebars/package.nls.json b/extensions/handlebars/package.nls.json index 8646e325426..1c2e3910e43 100644 --- a/extensions/handlebars/package.nls.json +++ b/extensions/handlebars/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Handlebars Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Handlebars files" + "description": "Provides syntax highlighting and bracket matching in Handlebars files." } \ No newline at end of file diff --git a/extensions/hlsl/package.nls.json b/extensions/hlsl/package.nls.json index 8f390728c6a..e9eefbab28a 100644 --- a/extensions/hlsl/package.nls.json +++ b/extensions/hlsl/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "HLSL Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in HLSL files" + "description": "Provides syntax highlighting and bracket matching in HLSL files." } \ No newline at end of file diff --git a/extensions/ini/package.nls.json b/extensions/ini/package.nls.json index edb501adcbc..9696de83059 100644 --- a/extensions/ini/package.nls.json +++ b/extensions/ini/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Ini Language Basics", - "description": "Provides Syntax highlightin and Bracket matching in Ini files" + "description": "Provides syntax highlighting and bracket matching in Ini files." } \ No newline at end of file diff --git a/extensions/java/package.nls.json b/extensions/java/package.nls.json index 0e29ab615b3..72c9857c303 100644 --- a/extensions/java/package.nls.json +++ b/extensions/java/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Java Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in Java files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in Java files." } \ No newline at end of file diff --git a/extensions/javascript/package.nls.json b/extensions/javascript/package.nls.json index af3370cda54..bb1285e1ad5 100644 --- a/extensions/javascript/package.nls.json +++ b/extensions/javascript/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "JavaScript Language Basics", - "description": "Provides syntax highlighting, Bracket matching, Folding and Snippets in JavaScript files." + "description": "Provides snippets, syntax highlighting, bracket matching and folding in JavaScript files." } \ No newline at end of file diff --git a/extensions/less/package.nls.json b/extensions/less/package.nls.json index 969637051dc..7010e123b8e 100644 --- a/extensions/less/package.nls.json +++ b/extensions/less/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Less Language Basics", - "description": "Provides Syntax highlighting, Folding and Bracket matching Less files." + "description": "Provides syntax highlighting, bracket matching and folding Less files." } \ No newline at end of file diff --git a/extensions/log/package.nls.json b/extensions/log/package.nls.json index a5d3018fbc6..91c5e93ad3a 100644 --- a/extensions/log/package.nls.json +++ b/extensions/log/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Log", - "description": "Provides Syntax highlighting for files with .log extension" + "description": "Provides syntax highlighting for files with .log extension." } \ No newline at end of file diff --git a/extensions/lua/package.nls.json b/extensions/lua/package.nls.json index 1a3f5dfe377..9a0e601f559 100644 --- a/extensions/lua/package.nls.json +++ b/extensions/lua/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Lua Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Lua files" + "description": "Provides syntax highlighting and bracket matching in Lua files." } \ No newline at end of file diff --git a/extensions/make/package.nls.json b/extensions/make/package.nls.json index e5171e92d28..5aeb89f25af 100644 --- a/extensions/make/package.nls.json +++ b/extensions/make/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Make Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Make files" + "description": "Provides syntax highlighting and bracket matching in Make files." } \ No newline at end of file diff --git a/extensions/markdown-basics/package.nls.json b/extensions/markdown-basics/package.nls.json index f06d85aeb9f..5911d3fdc59 100644 --- a/extensions/markdown-basics/package.nls.json +++ b/extensions/markdown-basics/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Markdown Language Basics", - "description": "Provides syntax and snippets for Markdown." + "description": "Provides snippets and syntax highlighting for Markdown." } diff --git a/extensions/merge-conflict/package.nls.json b/extensions/merge-conflict/package.nls.json index e9510e46810..66076bd7a87 100644 --- a/extensions/merge-conflict/package.nls.json +++ b/extensions/merge-conflict/package.nls.json @@ -1,6 +1,6 @@ { "displayName": "Merge Conflict", - "description": "Coloring and commands for inline merge conflicts.", + "description": "Highlighting and commands for inline merge conflicts.", "command.category": "Merge Conflict", "command.accept.all-current": "Accept All Current", "command.accept.all-incoming": "Accept All Incoming", diff --git a/extensions/objective-c/package.nls.json b/extensions/objective-c/package.nls.json index 90f5821427f..5bc51c5d049 100644 --- a/extensions/objective-c/package.nls.json +++ b/extensions/objective-c/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Objective-C Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Objective-C files" + "description": "Provides syntax highlighting and bracket matching in Objective-C files." } \ No newline at end of file diff --git a/extensions/perl/package.nls.json b/extensions/perl/package.nls.json index b06f9a96e1f..a26752a1e1a 100644 --- a/extensions/perl/package.nls.json +++ b/extensions/perl/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Perl Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Perl files" + "description": "Provides syntax highlighting and bracket matching in Perl files." } \ No newline at end of file diff --git a/extensions/php/package.nls.json b/extensions/php/package.nls.json index f6e3473c824..89a9cfedd29 100644 --- a/extensions/php/package.nls.json +++ b/extensions/php/package.nls.json @@ -7,5 +7,5 @@ "commands.categroy.php": "PHP", "command.untrustValidationExecutable": "Disallow PHP validation executable (defined as workspace setting)", "displayName": "PHP Language Features", - "description": "Provides intelli-sense, linting, and language basics for PHP files." + "description": "Provides IntelliSense, linting, and language basics for PHP files." } \ No newline at end of file diff --git a/extensions/powershell/package.nls.json b/extensions/powershell/package.nls.json index b59de8f4f1e..b54b734e599 100644 --- a/extensions/powershell/package.nls.json +++ b/extensions/powershell/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Powershell Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in Powershell files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in Powershell files." } \ No newline at end of file diff --git a/extensions/pug/package.nls.json b/extensions/pug/package.nls.json index 3469faae36e..2c7f5324dfe 100644 --- a/extensions/pug/package.nls.json +++ b/extensions/pug/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Pug Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Pug files" + "description": "Provides syntax highlighting and bracket matching in Pug files." } \ No newline at end of file diff --git a/extensions/python/package.nls.json b/extensions/python/package.nls.json index ee59c605818..9bdaf5a3d67 100644 --- a/extensions/python/package.nls.json +++ b/extensions/python/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Python Language Basics", - "description": "Provides Syntax highlighting, Folding and Bracket matching in Python files" + "description": "Provides syntax highlighting, bracket matching and folding in Python files." } \ No newline at end of file diff --git a/extensions/r/package.nls.json b/extensions/r/package.nls.json index b383264f198..e55a5012fdd 100644 --- a/extensions/r/package.nls.json +++ b/extensions/r/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "R Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in R files" + "description": "Provides syntax highlighting and bracket matching in R files." } \ No newline at end of file diff --git a/extensions/razor/package.nls.json b/extensions/razor/package.nls.json index c409d4312ac..b4f470556fd 100644 --- a/extensions/razor/package.nls.json +++ b/extensions/razor/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Razor Language Basics", - "description": "Provides Syntax highlighting, Folding and Bracket matching in Razor files" + "description": "Provides syntax highlighting, bracket matching and folding in Razor files." } \ No newline at end of file diff --git a/extensions/ruby/package.nls.json b/extensions/ruby/package.nls.json index 1b134871413..272eb46fbad 100644 --- a/extensions/ruby/package.nls.json +++ b/extensions/ruby/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Ruby Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Ruby files" + "description": "Provides syntax highlighting and bracket matching in Ruby files." } \ No newline at end of file diff --git a/extensions/rust/package.nls.json b/extensions/rust/package.nls.json index bf7a9840462..432a2206737 100644 --- a/extensions/rust/package.nls.json +++ b/extensions/rust/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Rust Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Rust files" + "description": "Provides syntax highlighting and bracket matching in Rust files." } \ No newline at end of file diff --git a/extensions/scss/package.nls.json b/extensions/scss/package.nls.json index 9660808805d..f328492b249 100644 --- a/extensions/scss/package.nls.json +++ b/extensions/scss/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "SCSS Language Basics", - "description": "Provides Syntax highlighting, Folding and Bracket matching SCSS files." + "description": "Provides syntax highlighting, bracket matching and folding in SCSS files." } \ No newline at end of file diff --git a/extensions/shaderlab/package.nls.json b/extensions/shaderlab/package.nls.json index db100b851ef..1ea4ae8174e 100644 --- a/extensions/shaderlab/package.nls.json +++ b/extensions/shaderlab/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Shaderlab Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Shaderlab files" + "description": "Provides syntax highlighting and bracket matching in Shaderlab files." } \ No newline at end of file diff --git a/extensions/shellscript/package.nls.json b/extensions/shellscript/package.nls.json index ff0c82f49d5..9360510f798 100644 --- a/extensions/shellscript/package.nls.json +++ b/extensions/shellscript/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Shell Script Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in Shell Script files" + "description": "Provides syntax highlighting and bracket matching in Shell Script files." } \ No newline at end of file diff --git a/extensions/sql/package.nls.json b/extensions/sql/package.nls.json index 5177a791d97..328fcb3e153 100644 --- a/extensions/sql/package.nls.json +++ b/extensions/sql/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "SQL Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in SQL files" + "description": "Provides syntax highlighting and bracket matching in SQL files." } \ No newline at end of file diff --git a/extensions/swift/package.nls.json b/extensions/swift/package.nls.json index 4eb3fe90f47..6a7ea4be353 100644 --- a/extensions/swift/package.nls.json +++ b/extensions/swift/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Swift Language Basics", - "description": "Provides Syntax highlighting, Bracket matching and Snippets in Swift files" + "description": "Provides snippets, syntax highlighting and bracket matching in Swift files." } \ No newline at end of file diff --git a/extensions/typescript-basics/package.nls.json b/extensions/typescript-basics/package.nls.json index 3e66d8b560d..744f91f8a47 100644 --- a/extensions/typescript-basics/package.nls.json +++ b/extensions/typescript-basics/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "TypeScript Language Basics", - "description": "Provides Syntax highlighting, Bracket matching, Folding and Snippets in TypeScript files." + "description": "Provides snippets, syntax highlighting, bracket matching and folding in TypeScript files." } \ No newline at end of file diff --git a/extensions/vb/package.nls.json b/extensions/vb/package.nls.json index e7e3008a753..45bed3ab41f 100644 --- a/extensions/vb/package.nls.json +++ b/extensions/vb/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "Visual Basic Language Basics", - "description": "Provides Syntax highlighting, Folding, Bracket matching and Snippets in Visual Basic files" + "description": "Provides snippets, syntax highlighting, bracket matching and folding in Visual Basic files." } \ No newline at end of file diff --git a/extensions/xml/package.nls.json b/extensions/xml/package.nls.json index c8e40d0c315..110b511768d 100644 --- a/extensions/xml/package.nls.json +++ b/extensions/xml/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "XML Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in XML files" + "description": "Provides syntax highlighting and bracket matching in XML files." } \ No newline at end of file diff --git a/extensions/yaml/package.nls.json b/extensions/yaml/package.nls.json index b7637e2430f..b8f93d03998 100644 --- a/extensions/yaml/package.nls.json +++ b/extensions/yaml/package.nls.json @@ -1,4 +1,4 @@ { "displayName": "YAML Language Basics", - "description": "Provides Syntax highlighting and Bracket matching in YAML files" + "description": "Provides syntax highlighting and bracket matching in YAML files." } \ No newline at end of file From 1b8f96f383ef9c9b4c652b5d25b16860d25bc5bf Mon Sep 17 00:00:00 2001 From: amalik12 Date: Thu, 1 Mar 2018 22:37:17 -0500 Subject: [PATCH 0009/1070] Added Mac specific text for link follow tooltip --- src/vs/editor/contrib/links/links.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/links/links.ts b/src/vs/editor/contrib/links/links.ts index 61e679cb177..d62f77d70a4 100644 --- a/src/vs/editor/contrib/links/links.ts +++ b/src/vs/editor/contrib/links/links.ts @@ -38,8 +38,17 @@ const HOVER_MESSAGE_COMMAND_META = new MarkdownString().appendText( : nls.localize('links.command', "Ctrl + click to execute command") ); -const HOVER_MESSAGE_GENERAL_ALT = new MarkdownString().appendText(nls.localize('links.navigate.al', "Alt + click to follow link")); -const HOVER_MESSAGE_COMMAND_ALT = new MarkdownString().appendText(nls.localize('links.command.al', "Alt + click to execute command")); +const HOVER_MESSAGE_GENERAL_ALT = new MarkdownString().appendText( + platform.isMacintosh + ? nls.localize('links.navigate.al.mac', "Option + click to follow link") + : nls.localize('links.navigate.al', "Alt + click to follow link") +); + +const HOVER_MESSAGE_COMMAND_ALT = new MarkdownString().appendText( + platform.isMacintosh + ? nls.localize('links.command.al.mac', "Option + click to execute command") + : nls.localize('links.command.al', "Alt + click to execute command") +); const decoration = { meta: ModelDecorationOptions.register({ From 39313c13571417fec88b5c325aa14667da2b9af9 Mon Sep 17 00:00:00 2001 From: mechatroner Date: Sat, 3 Mar 2018 16:16:56 -0500 Subject: [PATCH 0010/1070] move huge file params to user config for Microsoft/vscode#44986 --- .../common/config/commonEditorConfig.ts | 10 + src/vs/editor/common/config/editorOptions.ts | 4 +- src/vs/editor/common/model.ts | 2 + src/vs/editor/common/model/textModel.ts | 10 +- .../common/services/modelServiceImpl.ts | 22 ++- .../test/linesOperations.test.ts | 5 +- .../test/browser/controller/cursor.test.ts | 180 ++++++++++++------ .../test/common/model/textModel.test.ts | 13 +- 8 files changed, 175 insertions(+), 71 deletions(-) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 73339f9d245..2f7729f226f 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -653,6 +653,16 @@ const editorConfiguration: IConfigurationNode = { 'default': true, 'description': nls.localize('ignoreTrimWhitespace', "Controls if the diff editor shows changes in leading or trailing whitespace as diffs") }, + 'editor.hugeFileSize': { + 'type': 'number', + 'default': EDITOR_MODEL_DEFAULTS.hugeFileSize, + 'description': nls.localize('hugeFileSize', "Controls file size threshold in bytes beyond which special optimization rules are applied") + }, + 'editor.hugeFileNumLines': { + 'type': 'number', + 'default': EDITOR_MODEL_DEFAULTS.hugeFileNumLines, + 'description': nls.localize('hugeFileNumLines', "Controls file size threshold in terms of line count beyond which special optimization rules are applied") + }, 'diffEditor.renderIndicators': { 'type': 'boolean', 'default': true, diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index 921165fc844..1743f790159 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -2172,7 +2172,9 @@ export const EDITOR_MODEL_DEFAULTS = { tabSize: 4, insertSpaces: true, detectIndentation: true, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: 20 * 1024 * 1024, // 20 MB + hugeFileNumLines: 300 * 1000 // 300K lines }; /** diff --git a/src/vs/editor/common/model.ts b/src/vs/editor/common/model.ts index bf6ecbbee7c..4e870a213be 100644 --- a/src/vs/editor/common/model.ts +++ b/src/vs/editor/common/model.ts @@ -389,6 +389,8 @@ export interface ITextModelCreationOptions { detectIndentation: boolean; trimAutoWhitespace: boolean; defaultEOL: DefaultEndOfLine; + hugeFileSize: number; + hugeFileNumLines: number; } export interface ITextModelUpdateOptions { diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index 982916e15f8..86be54f8fe7 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -173,8 +173,8 @@ class TextModelSnapshot implements ITextSnapshot { export class TextModel extends Disposable implements model.ITextModel { private static readonly MODEL_SYNC_LIMIT = 50 * 1024 * 1024; // 50 MB - private static readonly MODEL_TOKENIZATION_LIMIT = 20 * 1024 * 1024; // 20 MB - private static readonly MANY_MANY_LINES = 300 * 1000; // 300K lines + //private static readonly MODEL_TOKENIZATION_LIMIT = 20 * 1024 * 1024; // 20 MB + //private static readonly MANY_MANY_LINES = 300 * 1000; // 300K lines public static DEFAULT_CREATION_OPTIONS: model.ITextModelCreationOptions = { tabSize: EDITOR_MODEL_DEFAULTS.tabSize, @@ -182,6 +182,8 @@ export class TextModel extends Disposable implements model.ITextModel { detectIndentation: false, defaultEOL: model.DefaultEndOfLine.LF, trimAutoWhitespace: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines, }; public static createFromString(text: string, options: model.ITextModelCreationOptions = TextModel.DEFAULT_CREATION_OPTIONS, languageIdentifier: LanguageIdentifier = null, uri: URI = null): TextModel { @@ -301,8 +303,8 @@ export class TextModel extends Disposable implements model.ITextModel { // If a model is too large at construction time, it will never get tokenized, // under no circumstances. this._isTooLargeForTokenization = ( - (bufferTextLength > TextModel.MODEL_TOKENIZATION_LIMIT) - || (bufferLineCount > TextModel.MANY_MANY_LINES) + (bufferTextLength > creationOptions.hugeFileSize) + || (bufferLineCount > creationOptions.hugeFileNumLines) ); this._shouldSimplifyMode = ( diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index 82a54629774..ff5c1e3fb3b 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -181,6 +181,8 @@ interface IRawConfig { insertSpaces?: any; detectIndentation?: any; trimAutoWhitespace?: any; + hugeFileSize?: any; + hugeFileNumLines?: any; }; } @@ -259,12 +261,30 @@ export class ModelServiceImpl implements IModelService { detectIndentation = (config.editor.detectIndentation === 'false' ? false : Boolean(config.editor.detectIndentation)); } + let hugeFileSize = EDITOR_MODEL_DEFAULTS.hugeFileSize; + if (config.editor && typeof config.editor.hugeFileSize !== 'undefined') { + let parsedHugeFileSize = parseInt(config.editor.hugeFileSize, 10); + if (!isNaN(parsedHugeFileSize)) { + hugeFileSize = parsedHugeFileSize; + } + } + + let hugeFileNumLines = EDITOR_MODEL_DEFAULTS.hugeFileNumLines; + if (config.editor && typeof config.editor.hugeFileNumLines !== 'undefined') { + let parsedHugeFileNumLines = parseInt(config.editor.hugeFileNumLines, 10); + if (!isNaN(parsedHugeFileNumLines)) { + hugeFileNumLines = parsedHugeFileNumLines; + } + } + return { tabSize: tabSize, insertSpaces: insertSpaces, detectIndentation: detectIndentation, defaultEOL: newDefaultEOL, - trimAutoWhitespace: trimAutoWhitespace + trimAutoWhitespace: trimAutoWhitespace, + hugeFileSize: hugeFileSize, + hugeFileNumLines: hugeFileNumLines }; } diff --git a/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts b/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts index b867a47ed61..190ff557445 100644 --- a/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts +++ b/src/vs/editor/contrib/linesOperations/test/linesOperations.test.ts @@ -9,6 +9,7 @@ import { Selection } from 'vs/editor/common/core/selection'; import { Position } from 'vs/editor/common/core/position'; import { Handler } from 'vs/editor/common/editorCommon'; import { ITextModel, DefaultEndOfLine } from 'vs/editor/common/model'; +import { EDITOR_MODEL_DEFAULTS } from 'vs/editor/common/config/editorOptions'; import { withTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor'; import { DeleteAllLeftAction, JoinLinesAction, TransposeAction, UpperCaseAction, LowerCaseAction, DeleteAllRightAction, InsertLineBeforeAction, InsertLineAfterAction, IndentLinesAction, SortLinesAscendingAction, SortLinesDescendingAction } from 'vs/editor/contrib/linesOperations/linesOperations'; import { Cursor } from 'vs/editor/common/controller/cursor'; @@ -755,7 +756,9 @@ suite('Editor Contrib - Line Operations', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index 4f688aa088c..c62f2d4a199 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -18,7 +18,7 @@ import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageCo import { TestConfiguration } from 'vs/editor/test/common/mocks/testConfiguration'; import { MockMode } from 'vs/editor/test/common/mocks/mockMode'; import { LanguageIdentifier } from 'vs/editor/common/modes'; -import { IEditorOptions } from 'vs/editor/common/config/editorOptions'; +import { IEditorOptions, EDITOR_MODEL_DEFAULTS } from 'vs/editor/common/config/editorOptions'; import { CoreNavigationCommands, CoreEditingCommands } from 'vs/editor/browser/controller/coreCommands'; import { withTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor'; import { ViewModel } from 'vs/editor/common/viewModel/viewModelImpl'; @@ -1138,7 +1138,9 @@ suite('Editor Controller - Regression tests', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: false + trimAutoWhitespace: false, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, ); @@ -1163,7 +1165,9 @@ suite('Editor Controller - Regression tests', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: false + trimAutoWhitespace: false, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, ); @@ -1228,7 +1232,9 @@ suite('Editor Controller - Regression tests', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -1256,7 +1262,9 @@ suite('Editor Controller - Regression tests', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -1288,7 +1296,9 @@ suite('Editor Controller - Regression tests', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, ); @@ -1349,7 +1359,7 @@ suite('Editor Controller - Regression tests', () => { 'hello' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { tabSize: 4, insertSpaces: true, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { tabSize: 4, insertSpaces: true, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 3, false); moveTo(cursor, 1, 5, true); @@ -1377,7 +1387,9 @@ suite('Editor Controller - Regression tests', () => { insertSpaces: true, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, ); @@ -1498,7 +1510,9 @@ suite('Editor Controller - Regression tests', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -1552,7 +1566,7 @@ suite('Editor Controller - Regression tests', () => { 'just some text', ], languageIdentifier: null, - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 1, false); @@ -1580,7 +1594,9 @@ suite('Editor Controller - Regression tests', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -1604,7 +1620,9 @@ suite('Editor Controller - Regression tests', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -1917,7 +1935,9 @@ suite('Editor Controller - Regression tests', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -1947,7 +1967,7 @@ suite('Editor Controller - Cursor Configuration', () => { '', '1' ], - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { CoreNavigationCommands.MoveTo.runCoreEditorCommand(cursor, { position: new Position(1, 21), source: 'keyboard' }); cursorCommand(cursor, H.Type, { text: '\n' }, 'keyboard'); @@ -1970,7 +1990,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 13, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2040,7 +2062,7 @@ suite('Editor Controller - Cursor Configuration', () => { '\thello' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 7, false); assertCursor(cursor, new Selection(1, 7, 1, 7)); @@ -2058,7 +2080,7 @@ suite('Editor Controller - Cursor Configuration', () => { '\thello' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 7, false); assertCursor(cursor, new Selection(1, 7, 1, 7)); @@ -2076,7 +2098,7 @@ suite('Editor Controller - Cursor Configuration', () => { '\thell()' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 7, false); assertCursor(cursor, new Selection(1, 7, 1, 7)); @@ -2097,7 +2119,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: false + trimAutoWhitespace: false, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { @@ -2125,7 +2149,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, model.getLineContent(1).length + 1); @@ -2151,7 +2177,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, languageIdentifier: mode.getLanguageIdentifier(), }, (model, cursor) => { @@ -2199,7 +2227,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2243,7 +2273,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2309,7 +2341,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2335,7 +2369,9 @@ suite('Editor Controller - Cursor Configuration', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2406,7 +2442,9 @@ suite('Editor Controller - Cursor Configuration', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -2482,7 +2520,7 @@ suite('Editor Controller - Indentation Rules', () => { '\tif (true) {' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 1, 12, false); @@ -2506,7 +2544,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 2, 2, false); @@ -2525,7 +2563,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t\t\treturn true' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 2, 15, false); @@ -2545,7 +2583,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t\t\t\treturn true' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 2, 14, false); @@ -2573,7 +2611,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -2602,7 +2642,7 @@ suite('Editor Controller - Indentation Rules', () => { '}}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 3, 13, false); @@ -2623,7 +2663,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 4, 3, false); moveTo(cursor, 4, 4, true); @@ -2642,7 +2682,7 @@ suite('Editor Controller - Indentation Rules', () => { '\tif (true) {' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 2, 12, false); moveTo(cursor, 2, 13, true); @@ -2663,7 +2703,7 @@ suite('Editor Controller - Indentation Rules', () => { '\tif (true) {' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 12, false); assertCursor(cursor, new Selection(1, 12, 1, 12)); @@ -2688,7 +2728,7 @@ suite('Editor Controller - Indentation Rules', () => { ' if (true) {' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 12, false); assertCursor(cursor, new Selection(1, 12, 1, 12)); @@ -2712,7 +2752,7 @@ suite('Editor Controller - Indentation Rules', () => { ' if (true) {' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 1, 12, false); assertCursor(cursor, new Selection(1, 12, 1, 12)); @@ -2740,7 +2780,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 5, 4, false); @@ -2761,7 +2801,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 9, false); assertCursor(cursor, new Selection(3, 9, 3, 9)); @@ -2781,7 +2821,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 3, false); assertCursor(cursor, new Selection(3, 3, 3, 3)); @@ -2801,7 +2841,7 @@ suite('Editor Controller - Indentation Rules', () => { ' }a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 11, false); assertCursor(cursor, new Selection(3, 11, 3, 11)); @@ -2821,7 +2861,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 2, false); assertCursor(cursor, new Selection(3, 2, 3, 2)); @@ -2848,7 +2888,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t\t}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 4, false); assertCursor(cursor, new Selection(3, 4, 3, 4)); @@ -2875,7 +2915,7 @@ suite('Editor Controller - Indentation Rules', () => { '}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 2, false); assertCursor(cursor, new Selection(3, 2, 3, 2)); @@ -2905,7 +2945,7 @@ suite('Editor Controller - Indentation Rules', () => { '}a}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 3, false); assertCursor(cursor, new Selection(3, 3, 3, 3)); @@ -2931,7 +2971,7 @@ suite('Editor Controller - Indentation Rules', () => { '' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: true, tabSize: 2, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 5, false); moveTo(cursor, 4, 3, true); @@ -2956,7 +2996,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, languageIdentifier: mode.getLanguageIdentifier(), }, (model, cursor) => { @@ -2983,7 +3025,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, languageIdentifier: mode.getLanguageIdentifier(), }, (model, cursor) => { @@ -3007,7 +3051,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}', '?>' ], - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 5, 3, false); assertCursor(cursor, new Selection(5, 3, 5, 3)); @@ -3026,7 +3070,7 @@ suite('Editor Controller - Indentation Rules', () => { ' return 5;', ' ' ], - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 3, 2, false); assertCursor(cursor, new Selection(3, 2, 3, 2)); @@ -3052,7 +3096,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3084,7 +3130,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3116,7 +3164,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3147,7 +3197,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3178,7 +3230,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: false, tabSize: 4, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3209,7 +3263,9 @@ suite('Editor Controller - Indentation Rules', () => { tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); @@ -3245,7 +3301,9 @@ suite('Editor Controller - Indentation Rules', () => { detectIndentation: false, insertSpaces: true, tabSize: 2, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, rubyMode.getLanguageIdentifier() ); @@ -3272,7 +3330,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 5, 3, false); assertCursor(cursor, new Selection(5, 3, 5, 3)); @@ -3294,7 +3352,7 @@ suite('Editor Controller - Indentation Rules', () => { '}' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true } + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } }, (model, cursor) => { moveTo(cursor, 2, 3, false); assertCursor(cursor, new Selection(2, 3, 2, 3)); @@ -3313,7 +3371,7 @@ suite('Editor Controller - Indentation Rules', () => { '\t\t' ], languageIdentifier: mode.getLanguageIdentifier(), - modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true }, + modelOpts: { insertSpaces: false, tabSize: 4, detectIndentation: false, defaultEOL: DefaultEndOfLine.LF, trimAutoWhitespace: true, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, editorOpts: { autoIndent: true } }, (model, cursor) => { moveTo(cursor, 3, 3, false); @@ -3444,7 +3502,7 @@ suite('Editor Controller - Indentation Rules', () => { '', ')', ].join('\n'), - { insertSpaces: true, detectIndentation: false, tabSize: 2, trimAutoWhitespace: false, defaultEOL: DefaultEndOfLine.LF }, + { insertSpaces: true, detectIndentation: false, tabSize: 2, trimAutoWhitespace: false, defaultEOL: DefaultEndOfLine.LF, hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines }, mode.getLanguageIdentifier() ); diff --git a/src/vs/editor/test/common/model/textModel.test.ts b/src/vs/editor/test/common/model/textModel.test.ts index a99bde0f438..d1040c791cb 100644 --- a/src/vs/editor/test/common/model/textModel.test.ts +++ b/src/vs/editor/test/common/model/textModel.test.ts @@ -10,6 +10,7 @@ import { Range } from 'vs/editor/common/core/range'; import { TextModel, createTextBuffer } from 'vs/editor/common/model/textModel'; import { DefaultEndOfLine } from 'vs/editor/common/model'; import { UTF8_BOM_CHARACTER } from 'vs/base/common/strings'; +import { EDITOR_MODEL_DEFAULTS } from 'vs/editor/common/config/editorOptions'; function testGuessIndentation(defaultInsertSpaces: boolean, defaultTabSize: number, expectedInsertSpaces: boolean, expectedTabSize: number, text: string[], msg?: string): void { var m = TextModel.createFromString( @@ -19,7 +20,9 @@ function testGuessIndentation(defaultInsertSpaces: boolean, defaultTabSize: numb insertSpaces: defaultInsertSpaces, detectIndentation: true, defaultEOL: DefaultEndOfLine.LF, - trimAutoWhitespace: true + trimAutoWhitespace: true, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); var r = m.getOptions(); @@ -711,7 +714,9 @@ suite('Editor Model - TextModel', () => { tabSize: 4, insertSpaces: false, trimAutoWhitespace: true, - defaultEOL: DefaultEndOfLine.LF + defaultEOL: DefaultEndOfLine.LF, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); @@ -747,7 +752,9 @@ suite('Editor Model - TextModel', () => { tabSize: 4, insertSpaces: true, trimAutoWhitespace: true, - defaultEOL: DefaultEndOfLine.LF + defaultEOL: DefaultEndOfLine.LF, + hugeFileSize: EDITOR_MODEL_DEFAULTS.hugeFileSize, + hugeFileNumLines: EDITOR_MODEL_DEFAULTS.hugeFileNumLines } ); From 857d5457f77f43d824f60766a6654a904fe5aeea Mon Sep 17 00:00:00 2001 From: oriash93 Date: Sun, 4 Mar 2018 07:47:29 +0200 Subject: [PATCH 0011/1070] Case insensitive comment string matching resolves #35589 --- src/vs/editor/contrib/comment/blockCommentCommand.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/comment/blockCommentCommand.ts b/src/vs/editor/contrib/comment/blockCommentCommand.ts index 3c8caf720d5..d6ceea7e08d 100644 --- a/src/vs/editor/contrib/comment/blockCommentCommand.ts +++ b/src/vs/editor/contrib/comment/blockCommentCommand.ts @@ -32,8 +32,11 @@ export class BlockCommentCommand implements editorCommon.ICommand { if (offset + needleLength > haystackLength) { return false; } + + const haystackUpper = haystack.toUpperCase(); + const needleUpper = needle.toUpperCase(); for (let i = 0; i < needleLength; i++) { - if (haystack.charCodeAt(offset + i) !== needle.charCodeAt(i)) { + if (haystackUpper.charCodeAt(offset + i) !== needleUpper.charCodeAt(i)) { return false; } } From e71e3e5e34067c484a4132a9823482ed6e74686a Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Sun, 11 Mar 2018 00:30:17 -0500 Subject: [PATCH 0012/1070] Standardize transpose logic. Add basic support for transposing multi-byte characters. --- .../contrib/caretOperations/transpose.ts | 74 +++++++++++++++---- 1 file changed, 60 insertions(+), 14 deletions(-) diff --git a/src/vs/editor/contrib/caretOperations/transpose.ts b/src/vs/editor/contrib/caretOperations/transpose.ts index b0ac110f3f9..a73490e4127 100644 --- a/src/vs/editor/contrib/caretOperations/transpose.ts +++ b/src/vs/editor/contrib/caretOperations/transpose.ts @@ -6,15 +6,56 @@ import * as nls from 'vs/nls'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { isLowSurrogate, isHighSurrogate } from 'vs/base/common/strings'; import { Range } from 'vs/editor/common/core/range'; +import { Position, IPosition } from 'vs/editor/common/core/position'; import { ICommand } from 'vs/editor/common/editorCommon'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { registerEditorAction, EditorAction, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { ReplaceCommand } from 'vs/editor/common/commands/replaceCommand'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; +import { ITextModel } from 'vs/editor/common/model'; class TransposeLettersAction extends EditorAction { + private positionLeftOf(start: IPosition, model: ITextModel): Position { + let column = start.column; + let lineNumber = start.lineNumber; + + if (column > model.getLineMinColumn(lineNumber)) { + if (isLowSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 2))) { + // character before column is a low surrogate + column = column - 2; + } else { + column = column - 1; + } + } else if (lineNumber > 1) { + lineNumber = lineNumber - 1; + column = model.getLineMaxColumn(lineNumber); + } + + return new Position(lineNumber, column); + } + + private positionRightOf(start: IPosition, model: ITextModel): Position { + let column = start.column; + let lineNumber = start.lineNumber; + + if (column < model.getLineMaxColumn(lineNumber)) { + if (isHighSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 1))) { + // character after column is a high surrogate + column = column + 2; + } else { + column = column + 1; + } + } else if (lineNumber < model.getLineCount()) { + lineNumber = lineNumber + 1; + column = 0; + } + + return new Position(lineNumber, column); + } + constructor() { super({ id: 'editor.action.transposeLetters', @@ -36,30 +77,35 @@ class TransposeLettersAction extends EditorAction { let commands: ICommand[] = []; let selections = editor.getSelections(); - for (let i = 0; i < selections.length; i++) { - let selection = selections[i]; + for (let selection of selections) { if (!selection.isEmpty()) { continue; } + let lineNumber = selection.startLineNumber; let column = selection.startColumn; - if (column === 1) { - // at the beginning of line - continue; - } - let maxColumn = model.getLineMaxColumn(lineNumber); - if (column === maxColumn) { - // at the end of line + + let lastColumn = model.getLineMaxColumn(lineNumber); + + if (lineNumber === 1 && (column === 1 || (column === 2 && lastColumn === 2))) { + // at beginning of file, nothing to do continue; } - let lineContent = model.getLineContent(lineNumber); - let charToTheLeft = lineContent.charAt(column - 2); - let charToTheRight = lineContent.charAt(column - 1); + // handle special case: when at end of line, transpose left two chars + // otherwise, transpose left and right chars + let endPosition = (column === lastColumn) ? + selection.getPosition() : + this.positionRightOf(selection.getPosition(), model); - let replaceRange = new Range(lineNumber, column - 1, lineNumber, column + 1); + let middlePosition = this.positionLeftOf(endPosition, model); + let beginPosition = this.positionLeftOf(middlePosition, model); - commands.push(new ReplaceCommand(replaceRange, charToTheRight + charToTheLeft)); + let leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition)); + let rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition)); + + let replaceRange = Range.fromPositions(beginPosition, endPosition); + commands.push(new ReplaceCommand(replaceRange, rightChar + leftChar)); } if (commands.length > 0) { From b8e28eff9b5717b7d1b8701cc4702900182d06c7 Mon Sep 17 00:00:00 2001 From: JYX <1449843302@qq.com> Date: Sat, 17 Mar 2018 10:31:48 +0800 Subject: [PATCH 0013/1070] Update simpleWorker.ts --- src/vs/base/common/worker/simpleWorker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/common/worker/simpleWorker.ts b/src/vs/base/common/worker/simpleWorker.ts index 0099aac4956..dc70fcab127 100644 --- a/src/vs/base/common/worker/simpleWorker.ts +++ b/src/vs/base/common/worker/simpleWorker.ts @@ -116,7 +116,7 @@ class SimpleWorkerProtocol { } catch (e) { // nothing } - if (!message.vsWorker) { + if (!message || !message.vsWorker) { return; } if (this._workerId !== -1 && message.vsWorker !== this._workerId) { From 3eda13adefc0b9b01457ad7020e3de519b227d84 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 10:31:07 +0100 Subject: [PATCH 0014/1070] refactoring of alreadyExists() --- .../files/electron-browser/fileActions.ts | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 7685d1f407e..3a43a3133c7 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1365,8 +1365,8 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti // Do not allow to overwrite existing file if (!allowOverwriting) { let p = parent; - const alreadyExisting = names.every((folderName) => { - let { exists, child } = alreadyExists(p, folderName); + const alreadyExisting = names.every((pathSegment) => { + let { exists, child } = alreadyExists(p, pathSegment); if (!exists) { return false; @@ -1398,22 +1398,13 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti } function alreadyExists(parent: IFileStat, name: string): { exists: boolean, child: IFileStat | undefined } { - let duplicateChild: IFileStat; - if (parent.children) { - let exists: boolean = parent.children.some((c) => { - let found: boolean; - if (isLinux) { - found = c.name === name; - } else { - found = c.name.toLowerCase() === name.toLowerCase(); + for (const child of parent.children) { + const exists: boolean = isLinux ? child.name === name : child.name.toLowerCase() === name.toLowerCase(); + if (exists) { + return { exists, child }; } - if (found) { - duplicateChild = c; - } - return found; - }); - return { exists, child: duplicateChild }; + } } return { exists: false, child: undefined }; From 3d89966399af76e1771983a0e3851a58ebc274a6 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 11:14:43 +0100 Subject: [PATCH 0015/1070] removes unused param in TriggerRenameFileAction.validateFileName() --- src/vs/workbench/parts/files/electron-browser/fileActions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 3a43a3133c7..7bfd8849ce8 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -166,7 +166,7 @@ class TriggerRenameFileAction extends BaseFileAction { this._updateEnablement(); } - public validateFileName(parent: IFileStat, name: string): string { + public validateFileName(name: string): string { return this.renameAction.validateFileName(this.element.parent, name); } @@ -188,7 +188,7 @@ class TriggerRenameFileAction extends BaseFileAction { viewletState.setEditable(stat, { action: this.renameAction, validator: (value) => { - const message = this.validateFileName(this.element.parent, value); + const message = this.validateFileName(value); if (!message) { return null; From d4cc1e79fe71158d629a8cf14132b71f56247166 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 12:57:26 +0100 Subject: [PATCH 0016/1070] adds validation check: file must always be a leaf --- .../files/electron-browser/fileActions.ts | 65 ++++++++++++++----- 1 file changed, 48 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 7bfd8849ce8..921a05069d2 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1349,7 +1349,6 @@ export class CopyPathAction extends Action { } } - export function validateFileName(parent: IFileStat, name: string, allowOverwriting: boolean = false): string { // Produce a well formed file name @@ -1362,23 +1361,16 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti const names: string[] = name.split(/[\\/]/).filter(part => !!part); + const pathAnalysis: IPathAnalysis = validatePath(parent, names); + + // a file must always be a leaf + if (!pathAnalysis.leafInfo.isLeaf) { + return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", trimLongName(pathAnalysis.leafInfo.filename)); + } + // Do not allow to overwrite existing file - if (!allowOverwriting) { - let p = parent; - const alreadyExisting = names.every((pathSegment) => { - let { exists, child } = alreadyExists(p, pathSegment); - - if (!exists) { - return false; - } else { - p = child; - return true; - } - }); - - if (alreadyExisting) { - return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); - } + if (!allowOverwriting && pathAnalysis.fullPathAlreadyExists) { + return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); } // Invalid File name @@ -1397,6 +1389,45 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti return null; } + +interface IPathAnalysis { + fullPathAlreadyExists: boolean; + leafInfo: { isLeaf: boolean, filename: string }; +} + +function validatePath(parent: IFileStat, names: string[]): IPathAnalysis { + const pathAnalysis: IPathAnalysis = { + fullPathAlreadyExists: true, + leafInfo: { isLeaf: true, filename: '' } + }; + + let p = parent; + for (let i = 0; i < names.length; i++) { + const pathSegment = names[i]; + + let { exists, child } = alreadyExists(p, pathSegment); + + if (!exists) { + pathAnalysis.fullPathAlreadyExists = false; + break; + } + + else if (!child.isDirectory) { + if (i !== names.length - 1) { + // it's not the last segment + pathAnalysis.leafInfo.isLeaf = false; + pathAnalysis.leafInfo.filename = child.name; + } + } + + else { + p = child; + } + } + + return pathAnalysis; +} + function alreadyExists(parent: IFileStat, name: string): { exists: boolean, child: IFileStat | undefined } { if (parent.children) { for (const child of parent.children) { From 40f2fdea29fe9bfa328b205a5a44fae2929496b4 Mon Sep 17 00:00:00 2001 From: Mihai Balaceanu Date: Sat, 17 Mar 2018 17:04:13 +0200 Subject: [PATCH 0017/1070] Fixes #46027 by using box-shadow css to render guides, rather than background color and computed width ...should also be faster without these computations --- src/vs/editor/browser/viewParts/indentGuides/indentGuides.css | 2 ++ src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts | 4 ++-- src/vs/editor/browser/viewParts/rulers/rulers.css | 2 ++ src/vs/editor/browser/viewParts/rulers/rulers.ts | 4 ++-- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css index 45992137d18..d2785cebd6b 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css @@ -9,4 +9,6 @@ */ .monaco-editor .lines-content .cigr { position: absolute; + --box-shadow-color: rgba(0, 0, 0, 0); + box-shadow: 1px 0 0 0 var(--box-shadow-color) inset; } diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts index 8e97e032f30..dbe09a485ba 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts @@ -94,7 +94,7 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { const tabSize = this._context.model.getTabSize(); const tabWidth = tabSize * this._spaceWidth; const lineHeight = this._lineHeight; - const indentGuideWidth = dom.computeScreenAwareSize(1); + const indentGuideWidth = tabWidth; const indents = this._context.model.getLinesIndentGuides(visibleStartLineNumber, visibleEndLineNumber); @@ -131,6 +131,6 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { registerThemingParticipant((theme, collector) => { let editorGuideColor = theme.getColor(editorIndentGuides); if (editorGuideColor) { - collector.addRule(`.monaco-editor .lines-content .cigr { background-color: ${editorGuideColor}; }`); + collector.addRule(`.monaco-editor .lines-content .cigr { --box-shadow-color: ${editorGuideColor}; }`); } }); diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.css b/src/vs/editor/browser/viewParts/rulers/rulers.css index d3d2d26ec95..30bb66bddd3 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.css +++ b/src/vs/editor/browser/viewParts/rulers/rulers.css @@ -6,4 +6,6 @@ .monaco-editor .view-ruler { position: absolute; top: 0; + --box-shadow-color: rgba(0, 0, 0, 0); + box-shadow: 1px 0 0 0 var(--box-shadow-color) inset; } \ No newline at end of file diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.ts b/src/vs/editor/browser/viewParts/rulers/rulers.ts index 036ff988cb7..f6d6f4a1e7f 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.ts +++ b/src/vs/editor/browser/viewParts/rulers/rulers.ts @@ -67,7 +67,7 @@ export class Rulers extends ViewPart { } if (currentCount < desiredCount) { - const rulerWidth = dom.computeScreenAwareSize(1); + const rulerWidth = this._context.model.getTabSize(); let addCount = desiredCount - currentCount; while (addCount > 0) { let node = createFastDomNode(document.createElement('div')); @@ -104,6 +104,6 @@ export class Rulers extends ViewPart { registerThemingParticipant((theme, collector) => { let rulerColor = theme.getColor(editorRuler); if (rulerColor) { - collector.addRule(`.monaco-editor .view-ruler { background-color: ${rulerColor}; }`); + collector.addRule(`.monaco-editor .view-ruler { --box-shadow-color: ${rulerColor}; }`); } }); From 5ac01be6473b941c1caaccbf2c6ec162d570f8f5 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 16:17:39 +0100 Subject: [PATCH 0018/1070] displayCurrentPath() didn't make use of param projectFolderName --- .../parts/files/electron-browser/views/explorerViewer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 7430f8b23ae..0f935711c91 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -342,7 +342,7 @@ export class FileRenderer implements IRenderer { if (inputBox.validate()) { const value = inputBox.value; if (value && value.search(/[\\/]/) !== -1) { // only show if there's a slash - let newPath = paths.normalize(paths.join(initialRelPath, value), true); + let newPath = paths.normalize(paths.join(projectFolderName, initialRelPath, value), true); newPath = rtrim(newPath, paths.nativeSep); const fileType: string = FileKind[fileKind].toLowerCase(); From d7731d8e7f83771fa9e5f6dfb8faad6eade47013 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 16:32:09 +0100 Subject: [PATCH 0019/1070] fixes leading slash --- .../files/electron-browser/views/explorerViewer.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 0f935711c91..03bf645a1e0 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -8,6 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import * as nls from 'vs/nls'; import * as objects from 'vs/base/common/objects'; import * as DOM from 'vs/base/browser/dom'; +import * as path from 'path'; import URI from 'vs/base/common/uri'; import { once } from 'vs/base/common/functional'; import * as paths from 'vs/base/common/paths'; @@ -49,7 +50,6 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing'; import { extractResources, SimpleFileResourceDragAndDrop, CodeDataTransfers, fillResourceDataTransfers } from 'vs/workbench/browser/dnd'; -import { relative } from 'path'; import { WorkbenchTree, WorkbenchTreeController } from 'vs/platform/list/browser/listService'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { DataTransfers } from 'vs/base/browser/dnd'; @@ -323,7 +323,7 @@ export class FileRenderer implements IRenderer { } }), DOM.addStandardDisposableListener(inputBox.inputElement, DOM.EventType.KEY_UP, (e: IKeyboardEvent) => { - const initialRelPath: string = relative(stat.root.resource.fsPath, stat.parent.resource.fsPath); + const initialRelPath: string = path.relative(stat.root.resource.fsPath, stat.parent.resource.fsPath); let projectFolderName: string = ''; if (this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE) { projectFolderName = paths.basename(stat.root.resource.fsPath); // show root folder name in multi-folder project @@ -342,13 +342,13 @@ export class FileRenderer implements IRenderer { if (inputBox.validate()) { const value = inputBox.value; if (value && value.search(/[\\/]/) !== -1) { // only show if there's a slash - let newPath = paths.normalize(paths.join(projectFolderName, initialRelPath, value), true); - newPath = rtrim(newPath, paths.nativeSep); + let displayPath = path.normalize(path.join(projectFolderName, initialRelPath, value)); + displayPath = rtrim(displayPath, paths.nativeSep); const fileType: string = FileKind[fileKind].toLowerCase(); inputBox.showMessage({ type: MessageType.INFO, - content: nls.localize('constructedPath', "Create {0} in **{1}**", fileType, newPath), + content: nls.localize('constructedPath', "Create {0} in **{1}**", fileType, displayPath), formatContent: true }); } @@ -701,7 +701,7 @@ export class FileFilter implements IFilter { // Hide those that match Hidden Patterns const siblingsFn = () => siblings && siblings.map(c => c.name); const expression = this.hiddenExpressionPerRoot.get(stat.root.resource.toString()) || Object.create(null); - if (glob.match(expression, paths.normalize(relative(stat.root.resource.fsPath, stat.resource.fsPath), true), siblingsFn)) { + if (glob.match(expression, paths.normalize(path.relative(stat.root.resource.fsPath, stat.resource.fsPath), true), siblingsFn)) { return false; // hidden through pattern } From 667a6c066632dce52c042931805f80beb82f9f9c Mon Sep 17 00:00:00 2001 From: Mihai Balaceanu Date: Sat, 17 Mar 2018 17:04:13 +0200 Subject: [PATCH 0020/1070] 46027 - fix build --- src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts | 1 - src/vs/editor/browser/viewParts/rulers/rulers.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts index dbe09a485ba..608456fc4ab 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts @@ -12,7 +12,6 @@ import { RenderingContext } from 'vs/editor/common/view/renderingContext'; import * as viewEvents from 'vs/editor/common/view/viewEvents'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorIndentGuides } from 'vs/editor/common/view/editorColorRegistry'; -import * as dom from 'vs/base/browser/dom'; import { Position } from 'vs/editor/common/core/position'; export class IndentGuidesOverlay extends DynamicViewOverlay { diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.ts b/src/vs/editor/browser/viewParts/rulers/rulers.ts index f6d6f4a1e7f..49779199cff 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.ts +++ b/src/vs/editor/browser/viewParts/rulers/rulers.ts @@ -13,7 +13,6 @@ import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/common/v import * as viewEvents from 'vs/editor/common/view/viewEvents'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorRuler } from 'vs/editor/common/view/editorColorRegistry'; -import * as dom from 'vs/base/browser/dom'; export class Rulers extends ViewPart { From 2b3ff85c6984dfd8e5490b1db5340fd60cc04170 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sat, 17 Mar 2018 17:51:39 +0100 Subject: [PATCH 0021/1070] info messages better reflect action --- .../electron-browser/views/explorerViewer.ts | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 03bf645a1e0..8eda0a97219 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -328,7 +328,7 @@ export class FileRenderer implements IRenderer { if (this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE) { projectFolderName = paths.basename(stat.root.resource.fsPath); // show root folder name in multi-folder project } - this.displayCurrentPath(inputBox, initialRelPath, fileKind, projectFolderName); + this.displayCurrentPath(inputBox, initialRelPath, projectFolderName, editableData.action.id); }), DOM.addDisposableListener(inputBox.inputElement, DOM.EventType.BLUR, () => { done(inputBox.isInputValid(), true); @@ -338,17 +338,33 @@ export class FileRenderer implements IRenderer { ]; } - private displayCurrentPath(inputBox: InputBox, initialRelPath: string, fileKind: FileKind, projectFolderName: string = '') { + private displayCurrentPath(inputBox: InputBox, initialRelPath: string, projectFolderName: string = '', actionID: string) { if (inputBox.validate()) { const value = inputBox.value; if (value && value.search(/[\\/]/) !== -1) { // only show if there's a slash let displayPath = path.normalize(path.join(projectFolderName, initialRelPath, value)); displayPath = rtrim(displayPath, paths.nativeSep); - const fileType: string = FileKind[fileKind].toLowerCase(); + + const indexLastSlash: number = displayPath.lastIndexOf(paths.nativeSep); + const name: string = displayPath.substring(indexLastSlash + 1); + const leadingPathPart: string = displayPath.substring(0, indexLastSlash); + + let msg: string; + switch (actionID) { + case 'workbench.files.action.createFileFromExplorer': + msg = nls.localize('createFileFromExplorerInfoMessage', "Create file **{0}** in **{1}**", name, leadingPathPart); + break; + case 'workbench.files.action.renameFile': + msg = nls.localize('renameFileFromExplorerInfoMessage', "Move and rename to **{0}**", displayPath); + break; + case 'workbench.files.action.createFolderFromExplorer': // fallthrough + default: + msg = nls.localize('createFolderFromExplorerInfoMessage', "Create folder **{0}** in **{1}**", name, leadingPathPart); + } inputBox.showMessage({ type: MessageType.INFO, - content: nls.localize('constructedPath', "Create {0} in **{1}**", fileType, displayPath), + content: msg, formatContent: true }); } From 5d8fa89d8bacc87b10c519954cccc03bb63af068 Mon Sep 17 00:00:00 2001 From: Fathy Boundjadj Date: Sat, 17 Mar 2018 19:44:50 +0100 Subject: [PATCH 0022/1070] Add getWorker to MonacoEnvironment --- src/vs/base/worker/defaultWorkerFactory.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/vs/base/worker/defaultWorkerFactory.ts b/src/vs/base/worker/defaultWorkerFactory.ts index 344588ad9ef..4fe3caa2403 100644 --- a/src/vs/base/worker/defaultWorkerFactory.ts +++ b/src/vs/base/worker/defaultWorkerFactory.ts @@ -7,17 +7,22 @@ import { globals } from 'vs/base/common/platform'; import { logOnceWebWorkerWarning, IWorker, IWorkerCallback, IWorkerFactory } from 'vs/base/common/worker/simpleWorker'; -function getWorkerUrl(workerId: string, label: string): string { - // Option for hosts to overwrite the worker script url (used in the standalone editor) - if (globals.MonacoEnvironment && typeof globals.MonacoEnvironment.getWorkerUrl === 'function') { - return globals.MonacoEnvironment.getWorkerUrl(workerId, label); +function getWorker(workerId: string, label: string): Worker { + // Option for hosts to overwrite the worker script (used in the standalone editor) + if (globals.MonacoEnvironment) { + if (typeof globals.MonacoEnvironment.getWorker === 'function') { + return globals.MonacoEnvironment.getWorker(workerId, label); + } + if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') { + return new Worker(globals.MonacoEnvironment.getWorkerUrl(workerId, label)); + } } // ESM-comment-begin if (typeof require === 'function') { - return require.toUrl('./' + workerId) + '#' + label; + return new Worker(require.toUrl('./' + workerId) + '#' + label); } // ESM-comment-end - throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl`); + throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`); } /** @@ -31,7 +36,7 @@ class WebWorker implements IWorker { constructor(moduleId: string, id: number, label: string, onMessageCallback: IWorkerCallback, onErrorCallback: (err: any) => void) { this.id = id; - this.worker = new Worker(getWorkerUrl('workerMain.js', label)); + this.worker = getWorker('workerMain.js', label); this.postMessage(moduleId); this.worker.onmessage = function (ev: any) { onMessageCallback(ev.data); From fe395f5178fb0748940d640c6ac628fee614f8d0 Mon Sep 17 00:00:00 2001 From: AiryShift Date: Wed, 21 Mar 2018 14:41:04 +1100 Subject: [PATCH 0023/1070] Fix #46075 --- .../workbench/api/electron-browser/mainThreadSaveParticipant.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts index c93c090818e..8f647499400 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts @@ -165,7 +165,7 @@ export class TrimFinalNewLinesParticipant implements ISaveParticipantParticipant currentLineIsEmptyOrWhitespace = strings.lastNonWhitespaceIndex(currentLine) === -1; } - const deletionRange = new Range(currentLineNumber + 1, 1, lineCount + 1, 1); + const deletionRange = new Range(currentLineNumber + 1, 1, lineCount, 1); if (!deletionRange.isEmpty()) { model.pushEditOperations(prevSelection, [EditOperation.delete(deletionRange)], edits => prevSelection); } From 55e85a94a6db89ff220d63b6f90e318bca58babe Mon Sep 17 00:00:00 2001 From: AiryShift Date: Wed, 21 Mar 2018 14:41:47 +1100 Subject: [PATCH 0024/1070] Add test to check for 46075: NOT WORKING This should reproduce the bug as described in #46075 but doesn't --- .../api/mainThreadSaveParticipant.test.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts index 995c2d814a8..f0465f76568 100644 --- a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts @@ -139,4 +139,31 @@ suite('MainThreadSaveParticipant', function () { }); }); + test('trim final new lines bug#46075', function () { + const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/trim_final_new_line.txt'), 'utf8'); + + return model.load().then(() => { + const configService = new TestConfigurationService(); + configService.setUserConfiguration('files', { 'trimFinalNewlines': true }); + + const participant = new TrimFinalNewLinesParticipant(configService, undefined); + + const textContent = 'Test'; + const eol = `${model.textEditorModel.getEOL()}`; + + let content = `${textContent}${eol}${eol}`; + model.textEditorModel.setValue(content); + // save many times + for (let i = 0; i < 10; i++) { + participant.participate(model, { reason: SaveReason.EXPLICIT }); + } + // confirm trimming + assert.equal(snapshotToString(model.createSnapshot()), `${textContent}${eol}`); + // undo should go back to previous content immediately + model.textEditorModel.undo(); + assert.equal(snapshotToString(model.createSnapshot()), `${textContent}${eol}${eol}`); + model.textEditorModel.redo(); + assert.equal(snapshotToString(model.createSnapshot()), `${textContent}${eol}`); + }); + }); }); From a9a570a545c63193a78b6aa67c818a0634926bfe Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Thu, 22 Mar 2018 08:53:07 +0100 Subject: [PATCH 0025/1070] refactoring --- .../files/electron-browser/fileActions.ts | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 49863a9f63e..c6a74508c9e 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1353,15 +1353,20 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti const names: string[] = name.split(/[\\/]/).filter(part => !!part); - const pathAnalysis: IPathAnalysis = validatePath(parent, names); + const pathMapping: IPathMapping[] = mapPathsToExistingFolders(parent, names); + const fileWithDescendants = pathMapping.slice(0, -1) // remove leaf + .filter(p => p.exists && p.isFile) // check if one of the parents is a file + .reduce((prev, curr) => prev || curr, null); // a file must always be a leaf - if (!pathAnalysis.leafInfo.isLeaf) { - return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", trimLongName(pathAnalysis.leafInfo.filename)); + if (fileWithDescendants) { + return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", fileWithDescendants.name); } + const fullPathAlreadyExists = pathMapping.every(p => p.exists); + // Do not allow to overwrite existing file - if (!allowOverwriting && pathAnalysis.fullPathAlreadyExists) { + if (!allowOverwriting && fullPathAlreadyExists) { return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); } @@ -1381,43 +1386,30 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti return null; } - -interface IPathAnalysis { - fullPathAlreadyExists: boolean; - leafInfo: { isLeaf: boolean, filename: string }; +interface IPathMapping { + exists: boolean; + isFile: boolean; + name: string; } -function validatePath(parent: IFileStat, names: string[]): IPathAnalysis { - const pathAnalysis: IPathAnalysis = { - fullPathAlreadyExists: true, - leafInfo: { isLeaf: true, filename: '' } - }; +function mapPathsToExistingFolders(parent: IFileStat, pathNames: string[]): IPathMapping[] { + const mapping: IPathMapping[] = []; - let p = parent; - for (let i = 0; i < names.length; i++) { - const pathSegment = names[i]; - - let { exists, child } = alreadyExists(p, pathSegment); + for (const name of pathNames) { + let { exists, child } = alreadyExists(parent, name); if (!exists) { - pathAnalysis.fullPathAlreadyExists = false; - break; + mapping.push({ exists: false, isFile: false, name }); + return mapping; } - else if (!child.isDirectory) { - if (i !== names.length - 1) { - // it's not the last segment - pathAnalysis.leafInfo.isLeaf = false; - pathAnalysis.leafInfo.filename = child.name; - } - } + const isFile: boolean = !child.isDirectory; + mapping.push({ exists: true, isFile, name }); - else { - p = child; - } + parent = child; } - return pathAnalysis; + return mapping; } function alreadyExists(parent: IFileStat, name: string): { exists: boolean, child: IFileStat | undefined } { From 4ddeb7fb68c48c02c337c9cfd6acb61e339850f0 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Sun, 25 Mar 2018 10:44:20 +0200 Subject: [PATCH 0026/1070] refactoring --- .../files/electron-browser/fileActions.ts | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index c6a74508c9e..e9c1bb9866b 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1352,24 +1352,18 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti } const names: string[] = name.split(/[\\/]/).filter(part => !!part); - - const pathMapping: IPathMapping[] = mapPathsToExistingFolders(parent, names); - const fileWithDescendants = pathMapping.slice(0, -1) // remove leaf - .filter(p => p.exists && p.isFile) // check if one of the parents is a file - .reduce((prev, curr) => prev || curr, null); - - // a file must always be a leaf - if (fileWithDescendants) { - return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", fileWithDescendants.name); - } - - const fullPathAlreadyExists = pathMapping.every(p => p.exists); + const pathMapping = mapPathsToExistingFolders(parent, names); // Do not allow to overwrite existing file - if (!allowOverwriting && fullPathAlreadyExists) { + if (!allowOverwriting && pathMapping.fullPathAlreadyExists) { return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); } + // a file must always be a leaf + if (pathMapping.last.isFile) { + return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", pathMapping.last.name); + } + // Invalid File name if (names.some((folderName) => !paths.isValidBasename(folderName))) { return nls.localize('invalidFileNameError', "The name **{0}** is not valid as a file or folder name. Please choose a different name.", trimLongName(name)); @@ -1386,30 +1380,34 @@ export function validateFileName(parent: IFileStat, name: string, allowOverwriti return null; } -interface IPathMapping { - exists: boolean; - isFile: boolean; - name: string; +interface IMappedPath { + fullPathAlreadyExists: boolean; + last: { + isFile: boolean; + name: string; + }; } -function mapPathsToExistingFolders(parent: IFileStat, pathNames: string[]): IPathMapping[] { - const mapping: IPathMapping[] = []; +function mapPathsToExistingFolders(parent: IFileStat, pathNames: string[]): IMappedPath { + let fullPathAlreadyExists = true; + let lastPath = { isFile: false, name: '' }; for (const name of pathNames) { - let { exists, child } = alreadyExists(parent, name); + const { exists, child } = alreadyExists(parent, name); if (!exists) { - mapping.push({ exists: false, isFile: false, name }); - return mapping; + fullPathAlreadyExists = false; + break; } const isFile: boolean = !child.isDirectory; - mapping.push({ exists: true, isFile, name }); + lastPath.isFile = isFile; + lastPath.name = name; parent = child; } - return mapping; + return { fullPathAlreadyExists, last: lastPath }; } function alreadyExists(parent: IFileStat, name: string): { exists: boolean, child: IFileStat | undefined } { From 0c9d7f2b72bfc692c85d5ba2fb22f05410ada069 Mon Sep 17 00:00:00 2001 From: Aleksey Glazkov Date: Sun, 25 Mar 2018 23:41:53 -0400 Subject: [PATCH 0027/1070] fixed terminal dodn't open when window has no folders, closes #46139 --- .../execution/electron-browser/execution.contribution.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts b/src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts index 003b60d75b2..8f4c9ff89bd 100644 --- a/src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts +++ b/src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts @@ -117,6 +117,10 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ const root = historyService.getLastActiveWorkspaceRoot(Schemas.file); if (root) { terminalService.openTerminal(root.fsPath); + } else { + //Opens current file's folder, if no folder is open in editor + const path = historyService.getLastActiveFile().path; + terminalService.openTerminal(paths.dirname(path)); } } }); From 583b6c7e17a2b49555d183c00e3e704142e5fcf0 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 20 Mar 2018 15:06:18 -0700 Subject: [PATCH 0028/1070] Updated initial version of css folding --- .../client/src/cssMain.ts | 21 ++++- .../src/protocol/foldingProvider.proposed.ts | 94 +++++++++++++++++++ .../server/src/cssServerMain.ts | 15 ++- .../src/protocol/foldingProvider.proposed.ts | 94 +++++++++++++++++++ 4 files changed, 221 insertions(+), 3 deletions(-) create mode 100644 extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts create mode 100644 extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts index a8aaa53a18a..e12237d3f42 100644 --- a/extensions/css-language-features/client/src/cssMain.ts +++ b/extensions/css-language-features/client/src/cssMain.ts @@ -8,8 +8,9 @@ import * as path from 'path'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString } from 'vscode'; +import { languages, window, commands, ExtensionContext, Range, Position, TextDocument, CompletionItem, CompletionItemKind, TextEdit, SnippetString, FoldingRangeList, FoldingRange, FoldingContext, CancellationToken } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient'; +import { FoldingRangesRequest, FoldingRangeRequestParam } from './protocol/foldingProvider.proposed'; // this method is called when vs code is activated export function activate(context: ExtensionContext) { @@ -92,6 +93,24 @@ export function activate(context: ExtensionContext) { } }); + languages.registerFoldingProvider(documentSelector, { + provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { + const param: FoldingRangeRequestParam = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + maxRanges: context.maxRanges + }; + return client.sendRequest(FoldingRangesRequest.type, param, token).then(res => { + if (res && Array.isArray(res.ranges)) { + return new FoldingRangeList(res.ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.type))); + } + return null; + }, error => { + client.logFailedRequest(FoldingRangesRequest.type, error); + return null; + }); + } + }); + commands.registerCommand('_css.applyCodeAction', applyCodeAction); function applyCodeAction(uri: string, documentVersion: number, edits: TextEdit[]) { diff --git a/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts b/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts new file mode 100644 index 00000000000..dd420e5e452 --- /dev/null +++ b/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts @@ -0,0 +1,94 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { TextDocumentIdentifier } from 'vscode-languageserver-types'; +import { RequestType, TextDocumentRegistrationOptions, StaticRegistrationOptions } from 'vscode-languageserver-protocol'; + +// ---- capabilities + +export interface FoldingProviderClientCapabilities { + /** + * The text document client capabilities + */ + textDocument?: { + /** + * Capabilities specific to the foldingProvider + */ + foldingProvider?: { + /** + * Whether implementation supports dynamic registration. If this is set to `true` + * the client supports the new `(FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)` + * return value for the corresponding server capability as well. + */ + dynamicRegistration?: boolean; + }; + }; +} + +export interface FoldingProviderOptions { +} + +export interface FoldingProviderServerCapabilities { + /** + * The server provides folding provider support. + */ + foldingProvider?: FoldingProviderOptions | (FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions); +} + +export interface FoldingRangeList { + /** + * The folding ranges. + */ + ranges: FoldingRange[]; +} + +export enum FoldingRangeType { + /** + * Folding range for a comment + */ + Comment = 'comment', + /** + * Folding range for a imports or includes + */ + Imports = 'imports', + /** + * Folding range for a region (e.g. `#region`) + */ + Region = 'region' +} + +export interface FoldingRange { + + /** + * The start line number + */ + startLine: number; + + /** + * The end line number + */ + endLine: number; + + /** + * The actual color value for this folding range. + */ + type?: FoldingRangeType | string; +} + +export interface FoldingRangeRequestParam { + /** + * The text document. + */ + textDocument: TextDocumentIdentifier; + + /** + * The maximum number of ranges to provide + */ + maxRanges?: number; +} + +export namespace FoldingRangesRequest { + export const type: RequestType = new RequestType('textDocument/foldingRanges'); +} diff --git a/extensions/css-language-features/server/src/cssServerMain.ts b/extensions/css-language-features/server/src/cssServerMain.ts index 66b473f1a6d..b3bd45f1ada 100644 --- a/extensions/css-language-features/server/src/cssServerMain.ts +++ b/extensions/css-language-features/server/src/cssServerMain.ts @@ -16,6 +16,7 @@ import { getLanguageModelCache } from './languageModelCache'; import { formatError, runSafe } from './utils/errors'; import URI from 'vscode-uri'; import { getPathCompletionParticipant } from './pathCompletion'; +import { FoldingProviderServerCapabilities, FoldingRangesRequest } from './protocol/foldingProvider.proposed'; export interface Settings { css: LanguageSettings; @@ -72,7 +73,8 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { } let snippetSupport = hasClientCapability('textDocument.completion.completionItem.snippetSupport'); scopedSettingsSupport = hasClientCapability('workspace.configuration'); - let capabilities: ServerCapabilities = { + + let capabilities: ServerCapabilities & FoldingProviderServerCapabilities = { // Tell the client that the server works in FULL text document sync mode textDocumentSync: documents.syncKind, completionProvider: snippetSupport ? { resolveProvider: false } : undefined, @@ -83,7 +85,8 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { documentHighlightProvider: true, codeActionProvider: true, renameProvider: true, - colorProvider: true + colorProvider: true, + foldingProvider: true }; return { capabilities }; }); @@ -274,5 +277,13 @@ connection.onRenameRequest(renameParameters => { }, null, `Error while computing renames for ${renameParameters.textDocument.uri}`); }); +connection.onRequest(FoldingRangesRequest.type, (params, token) => { + return runSafe(() => { + let document = documents.get(params[0].textDocument.uri); + let stylesheet = stylesheets.get(document); + return getLanguageService(document).findFoldingRegions(document, stylesheet); + }, null, `Error while computing folding ranges for ${params[0].textDocument.uri}`); +}); + // Listen on the connection connection.listen(); \ No newline at end of file diff --git a/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts b/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts new file mode 100644 index 00000000000..dd420e5e452 --- /dev/null +++ b/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts @@ -0,0 +1,94 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { TextDocumentIdentifier } from 'vscode-languageserver-types'; +import { RequestType, TextDocumentRegistrationOptions, StaticRegistrationOptions } from 'vscode-languageserver-protocol'; + +// ---- capabilities + +export interface FoldingProviderClientCapabilities { + /** + * The text document client capabilities + */ + textDocument?: { + /** + * Capabilities specific to the foldingProvider + */ + foldingProvider?: { + /** + * Whether implementation supports dynamic registration. If this is set to `true` + * the client supports the new `(FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)` + * return value for the corresponding server capability as well. + */ + dynamicRegistration?: boolean; + }; + }; +} + +export interface FoldingProviderOptions { +} + +export interface FoldingProviderServerCapabilities { + /** + * The server provides folding provider support. + */ + foldingProvider?: FoldingProviderOptions | (FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions); +} + +export interface FoldingRangeList { + /** + * The folding ranges. + */ + ranges: FoldingRange[]; +} + +export enum FoldingRangeType { + /** + * Folding range for a comment + */ + Comment = 'comment', + /** + * Folding range for a imports or includes + */ + Imports = 'imports', + /** + * Folding range for a region (e.g. `#region`) + */ + Region = 'region' +} + +export interface FoldingRange { + + /** + * The start line number + */ + startLine: number; + + /** + * The end line number + */ + endLine: number; + + /** + * The actual color value for this folding range. + */ + type?: FoldingRangeType | string; +} + +export interface FoldingRangeRequestParam { + /** + * The text document. + */ + textDocument: TextDocumentIdentifier; + + /** + * The maximum number of ranges to provide + */ + maxRanges?: number; +} + +export namespace FoldingRangesRequest { + export const type: RequestType = new RequestType('textDocument/foldingRanges'); +} From 2ad387e5adee2136faabe93358bf4899f087fe33 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 26 Mar 2018 02:18:28 -0500 Subject: [PATCH 0029/1070] Depend on vscode-languageserver-protocol-foldingprovider --- .../client/src/cssMain.ts | 2 +- .../src/protocol/foldingProvider.proposed.ts | 94 ------------------- .../client/tsconfig.json | 1 + extensions/css-language-features/package.json | 7 +- .../css-language-features/server/package.json | 3 +- .../server/src/cssServerMain.ts | 2 +- .../src/protocol/foldingProvider.proposed.ts | 94 ------------------- .../css-language-features/server/yarn.lock | 7 ++ extensions/css-language-features/yarn.lock | 37 +++++--- 9 files changed, 38 insertions(+), 209 deletions(-) delete mode 100644 extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts delete mode 100644 extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts index e12237d3f42..4c086619f71 100644 --- a/extensions/css-language-features/client/src/cssMain.ts +++ b/extensions/css-language-features/client/src/cssMain.ts @@ -10,7 +10,7 @@ const localize = nls.loadMessageBundle(); import { languages, window, commands, ExtensionContext, Range, Position, TextDocument, CompletionItem, CompletionItemKind, TextEdit, SnippetString, FoldingRangeList, FoldingRange, FoldingContext, CancellationToken } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient'; -import { FoldingRangesRequest, FoldingRangeRequestParam } from './protocol/foldingProvider.proposed'; +import { FoldingRangesRequest, FoldingRangeRequestParam } from 'vscode-languageserver-protocol-foldingprovider'; // this method is called when vs code is activated export function activate(context: ExtensionContext) { diff --git a/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts b/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts deleted file mode 100644 index dd420e5e452..00000000000 --- a/extensions/css-language-features/client/src/protocol/foldingProvider.proposed.ts +++ /dev/null @@ -1,94 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { TextDocumentIdentifier } from 'vscode-languageserver-types'; -import { RequestType, TextDocumentRegistrationOptions, StaticRegistrationOptions } from 'vscode-languageserver-protocol'; - -// ---- capabilities - -export interface FoldingProviderClientCapabilities { - /** - * The text document client capabilities - */ - textDocument?: { - /** - * Capabilities specific to the foldingProvider - */ - foldingProvider?: { - /** - * Whether implementation supports dynamic registration. If this is set to `true` - * the client supports the new `(FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)` - * return value for the corresponding server capability as well. - */ - dynamicRegistration?: boolean; - }; - }; -} - -export interface FoldingProviderOptions { -} - -export interface FoldingProviderServerCapabilities { - /** - * The server provides folding provider support. - */ - foldingProvider?: FoldingProviderOptions | (FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions); -} - -export interface FoldingRangeList { - /** - * The folding ranges. - */ - ranges: FoldingRange[]; -} - -export enum FoldingRangeType { - /** - * Folding range for a comment - */ - Comment = 'comment', - /** - * Folding range for a imports or includes - */ - Imports = 'imports', - /** - * Folding range for a region (e.g. `#region`) - */ - Region = 'region' -} - -export interface FoldingRange { - - /** - * The start line number - */ - startLine: number; - - /** - * The end line number - */ - endLine: number; - - /** - * The actual color value for this folding range. - */ - type?: FoldingRangeType | string; -} - -export interface FoldingRangeRequestParam { - /** - * The text document. - */ - textDocument: TextDocumentIdentifier; - - /** - * The maximum number of ranges to provide - */ - maxRanges?: number; -} - -export namespace FoldingRangesRequest { - export const type: RequestType = new RequestType('textDocument/foldingRanges'); -} diff --git a/extensions/css-language-features/client/tsconfig.json b/extensions/css-language-features/client/tsconfig.json index ee67f8333d4..473f4e85fc9 100644 --- a/extensions/css-language-features/client/tsconfig.json +++ b/extensions/css-language-features/client/tsconfig.json @@ -4,6 +4,7 @@ "module": "commonjs", "outDir": "./out", "noUnusedLocals": true, + "sourceMap": true, "lib": [ "es2016" ], diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json index deb2c755d7a..34bfb1b799c 100644 --- a/extensions/css-language-features/package.json +++ b/extensions/css-language-features/package.json @@ -1,7 +1,7 @@ { "name": "css-language-features", - "displayName": "%displayName%", - "description": "%description%", + "displayName": "%displayName%", + "description": "%description%", "version": "1.0.0", "publisher": "vscode", "engines": { @@ -692,7 +692,8 @@ ] }, "dependencies": { - "vscode-languageclient": "4.0.0-next.9", + "vscode-languageclient": "^4.0.0", + "vscode-languageserver-protocol-foldingprovider": "^1.0.1", "vscode-nls": "^3.2.1" }, "devDependencies": { diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 26769bfeb61..5f529afffc2 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -10,7 +10,8 @@ "dependencies": { "vscode-css-languageservice": "^3.0.9-next.1", "vscode-emmet-helper": "^1.2.0", - "vscode-languageserver": "^4.0.0" + "vscode-languageserver": "^4.0.0", + "vscode-languageserver-protocol-foldingprovider": "^1.0.1" }, "devDependencies": { "@types/mocha": "2.2.33", diff --git a/extensions/css-language-features/server/src/cssServerMain.ts b/extensions/css-language-features/server/src/cssServerMain.ts index b3bd45f1ada..693c4384f7f 100644 --- a/extensions/css-language-features/server/src/cssServerMain.ts +++ b/extensions/css-language-features/server/src/cssServerMain.ts @@ -16,7 +16,7 @@ import { getLanguageModelCache } from './languageModelCache'; import { formatError, runSafe } from './utils/errors'; import URI from 'vscode-uri'; import { getPathCompletionParticipant } from './pathCompletion'; -import { FoldingProviderServerCapabilities, FoldingRangesRequest } from './protocol/foldingProvider.proposed'; +import { FoldingProviderServerCapabilities, FoldingRangesRequest } from 'vscode-languageserver-protocol-foldingprovider'; export interface Settings { css: LanguageSettings; diff --git a/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts b/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts deleted file mode 100644 index dd420e5e452..00000000000 --- a/extensions/css-language-features/server/src/protocol/foldingProvider.proposed.ts +++ /dev/null @@ -1,94 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { TextDocumentIdentifier } from 'vscode-languageserver-types'; -import { RequestType, TextDocumentRegistrationOptions, StaticRegistrationOptions } from 'vscode-languageserver-protocol'; - -// ---- capabilities - -export interface FoldingProviderClientCapabilities { - /** - * The text document client capabilities - */ - textDocument?: { - /** - * Capabilities specific to the foldingProvider - */ - foldingProvider?: { - /** - * Whether implementation supports dynamic registration. If this is set to `true` - * the client supports the new `(FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)` - * return value for the corresponding server capability as well. - */ - dynamicRegistration?: boolean; - }; - }; -} - -export interface FoldingProviderOptions { -} - -export interface FoldingProviderServerCapabilities { - /** - * The server provides folding provider support. - */ - foldingProvider?: FoldingProviderOptions | (FoldingProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions); -} - -export interface FoldingRangeList { - /** - * The folding ranges. - */ - ranges: FoldingRange[]; -} - -export enum FoldingRangeType { - /** - * Folding range for a comment - */ - Comment = 'comment', - /** - * Folding range for a imports or includes - */ - Imports = 'imports', - /** - * Folding range for a region (e.g. `#region`) - */ - Region = 'region' -} - -export interface FoldingRange { - - /** - * The start line number - */ - startLine: number; - - /** - * The end line number - */ - endLine: number; - - /** - * The actual color value for this folding range. - */ - type?: FoldingRangeType | string; -} - -export interface FoldingRangeRequestParam { - /** - * The text document. - */ - textDocument: TextDocumentIdentifier; - - /** - * The maximum number of ranges to provide - */ - maxRanges?: number; -} - -export namespace FoldingRangesRequest { - export const type: RequestType = new RequestType('textDocument/foldingRanges'); -} diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 579deb4c9f1..776c26b3c20 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -37,6 +37,13 @@ vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" +vscode-languageserver-protocol-foldingprovider@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" + dependencies: + vscode-languageserver-protocol "^3.6.0" + vscode-languageserver-types "^3.6.0" + vscode-languageserver-protocol@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.6.0.tgz#579642cdcccf74b0cd771c33daa3239acb40d040" diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock index 5f63bd90373..01759bb4952 100644 --- a/extensions/css-language-features/yarn.lock +++ b/extensions/css-language-features/yarn.lock @@ -6,26 +6,33 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-jsonrpc@^3.6.0-next.1: - version "3.6.0-next.1" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0-next.1.tgz#3cb463dffe5842d6aec16718ca9252708cd6aabe" +vscode-jsonrpc@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" -vscode-languageclient@4.0.0-next.9: - version "4.0.0-next.9" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.0.0-next.9.tgz#2a06568f46ee9de3490f85e227d3740a21a03d3a" +vscode-languageclient@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.0.0.tgz#635f5bfbcfa1385dae489b394857f1db8b459a7d" dependencies: - vscode-languageserver-protocol "^3.6.0-next.5" + vscode-languageserver-protocol "^3.6.0" -vscode-languageserver-protocol@^3.6.0-next.5: - version "3.6.0-next.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.6.0-next.5.tgz#ed2ec2db759826f753c0a13977dfb2bedc4d31b3" +vscode-languageserver-protocol-foldingprovider@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" dependencies: - vscode-jsonrpc "^3.6.0-next.1" - vscode-languageserver-types "^3.6.0-next.1" + vscode-languageserver-protocol "^3.6.0" + vscode-languageserver-types "^3.6.0" -vscode-languageserver-types@^3.6.0-next.1: - version "3.6.0-next.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.0-next.1.tgz#98e488d3f87b666b4ee1a3d89f0023e246d358f3" +vscode-languageserver-protocol@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.6.0.tgz#579642cdcccf74b0cd771c33daa3239acb40d040" + dependencies: + vscode-jsonrpc "^3.6.0" + vscode-languageserver-types "^3.6.0" + +vscode-languageserver-types@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.1.tgz#4bc06a48dff653495f12f94b8b1e228988a1748d" vscode-nls@^3.2.1: version "3.2.1" From 398e99dc4e22378320be190ab1c8b12e44e6281d Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 12:12:07 +0200 Subject: [PATCH 0030/1070] debug: introduce breakpoint editor --- .../parts/debug/browser/debugEditorActions.ts | 26 +- .../debug/browser/media/breakpointWidget.css | 24 +- .../electron-browser/breakpointWidget.ts | 257 +++++++++++------- 3 files changed, 164 insertions(+), 143 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugEditorActions.ts b/src/vs/workbench/parts/debug/browser/debugEditorActions.ts index 74b2f2b7c1f..a8342fec394 100644 --- a/src/vs/workbench/parts/debug/browser/debugEditorActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugEditorActions.ts @@ -8,12 +8,11 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; import { Range } from 'vs/editor/common/core/range'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; -import { ServicesAccessor, registerEditorAction, EditorAction, EditorCommand, registerEditorCommand } from 'vs/editor/browser/editorExtensions'; +import { ServicesAccessor, registerEditorAction, EditorAction } from 'vs/editor/browser/editorExtensions'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { IDebugService, CONTEXT_IN_DEBUG_MODE, CONTEXT_NOT_IN_DEBUG_REPL, CONTEXT_DEBUG_STATE, State, REPL_ID, VIEWLET_ID, IDebugEditorContribution, EDITOR_CONTRIBUTION_ID, CONTEXT_BREAKPOINT_WIDGET_VISIBLE, BreakpointWidgetContext } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugService, CONTEXT_IN_DEBUG_MODE, CONTEXT_NOT_IN_DEBUG_REPL, CONTEXT_DEBUG_STATE, State, REPL_ID, VIEWLET_ID, IDebugEditorContribution, EDITOR_CONTRIBUTION_ID, BreakpointWidgetContext } from 'vs/workbench/parts/debug/common/debug'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; -import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; class ToggleBreakpointAction extends EditorAction { @@ -210,26 +209,6 @@ class ShowDebugHoverAction extends EditorAction { } } -class CloseBreakpointWidgetCommand extends EditorCommand { - - constructor() { - super({ - id: 'closeBreakpointWidget', - precondition: CONTEXT_BREAKPOINT_WIDGET_VISIBLE, - kbOpts: { - weight: KeybindingsRegistry.WEIGHT.editorContrib(8), - kbExpr: EditorContextKeys.focus, - primary: KeyCode.Escape, - secondary: [KeyMod.Shift | KeyCode.Escape] - } - }); - } - - public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { - return editor.getContribution(EDITOR_CONTRIBUTION_ID).closeBreakpointWidget(); - } -} - registerEditorAction(ToggleBreakpointAction); registerEditorAction(ConditionalBreakpointAction); registerEditorAction(LogPointAction); @@ -237,4 +216,3 @@ registerEditorAction(RunToCursorAction); registerEditorAction(SelectionToReplAction); registerEditorAction(SelectionToWatchExpressionsAction); registerEditorAction(ShowDebugHoverAction); -registerEditorCommand(new CloseBreakpointWidgetCommand()); diff --git a/src/vs/workbench/parts/debug/browser/media/breakpointWidget.css b/src/vs/workbench/parts/debug/browser/media/breakpointWidget.css index 8d190b91ca0..2efc6078cf7 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpointWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/breakpointWidget.css @@ -16,26 +16,8 @@ padding: 0 10px; } -.monaco-editor .zone-widget .zone-widget-container.breakpoint-widget .inputBoxContainer { +.monaco-editor .zone-widget .zone-widget-container.breakpoint-widget .inputContainer { flex: 1; -} - -.monaco-editor .zone-widget .zone-widget-container.breakpoint-widget .monaco-inputbox { - border: none; -} - -.monaco-editor .breakpoint-widget .input { - font-family: Monaco, Menlo, Consolas, "Droid Sans Mono", "Inconsolata", "Courier New", monospace, "Droid Sans Fallback"; - line-height: 22px; - background-color: transparent; - padding: 8px; -} - -.monaco-workbench.mac .monaco-editor .breakpoint-widget .input { - font-size: 11px; -} - -.monaco-workbench.windows .monaco-editor .breakpoint-widget .input, -.monaco-workbench.linux .monaco-editor .breakpoint-widget .input { - font-size: 13px; + margin-top: 6px; + margin-bottom: 6px; } diff --git a/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts b/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts index 30eb70d4ff6..9d55a58bdc0 100644 --- a/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts +++ b/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts @@ -6,26 +6,37 @@ import 'vs/css!../browser/media/breakpointWidget'; import * as nls from 'vs/nls'; import * as errors from 'vs/base/common/errors'; -import { KeyCode } from 'vs/base/common/keyCodes'; -import { isWindows, isMacintosh } from 'vs/base/common/platform'; +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox'; import * as lifecycle from 'vs/base/common/lifecycle'; import * as dom from 'vs/base/browser/dom'; -import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ZoneWidget } from 'vs/editor/contrib/zoneWidget/zoneWidget'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IDebugService, IBreakpoint, BreakpointWidgetContext as Context } from 'vs/workbench/parts/debug/common/debug'; -import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { once } from 'vs/base/common/functional'; -import { attachInputBoxStyler, attachSelectBoxStyler } from 'vs/platform/theme/common/styler'; +import { IDebugService, IBreakpoint, BreakpointWidgetContext as Context, CONTEXT_BREAKPOINT_WIDGET_VISIBLE, DEBUG_SCHEME, IDebugEditorContribution, EDITOR_CONTRIBUTION_ID } from 'vs/workbench/parts/debug/common/debug'; +import { attachSelectBoxStyler } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { SimpleDebugEditor } from 'vs/workbench/parts/debug/electron-browser/simpleDebugEditor'; +import { createDecorator, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection'; +import { ServicesAccessor, EditorCommand, registerEditorCommand } from 'vs/editor/browser/editorExtensions'; +import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; +import { IModelService } from 'vs/editor/common/services/modelService'; +import uri from 'vs/base/common/uri'; const $ = dom.$; +const IPrivateBreakopintWidgetService = createDecorator('privateBreakopintWidgetService'); +export interface IPrivateBreakopintWidgetService { + _serviceBrand: any; + close(success: boolean): void; +} -export class BreakpointWidget extends ZoneWidget { +export class BreakpointWidget extends ZoneWidget implements IPrivateBreakopintWidgetService { + public _serviceBrand: any; - private inputBox: InputBox; + private selectContainer: HTMLElement; + private input: SimpleDebugEditor; private toDispose: lifecycle.IDisposable[]; private conditionInput = ''; private hitCountInput = ''; @@ -35,7 +46,10 @@ export class BreakpointWidget extends ZoneWidget { constructor(editor: ICodeEditor, private lineNumber: number, private column: number, private context: Context, @IContextViewService private contextViewService: IContextViewService, @IDebugService private debugService: IDebugService, - @IThemeService private themeService: IThemeService + @IThemeService private themeService: IThemeService, + @IContextKeyService private contextKeyService: IContextKeyService, + @IInstantiationService private instantiationService: IInstantiationService, + @IModelService private modelService: IModelService ) { super(editor, { showFrame: true, showArrow: false, frameWidth: 1 }); @@ -61,27 +75,28 @@ export class BreakpointWidget extends ZoneWidget { this.create(); } - private get placeholder(): string { - switch (this.context) { - case Context.LOG_MESSAGE: - return nls.localize('breakpointWidgetLogMessagePlaceholder', "Message to log when breakpoint is hit. 'Enter' to accept, 'esc' to cancel."); - case Context.HIT_COUNT: - return nls.localize('breakpointWidgetHitCountPlaceholder', "Break when hit count condition is met. 'Enter' to accept, 'esc' to cancel."); - default: - return nls.localize('breakpointWidgetExpressionPlaceholder', "Break when expression evaluates to true. 'Enter' to accept, 'esc' to cancel."); - } - } + // TODO@Isidor integrate placeholder and ariaLabel + // private get placeholder(): string { + // switch (this.context) { + // case Context.LOG_MESSAGE: + // return nls.localize('breakpointWidgetLogMessagePlaceholder', "Message to log when breakpoint is hit. 'Enter' to accept, 'esc' to cancel."); + // case Context.HIT_COUNT: + // return nls.localize('breakpointWidgetHitCountPlaceholder', "Break when hit count condition is met. 'Enter' to accept, 'esc' to cancel."); + // default: + // return nls.localize('breakpointWidgetExpressionPlaceholder', "Break when expression evaluates to true. 'Enter' to accept, 'esc' to cancel."); + // } + // } - private get ariaLabel(): string { - switch (this.context) { - case Context.LOG_MESSAGE: - return nls.localize('breakpointWidgetLogMessageAriaLabel', "The program will log this message everytime this breakpoint is hit. Press Enter to accept or Escape to cancel."); - case Context.HIT_COUNT: - return nls.localize('breakpointWidgetHitCountAriaLabel', "The program will only stop here if the hit count is met. Press Enter to accept or Escape to cancel."); - default: - return nls.localize('breakpointWidgetAriaLabel', "The program will only stop here if this condition is true. Press Enter to accept or Escape to cancel."); - } - } + // private get ariaLabel(): string { + // switch (this.context) { + // case Context.LOG_MESSAGE: + // return nls.localize('breakpointWidgetLogMessageAriaLabel', "The program will log this message everytime this breakpoint is hit. Press Enter to accept or Escape to cancel."); + // case Context.HIT_COUNT: + // return nls.localize('breakpointWidgetHitCountAriaLabel', "The program will only stop here if the hit count is met. Press Enter to accept or Escape to cancel."); + // default: + // return nls.localize('breakpointWidgetAriaLabel', "The program will only stop here if this condition is true. Press Enter to accept or Escape to cancel."); + // } + // } private getInputValue(breakpoint: IBreakpoint): string { switch (this.context) { @@ -95,15 +110,16 @@ export class BreakpointWidget extends ZoneWidget { } private rememberInput(): void { + const value = this.input.getModel().getValue(); switch (this.context) { case Context.LOG_MESSAGE: - this.logMessageInput = this.inputBox.value; + this.logMessageInput = value; break; case Context.HIT_COUNT: - this.hitCountInput = this.inputBox.value; + this.hitCountInput = value; break; default: - this.conditionInput = this.inputBox.value; + this.conditionInput = value; } } @@ -111,89 +127,134 @@ export class BreakpointWidget extends ZoneWidget { this.setCssClass('breakpoint-widget'); const selectBox = new SelectBox([nls.localize('expression', "Expression"), nls.localize('hitCount', "Hit Count"), nls.localize('logMessage', "Log Message")], this.context, this.contextViewService); this.toDispose.push(attachSelectBoxStyler(selectBox, this.themeService)); - selectBox.render(dom.append(container, $('.breakpoint-select-container'))); + this.selectContainer = $('.breakpoint-select-container'); + selectBox.render(dom.append(container, this.selectContainer)); selectBox.onDidSelect(e => { this.rememberInput(); this.context = e.index; - this.inputBox.setAriaLabel(this.ariaLabel); - this.inputBox.setPlaceHolder(this.placeholder); - this.inputBox.value = this.getInputValue(this.breakpoint); + this.input.getModel().setValue(this.getInputValue(this.breakpoint)); }); - const inputBoxContainer = dom.append(container, $('.inputBoxContainer')); - this.inputBox = new InputBox(inputBoxContainer, this.contextViewService, { - placeholder: this.placeholder, - ariaLabel: this.ariaLabel - }); - this.toDispose.push(attachInputBoxStyler(this.inputBox, this.themeService)); - this.toDispose.push(this.inputBox); + this.createBreakpointInput(dom.append(container, $('.inputContainer'))); - dom.addClass(this.inputBox.inputElement, isWindows ? 'windows' : isMacintosh ? 'mac' : 'linux'); - this.inputBox.value = this.getInputValue(this.breakpoint); + this.input.getModel().setValue(this.getInputValue(this.breakpoint)); // Due to an electron bug we have to do the timeout, otherwise we do not get focus - setTimeout(() => this.inputBox.focus(), 0); + setTimeout(() => this.input.focus(), 50); + } - let disposed = false; - const wrapUp = once((success: boolean) => { - if (!disposed) { - disposed = true; - if (success) { - // if there is already a breakpoint on this location - remove it. + public close(success: boolean): void { + // TODO@isidor check if we should check the disposed check + if (success) { + // if there is already a breakpoint on this location - remove it. - let condition = this.breakpoint && this.breakpoint.condition; - let hitCondition = this.breakpoint && this.breakpoint.hitCondition; - let logMessage = this.breakpoint && this.breakpoint.logMessage; - this.rememberInput(); + let condition = this.breakpoint && this.breakpoint.condition; + let hitCondition = this.breakpoint && this.breakpoint.hitCondition; + let logMessage = this.breakpoint && this.breakpoint.logMessage; + this.rememberInput(); - if (this.conditionInput) { - condition = this.conditionInput; - } - if (this.hitCountInput) { - hitCondition = this.hitCountInput; - } - if (this.logMessageInput) { - logMessage = this.logMessageInput; - } - - if (this.breakpoint) { - this.debugService.updateBreakpoints(this.breakpoint.uri, { - [this.breakpoint.getId()]: { - condition, - hitCondition, - verified: this.breakpoint.verified, - logMessage - } - }, false); - } else { - this.debugService.addBreakpoints(this.editor.getModel().uri, [{ - lineNumber: this.lineNumber, - column: this.breakpoint ? this.breakpoint.column : undefined, - enabled: true, - condition, - hitCondition, - logMessage - }]).done(null, errors.onUnexpectedError); - } - } - - this.dispose(); + if (this.conditionInput) { + condition = this.conditionInput; } - }); - - this.toDispose.push(dom.addStandardDisposableListener(this.inputBox.inputElement, 'keydown', (e: IKeyboardEvent) => { - const isEscape = e.equals(KeyCode.Escape); - const isEnter = e.equals(KeyCode.Enter); - if (isEscape || isEnter) { - e.stopPropagation(); - wrapUp(isEnter); + if (this.hitCountInput) { + hitCondition = this.hitCountInput; } - })); + if (this.logMessageInput) { + logMessage = this.logMessageInput; + } + + if (this.breakpoint) { + this.debugService.updateBreakpoints(this.breakpoint.uri, { + [this.breakpoint.getId()]: { + condition, + hitCondition, + verified: this.breakpoint.verified, + logMessage + } + }, false); + } else { + this.debugService.addBreakpoints(this.editor.getModel().uri, [{ + lineNumber: this.lineNumber, + column: this.breakpoint ? this.breakpoint.column : undefined, + enabled: true, + condition, + hitCondition, + logMessage + }]).done(null, errors.onUnexpectedError); + } + } + + this.dispose(); + } + + protected _doLayout(heightInPixel: number, widthInPixel: number): void { + this.input.layout({ height: 18, width: widthInPixel - 133 }); + } + + private createBreakpointInput(container: HTMLElement): void { + const scopedContextKeyService = this.contextKeyService.createScoped(container); + this.toDispose.push(scopedContextKeyService); + + const scopedInstatiationService = this.instantiationService.createChild(new ServiceCollection( + [IContextKeyService, scopedContextKeyService], [IPrivateBreakopintWidgetService, this])); + + const options = SimpleDebugEditor.getEditorOptions(); + this.input = scopedInstatiationService.createInstance(SimpleDebugEditor, container, options); + const model = this.modelService.createModel('', null, uri.parse(`${DEBUG_SCHEME}:breakpointinput`), true); + this.input.setModel(model); + this.toDispose.push(model); } public dispose(): void { super.dispose(); + this.input.dispose(); lifecycle.dispose(this.toDispose); setTimeout(() => this.editor.focus(), 0); } } + +class AcceptBreakpointWidgetInputAction extends EditorCommand { + + constructor() { + super({ + id: 'breakpointWidget.action.acceptInput', + precondition: CONTEXT_BREAKPOINT_WIDGET_VISIBLE, // TODO@Isidor need a more specific context key if breakpoint widget is focused + kbOpts: { + kbExpr: EditorContextKeys.textInputFocus, + primary: KeyCode.Enter + } + }); + } + + public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor): void { + accessor.get(IPrivateBreakopintWidgetService).close(true); + } +} + +class CloseBreakpointWidgetCommand extends EditorCommand { + + constructor() { + super({ + id: 'closeBreakpointWidget', + precondition: CONTEXT_BREAKPOINT_WIDGET_VISIBLE, + kbOpts: { + kbExpr: EditorContextKeys.textInputFocus, + primary: KeyCode.Escape, + secondary: [KeyMod.Shift | KeyCode.Escape] + } + }); + } + + public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { + const debugContribution = editor.getContribution(EDITOR_CONTRIBUTION_ID); + if (debugContribution) { + // if focus is in outer editor we need to use the debug contribution to close + return debugContribution.closeBreakpointWidget(); + } + + accessor.get(IPrivateBreakopintWidgetService).close(false); + } +} + +registerEditorCommand(new AcceptBreakpointWidgetInputAction()); +registerEditorCommand(new CloseBreakpointWidgetCommand()); From addd44d6b845348bfa7d65106b40f5692bb7b3fa Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 26 Mar 2018 12:43:10 +0200 Subject: [PATCH 0031/1070] simplified resolve rename location proposal, #7340 --- src/vs/editor/common/modes.ts | 8 +--- src/vs/editor/contrib/rename/rename.ts | 42 +++++++++---------- src/vs/monaco.d.ts | 8 +--- src/vs/vscode.proposed.d.ts | 10 +---- .../mainThreadLanguageFeatures.ts | 4 +- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- .../api/node/extHostLanguageFeatures.ts | 16 +++---- 7 files changed, 32 insertions(+), 58 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 6d7f7468e84..64bac6dd228 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -924,15 +924,9 @@ export interface WorkspaceEdit { rejectReason?: string; // TODO@joh, move to rename } -export interface RenameContext { - range: IRange; - text: string; - message?: string; -} - export interface RenameProvider { provideRenameEdits(model: model.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable; - resolveRenameLocation?(model: model.ITextModel, position: Position, token: CancellationToken): RenameContext | Thenable; + resolveRenameLocation?(model: model.ITextModel, position: Position, token: CancellationToken): IRange | Thenable; } diff --git a/src/vs/editor/contrib/rename/rename.ts b/src/vs/editor/contrib/rename/rename.ts index 70341d1b55e..9cbe4844aa5 100644 --- a/src/vs/editor/contrib/rename/rename.ts +++ b/src/vs/editor/contrib/rename/rename.ts @@ -23,10 +23,10 @@ import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { optional } from 'vs/platform/instantiation/common/instantiation'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { asWinJsPromise } from 'vs/base/common/async'; -import { WorkspaceEdit, RenameProviderRegistry, RenameContext, RenameProvider } from 'vs/editor/common/modes'; +import { WorkspaceEdit, RenameProviderRegistry, RenameProvider } from 'vs/editor/common/modes'; import { Position } from 'vs/editor/common/core/position'; import { alert } from 'vs/base/browser/ui/aria/aria'; -import { Range } from 'vs/editor/common/core/range'; +import { Range, IRange } from 'vs/editor/common/core/range'; import { MessageController } from 'vs/editor/contrib/message/messageController'; import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; @@ -47,26 +47,23 @@ class RenameSkeleton { return this._provider.length > 0; } - async resolveRenameInformation(): TPromise { + async resolveRenameLocation(): TPromise { let [provider] = this._provider; - let information: RenameContext; + let range: IRange; if (provider.resolveRenameLocation) { - information = await asWinJsPromise(token => provider.resolveRenameLocation(this.model, this.position, token)); + range = await asWinJsPromise(token => provider.resolveRenameLocation(this.model, this.position, token)); } - if (!information) { + if (!range) { let word = this.model.getWordAtPosition(this.position); if (word) { - information = { - range: new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn), - text: word.word - }; + range = new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn); } } - return information; + return range; } async provideRenameEdits(newName: string, i: number = 0, rejects: string[] = []): TPromise { @@ -134,27 +131,26 @@ class RenameController implements IEditorContribution { const position = this.editor.getPosition(); const skeleton = new RenameSkeleton(this.editor.getModel(), position); - let context = await skeleton.resolveRenameInformation(); - if (!context) { - return undefined; - } - - if (context.message) { - MessageController.get(this.editor).showMessage(context.message, position); + let range: IRange; + try { + range = await skeleton.resolveRenameLocation(); + } catch (e) { + MessageController.get(this.editor).showMessage(e, position); return undefined; } + let text = this.editor.getModel().getValueInRange(range); let selection = this.editor.getSelection(); let selectionStart = 0; - let selectionEnd = context.text.length; + let selectionEnd = text.length; if (!selection.isEmpty() && selection.startLineNumber === selection.endLineNumber) { - selectionStart = Math.max(0, selection.startColumn - context.range.startColumn); - selectionEnd = Math.min(context.range.endColumn, selection.endColumn) - context.range.startColumn; + selectionStart = Math.max(0, selection.startColumn - range.startColumn); + selectionEnd = Math.min(range.endColumn, selection.endColumn) - range.startColumn; } this._renameInputVisible.set(true); - return this._renameInputField.getInput(Range.lift(context.range), context.text, selectionStart, selectionEnd).then(newNameOrFocusFlag => { + return this._renameInputField.getInput(Range.lift(range), text, selectionStart, selectionEnd).then(newNameOrFocusFlag => { this._renameInputVisible.reset(); if (typeof newNameOrFocusFlag === 'boolean') { @@ -185,7 +181,7 @@ class RenameController implements IEditorContribution { this.editor.setSelection(selection); } // alert - alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", context.text, newNameOrFocusFlag, edit.ariaMessage())); + alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", text, newNameOrFocusFlag, edit.ariaMessage())); }); }, err => { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index e153cfedbaa..dd91585c691 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -4986,15 +4986,9 @@ declare namespace monaco.languages { rejectReason?: string; } - export interface RenameContext { - range: IRange; - text: string; - message?: string; - } - export interface RenameProvider { provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable; - resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): RenameContext | Thenable; + resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): IRange | Thenable; } export interface Command { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 28b6923f3fa..88e7c568499 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -439,12 +439,6 @@ declare module 'vscode' { //#region Joh: rename context - export interface RenameContext { - range?: Range; - newName?: string; - message?: string; - } - export interface RenameProvider2 extends RenameProvider { /** @@ -454,9 +448,9 @@ declare module 'vscode' { * @param document The document in which rename will be invoked. * @param position The position at which rename will be invoked. * @param token A cancellation token. - * @return A `RenameContext` with more information. The lack of a result can signaled by returning `undefined` or `null`. + * @return The range of the identifier that is to be renamed. The lack of a result can signaled by returning `undefined` or `null`. */ - resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; } diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index c4c01b90d41..35563ae6dbc 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -13,7 +13,7 @@ import { WorkspaceSymbolProviderRegistry, IWorkspaceSymbolProvider } from 'vs/wo import { wireCancellationToken } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Position as EditorPosition } from 'vs/editor/common/core/position'; -import { Range as EditorRange } from 'vs/editor/common/core/range'; +import { Range as EditorRange, IRange } from 'vs/editor/common/core/range'; import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto, ISerializedDocumentFilter } from '../node/extHost.protocol'; import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration'; @@ -257,7 +257,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha return wireCancellationToken(token, this._proxy.$provideRenameEdits(handle, model.uri, position, newName)).then(reviveWorkspaceEditDto); }, resolveRenameLocation: supportResolveLocation - ? (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => wireCancellationToken(token, this._proxy.$resolveRenameLocation(handle, model.uri, position)) + ? (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => wireCancellationToken(token, this._proxy.$resolveRenameLocation(handle, model.uri, position)) : undefined }); } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 6e33c3e8955..80cf86ea2e9 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -700,7 +700,7 @@ export interface ExtHostLanguageFeaturesShape { $resolveWorkspaceSymbol(handle: number, symbol: SymbolInformationDto): TPromise; $releaseWorkspaceSymbols(handle: number, id: number): void; $provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string): TPromise; - $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise; + $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise; $provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext): TPromise; $resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion): TPromise; $releaseCompletionItems(handle: number, id: number): void; diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 25ae4ba089a..cb69eb21452 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -506,7 +506,7 @@ class RenameAdapter { }); } - resolveRenameLocation(resource: URI, position: IPosition): TPromise { + resolveRenameLocation(resource: URI, position: IPosition): TPromise { if (typeof this._provider.resolveRenameLocation !== 'function') { return TPromise.as(undefined); } @@ -514,23 +514,19 @@ class RenameAdapter { let doc = this._documents.getDocumentData(resource).document; let pos = TypeConverters.toPosition(position); - return asWinJsPromise(token => this._provider.resolveRenameLocation(doc, pos, token)).then(context => { - if (!context) { + return asWinJsPromise(token => this._provider.resolveRenameLocation(doc, pos, token)).then(range => { + if (!range) { return undefined; } - if (context.range && (!context.range.isSingleLine || context.range.start.line !== pos.line)) { + if (range && (!range.isSingleLine || range.start.line !== pos.line)) { console.warn('INVALID rename context, range must be single line and on the same line'); return undefined; } - return { - range: TypeConverters.fromRange(context.range), - text: context.newName || doc.getText(context.range) - }; + return TypeConverters.fromRange(range); }); } } - class SuggestAdapter { static supportsResolving(provider: vscode.CompletionItemProvider): boolean { @@ -1092,7 +1088,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._withAdapter(handle, RenameAdapter, adapter => adapter.provideRenameEdits(URI.revive(resource), position, newName)); } - $resolveRenameLocation(handle: number, resource: URI, position: IPosition): TPromise { + $resolveRenameLocation(handle: number, resource: URI, position: IPosition): TPromise { return this._withAdapter(handle, RenameAdapter, adapter => adapter.resolveRenameLocation(resource, position)); } From 6103914e194521de5c9bc19906713a34fc4f9ea5 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 26 Mar 2018 13:43:33 +0200 Subject: [PATCH 0032/1070] pass on resolved range when calling rename, #7340 --- src/vs/editor/contrib/rename/rename.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/rename/rename.ts b/src/vs/editor/contrib/rename/rename.ts index 9cbe4844aa5..718e5cc9dbc 100644 --- a/src/vs/editor/contrib/rename/rename.ts +++ b/src/vs/editor/contrib/rename/rename.ts @@ -66,7 +66,7 @@ class RenameSkeleton { return range; } - async provideRenameEdits(newName: string, i: number = 0, rejects: string[] = []): TPromise { + async provideRenameEdits(newName: string, i: number = 0, rejects: string[] = [], position: Position = this.position): TPromise { if (i >= this._provider.length) { return { @@ -165,7 +165,7 @@ class RenameController implements IEditorContribution { const edit = new BulkEdit(this.editor, null, this._textModelResolverService, this._fileService); const state = new EditorState(this.editor, CodeEditorStateFlag.Position | CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection | CodeEditorStateFlag.Scroll); - const renameOperation = skeleton.provideRenameEdits(newNameOrFocusFlag).then(result => { + const renameOperation = skeleton.provideRenameEdits(newNameOrFocusFlag, 0, [], Range.lift(range).getStartPosition()).then(result => { if (result.rejectReason) { if (state.validate(this.editor)) { MessageController.get(this.editor).showMessage(result.rejectReason, this.editor.getPosition()); From d54bbf4e53e580080be649c37a6c43cdac390b9f Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 26 Mar 2018 13:48:50 +0200 Subject: [PATCH 0033/1070] Revert "fix: change default keybinding of cursorColumnSelectUp to ctrl+shift+up on Windows" This reverts commit 8fea388c71d9698774552fb5eb7b9aee18a15e70. --- src/vs/editor/browser/controller/coreCommands.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index ef8286b4824..9c2f797ec84 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -377,7 +377,7 @@ export namespace CoreNavigationCommands { kbOpts: { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow, + primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow, linux: { primary: 0 } } })); @@ -415,7 +415,7 @@ export namespace CoreNavigationCommands { kbOpts: { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow, + primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow, linux: { primary: 0 } } })); @@ -587,6 +587,7 @@ export namespace CoreNavigationCommands { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textInputFocus, primary: KeyMod.Shift | KeyCode.UpArrow, + secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow], mac: { primary: KeyMod.Shift | KeyCode.UpArrow }, linux: { primary: KeyMod.Shift | KeyCode.UpArrow } } @@ -654,6 +655,7 @@ export namespace CoreNavigationCommands { weight: CORE_WEIGHT, kbExpr: EditorContextKeys.textInputFocus, primary: KeyMod.Shift | KeyCode.DownArrow, + secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow], mac: { primary: KeyMod.Shift | KeyCode.DownArrow }, linux: { primary: KeyMod.Shift | KeyCode.DownArrow } } From 3afb2b72acb774fd92ed186ec96525648d762414 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 26 Mar 2018 13:56:12 +0200 Subject: [PATCH 0034/1070] [docker] fix OSSReadme --- extensions/docker/OSSREADME.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/docker/OSSREADME.json b/extensions/docker/OSSREADME.json index 28c0191ec17..bc514d5d8b4 100644 --- a/extensions/docker/OSSREADME.json +++ b/extensions/docker/OSSREADME.json @@ -4,5 +4,5 @@ "version": "0.0.0", "license": "Apache2", "repositoryURL": "https://github.com/moby/moby", - "description": "The file syntaxes/Dockerfile.tmLanguage was included from https://github.com/moby/moby/blob/master/contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage." + "description": "The file syntaxes/docker.tmLanguage was included from https://github.com/moby/moby/blob/master/contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage." }] From 2a95ea2311ebc7f3cc0785fcb35085f675d18c3b Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 26 Mar 2018 14:05:16 +0200 Subject: [PATCH 0035/1070] [css] update service --- extensions/css-language-features/server/package.json | 2 +- extensions/css-language-features/server/yarn.lock | 6 +++--- extensions/css-language-features/yarn.lock | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 5f529afffc2..80e01d5d01d 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,7 +8,7 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.1", + "vscode-css-languageservice": "^3.0.9-next.2", "vscode-emmet-helper": "^1.2.0", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^1.0.1" diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 776c26b3c20..1d6de3987f7 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -18,9 +18,9 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-css-languageservice@^3.0.9-next.1: - version "3.0.9-next.1" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.1.tgz#92319b641a7624e84950aef2c55e5b4db001ff9a" +vscode-css-languageservice@^3.0.9-next.2: + version "3.0.9-next.2" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.2.tgz#04f28bd0dc83be8668375ce9640640287e26b05c" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock index 01759bb4952..7b01c6fe5ce 100644 --- a/extensions/css-language-features/yarn.lock +++ b/extensions/css-language-features/yarn.lock @@ -10,7 +10,7 @@ vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" -vscode-languageclient@4.0.0: +vscode-languageclient@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.0.0.tgz#635f5bfbcfa1385dae489b394857f1db8b459a7d" dependencies: From 0f4f7dbc3d2a125f1c6df85a14b10faa646ae18d Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 14:18:46 +0200 Subject: [PATCH 0036/1070] fix tests --- .../electron-browser/configurationResolverService.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts b/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts index ddbc43f5c6d..fe2ba2d40dd 100644 --- a/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts +++ b/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts @@ -86,7 +86,7 @@ suite('Configuration Resolver Service', () => { if (platform.isWindows) { assert.strictEqual(configurationResolverService.resolve(workspace, '${env:key1} - ${env:Key1}'), 'Value for key1 - Value for key1'); } else { - assert.strictEqual(configurationResolverService.resolve(workspace, '${env:key1} - ${env:Key1}'), 'Value for key1 - ${env:Key1}'); + assert.strictEqual(configurationResolverService.resolve(workspace, '${env:key1} - ${env:Key1}'), 'Value for key1 - '); } }); @@ -216,7 +216,7 @@ suite('Configuration Resolver Service', () => { let service = new ConfigurationResolverService(envVariables, new TestEditorService(), TestEnvironmentService, configurationService, mockCommandService, new TestContextService()); assert.strictEqual(service.resolve(workspace, 'abc ${invalidVariable} xyz'), 'abc ${invalidVariable} xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${env:invalidVariable} xyz'), 'abc ${env:invalidVariable} xyz'); + assert.strictEqual(service.resolve(workspace, 'abc ${env:invalidVariable} xyz'), 'abc xyz'); assert.strictEqual(service.resolve(workspace, 'abc ${config:editor.abc.def} xyz'), 'abc ${config:editor.abc.def} xyz'); assert.strictEqual(service.resolve(workspace, 'abc ${config:panel.abc} xyz'), 'abc ${config:panel.abc} xyz'); }); From efa187df42d0aa72902f54359de011bc4514dee6 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 14:24:47 +0200 Subject: [PATCH 0037/1070] explorer model: do not use paths.isEqual --- src/vs/workbench/parts/files/common/explorerModel.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index 4634e685b8b..b6aa416ef81 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -17,7 +17,7 @@ import { IEditorGroup, toResource, IEditorIdentifier } from 'vs/workbench/common import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { getPathLabel } from 'vs/base/common/labels'; import { Schemas } from 'vs/base/common/network'; -import { startsWith, beginsWithIgnoreCase } from 'vs/base/common/strings'; +import { startsWith, beginsWithIgnoreCase, equalsIgnoreCase } from 'vs/base/common/strings'; export class Model { @@ -325,7 +325,10 @@ export class ExplorerItem { } private findByPath(path: string, index: number): ExplorerItem { - if (paths.isEqual(this.resource.path, path, !isLinux)) { + if (this.resource.path === path) { + return this; + } + if (!isLinux && equalsIgnoreCase(this.resource.path, path)) { return this; } From 82b1df61059a8b64a62c42cc62211ce503277e88 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 26 Mar 2018 14:33:51 +0200 Subject: [PATCH 0038/1070] Avoid CSS variables for IE11 (#46029) --- src/vs/editor/browser/viewParts/indentGuides/indentGuides.css | 2 -- src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts | 2 +- src/vs/editor/browser/viewParts/rulers/rulers.css | 2 -- src/vs/editor/browser/viewParts/rulers/rulers.ts | 2 +- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css index d2785cebd6b..45992137d18 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css @@ -9,6 +9,4 @@ */ .monaco-editor .lines-content .cigr { position: absolute; - --box-shadow-color: rgba(0, 0, 0, 0); - box-shadow: 1px 0 0 0 var(--box-shadow-color) inset; } diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts index 608456fc4ab..b8ad9dadd68 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts @@ -130,6 +130,6 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { registerThemingParticipant((theme, collector) => { let editorGuideColor = theme.getColor(editorIndentGuides); if (editorGuideColor) { - collector.addRule(`.monaco-editor .lines-content .cigr { --box-shadow-color: ${editorGuideColor}; }`); + collector.addRule(`.monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ${editorGuideColor} inset; }`); } }); diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.css b/src/vs/editor/browser/viewParts/rulers/rulers.css index 30bb66bddd3..d3d2d26ec95 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.css +++ b/src/vs/editor/browser/viewParts/rulers/rulers.css @@ -6,6 +6,4 @@ .monaco-editor .view-ruler { position: absolute; top: 0; - --box-shadow-color: rgba(0, 0, 0, 0); - box-shadow: 1px 0 0 0 var(--box-shadow-color) inset; } \ No newline at end of file diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.ts b/src/vs/editor/browser/viewParts/rulers/rulers.ts index 49779199cff..bac590e8174 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.ts +++ b/src/vs/editor/browser/viewParts/rulers/rulers.ts @@ -103,6 +103,6 @@ export class Rulers extends ViewPart { registerThemingParticipant((theme, collector) => { let rulerColor = theme.getColor(editorRuler); if (rulerColor) { - collector.addRule(`.monaco-editor .view-ruler { --box-shadow-color: ${rulerColor}; }`); + collector.addRule(`.monaco-editor .view-ruler { box-shadow: 1px 0 0 0 ${rulerColor} inset; }`); } }); From f07d765c00566ec4825bae8f8fe4dda0bf0208bd Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 15:06:14 +0200 Subject: [PATCH 0039/1070] build on our own machines --- build/tfs/product-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 5becec89bca..31246d3c9cd 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -225,7 +225,7 @@ phases: - phase: Linux condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') queue: - name: Hosted Linux Preview + name: linux-x64 parallel: 2 matrix: x64: From 998c5c223bf746f540466d0ed59c1df12006d688 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 15:15:51 +0200 Subject: [PATCH 0040/1070] build --- build/tfs/product-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 31246d3c9cd..143fa8afee9 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -230,8 +230,8 @@ phases: matrix: x64: VSCODE_ARCH: x64 - ia32: - VSCODE_ARCH: ia32 + # ia32: + # VSCODE_ARCH: ia32 steps: - script: | From bd3bcdc5e610f099ca49c7e159c657879df56370 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 26 Mar 2018 15:18:39 +0200 Subject: [PATCH 0041/1070] fix #46442 --- src/vs/editor/contrib/gotoError/gotoError.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/gotoError/gotoError.ts b/src/vs/editor/contrib/gotoError/gotoError.ts index 06c17fa4a3a..64d181d155e 100644 --- a/src/vs/editor/contrib/gotoError/gotoError.ts +++ b/src/vs/editor/contrib/gotoError/gotoError.ts @@ -276,7 +276,7 @@ class MarkerController implements editorCommon.IEditorContribution { private _getMarkers(): IMarker[] { return this._markerService.read({ resource: this._editor.getModel().uri, - severities: MarkerSeverity.Error | MarkerSeverity.Warning + severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info }); } } @@ -306,7 +306,7 @@ class MarkerNavigationAction extends EditorAction { } // try with the next/prev file - let markers = markerService.read({ severities: MarkerSeverity.Error | MarkerSeverity.Warning }).sort(MarkerNavigationAction.compareMarker); + let markers = markerService.read({ severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info }).sort(MarkerNavigationAction.compareMarker); if (markers.length === 0) { return undefined; } From def1582d50aa72a780b88b9dcd89aea11528dc77 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 15:27:32 +0200 Subject: [PATCH 0042/1070] enable 32 bits --- build/tfs/product-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 143fa8afee9..31246d3c9cd 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -230,8 +230,8 @@ phases: matrix: x64: VSCODE_ARCH: x64 - # ia32: - # VSCODE_ARCH: ia32 + ia32: + VSCODE_ARCH: ia32 steps: - script: | From 22b1521ad5fc309c9fb7635c273d5a929c31b252 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 15:55:30 +0200 Subject: [PATCH 0043/1070] linux builds --- build/tfs/product-build.yml | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 31246d3c9cd..4d280a85cff 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -230,6 +230,120 @@ phases: matrix: x64: VSCODE_ARCH: x64 + # ia32: + # VSCODE_ARCH: ia32 + + steps: + - script: | + # dependencies + dpkg --add-architecture i386 + apt-get update + + DEPS=" \ + gcc-multilib g++-multilib \ + pkg-config \ + dbus \ + xvfb \ + fakeroot \ + bc \ + bsdmainutils \ + rpm \ + " + + if [[ "$(VSCODE_ARCH)" == "x64" ]]; then + DEPS="$DEPS \ + dpkg-dev \ + libgconf-2-4 \ + libnss3 \ + libasound2 \ + libxtst6 \ + libx11-dev \ + libxkbfile-dev \ + libxss1 \ + libx11-xcb-dev \ + libsecret-1-dev \ + " + else + DEPS="$DEPS \ + dpkg-dev:i386 \ + libgconf-2-4:i386 \ + libnss3:i386 \ + libasound2:i386 \ + libxtst6:i386 \ + libnotify4:i386 \ + libx11-dev:i386 \ + libxkbfile-dev:i386 \ + libxss1:i386 \ + libx11-xcb-dev:i386 \ + libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 \ + libgirepository-1.0-1:i386 \ + gir1.2-glib-2.0:i386 \ + gir1.2-secret-1:i386 \ + libsecret-1-dev:i386 \ + libgtk2.0-0:i386 \ + " + fi + + apt-get install -y $DEPS + + # setup xvfb + cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb + chmod +x /etc/init.d/xvfb + update-rc.d xvfb defaults + service xvfb start + + # setup dbus + ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon + service dbus start + + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + + - script: | + export npm_config_arch="$(VSCODE_ARCH)" + if [[ "$(VSCODE_ARCH)" == "ia32" ]]; then + export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" + fi + + echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin + node build/tfs/common/installDistro.js + + - script: | + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min + name: build + + - script: | + npm run gulp -- "electron-$(VSCODE_ARCH)" + DISPLAY=:10 ./scripts/test.sh --build --tfs + name: test + + - script: | + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" + #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" + + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ + ./build/tfs/linux/release2.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" + +- phase: Linux + condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') + queue: + name: linux-ia32 + parallel: 2 + matrix: + # x64: + # VSCODE_ARCH: x64 ia32: VSCODE_ARCH: ia32 From 79e0dd3ef879abbfaa7f3ea976ace5dc558dd24a Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 16:02:46 +0200 Subject: [PATCH 0044/1070] linux build --- build/tfs/product-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 4d280a85cff..ffa155423bb 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -336,7 +336,7 @@ phases: MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ ./build/tfs/linux/release2.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" -- phase: Linux +- phase: Linux32 condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') queue: name: linux-ia32 From 437f5cf9c2c5c355da9a1ca822e4bad9508a0452 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 26 Mar 2018 07:03:39 -0700 Subject: [PATCH 0045/1070] Polish command tracking, fix mac keybinding Part of #45435 --- .../parts/terminal/common/terminal.ts | 4 ++-- .../electron-browser/terminal.contribution.ts | 18 +++++++++--------- .../electron-browser/terminalActions.ts | 16 ++++++++-------- .../terminal/node/terminalCommandTracker.ts | 9 ++++----- 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 62dc8f0a702..ac926fbdf81 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -448,8 +448,8 @@ export interface ITerminalInstance { } export interface ITerminalCommandTracker { - focusPreviousCommand(): void; - focusNextCommand(): void; + scrollToPreviousCommand(): void; + scrollToNextCommand(): void; selectToPreviousCommand(): void; selectToNextCommand(): void; } \ No newline at end of file diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index 036f94033e1..cb8d09e8f02 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -18,7 +18,7 @@ import { getTerminalDefaultShellUnixLike, getTerminalDefaultShellWindows } from import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { KillTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, CreateNewInActiveWorkspaceTerminalAction, FocusActiveTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, SelectDefaultShellWindowsTerminalAction, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction, AllowWorkspaceShellTerminalCommand, DisallowWorkspaceShellTerminalCommand, RenameTerminalAction, SelectAllTerminalAction, FocusTerminalFindWidgetAction, HideTerminalFindWidgetAction, ShowNextFindTermTerminalFindWidgetAction, ShowPreviousFindTermTerminalFindWidgetAction, DeleteWordLeftTerminalAction, DeleteWordRightTerminalAction, QuickOpenActionTermContributor, QuickOpenTermAction, TERMINAL_PICKER_PREFIX, MoveToLineStartTerminalAction, MoveToLineEndTerminalAction, SplitTerminalAction, FocusPreviousPaneTerminalAction, FocusNextPaneTerminalAction, ResizePaneLeftTerminalAction, ResizePaneRightTerminalAction, ResizePaneUpTerminalAction, ResizePaneDownTerminalAction, FocusPreviousCommandAction, FocusNextCommandAction, SelectToPreviousCommandAction, SelectToNextCommandAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions'; +import { KillTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, CreateNewInActiveWorkspaceTerminalAction, FocusActiveTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, SelectDefaultShellWindowsTerminalAction, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction, AllowWorkspaceShellTerminalCommand, DisallowWorkspaceShellTerminalCommand, RenameTerminalAction, SelectAllTerminalAction, FocusTerminalFindWidgetAction, HideTerminalFindWidgetAction, ShowNextFindTermTerminalFindWidgetAction, ShowPreviousFindTermTerminalFindWidgetAction, DeleteWordLeftTerminalAction, DeleteWordRightTerminalAction, QuickOpenActionTermContributor, QuickOpenTermAction, TERMINAL_PICKER_PREFIX, MoveToLineStartTerminalAction, MoveToLineEndTerminalAction, SplitTerminalAction, FocusPreviousPaneTerminalAction, FocusNextPaneTerminalAction, ResizePaneLeftTerminalAction, ResizePaneRightTerminalAction, ResizePaneUpTerminalAction, ResizePaneDownTerminalAction, ScrollToPreviousCommandAction, ScrollToNextCommandAction, SelectToPreviousCommandAction, SelectToNextCommandAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions'; import { Registry } from 'vs/platform/registry/common/platform'; import { ShowAllCommandsAction } from 'vs/workbench/parts/quickopen/browser/commandsHandler'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; @@ -280,8 +280,8 @@ configurationRegistry.registerConfiguration({ ResizePaneRightTerminalAction.ID, ResizePaneUpTerminalAction.ID, ResizePaneDownTerminalAction.ID, - FocusPreviousCommandAction.ID, - FocusNextCommandAction.ID, + ScrollToPreviousCommandAction.ID, + ScrollToNextCommandAction.ID, SelectToPreviousCommandAction.ID, SelectToNextCommandAction.ID ].sort() @@ -372,7 +372,7 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ToggleTerminalAc mac: { primary: KeyMod.WinCtrl | KeyCode.US_BACKTICK } }), 'View: Toggle Integrated Terminal', nls.localize('viewCategory', "View")); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollDownTerminalAction, ScrollDownTerminalAction.ID, ScrollDownTerminalAction.LABEL, { - primary: KeyMod.CtrlCmd | KeyCode.DownArrow, + primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.PageDown, linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow } }, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Scroll Down (Line)', category); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollDownPageTerminalAction, ScrollDownPageTerminalAction.ID, ScrollDownPageTerminalAction.LABEL, { @@ -384,7 +384,7 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollToBottomTe linux: { primary: KeyMod.Shift | KeyCode.End } }, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Scroll to Bottom', category); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollUpTerminalAction, ScrollUpTerminalAction.ID, ScrollUpTerminalAction.LABEL, { - primary: KeyMod.CtrlCmd | KeyCode.UpArrow, + primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.PageUp, linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow }, }, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Scroll Up (Line)', category); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollUpPageTerminalAction, ScrollUpPageTerminalAction.ID, ScrollUpPageTerminalAction.LABEL, { @@ -478,14 +478,14 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ResizePaneDownTe linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow }, mac: { primary: KeyMod.CtrlCmd | KeyMod.WinCtrl | KeyCode.DownArrow } }, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Resize Pane Down', category); -actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusPreviousCommandAction, FocusPreviousCommandAction.ID, FocusPreviousCommandAction.LABEL, { +actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollToPreviousCommandAction, ScrollToPreviousCommandAction.ID, ScrollToPreviousCommandAction.LABEL, { primary: null, mac: { primary: KeyMod.CtrlCmd | KeyCode.UpArrow } -}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Focus Previous Command', category); -actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusNextCommandAction, FocusNextCommandAction.ID, FocusNextCommandAction.LABEL, { +}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Scroll To Previous Command', category); +actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ScrollToNextCommandAction, ScrollToNextCommandAction.ID, ScrollToNextCommandAction.LABEL, { primary: null, mac: { primary: KeyMod.CtrlCmd | KeyCode.DownArrow } -}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Focus Next Command', category); +}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Scroll To Next Command', category); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(SelectToPreviousCommandAction, SelectToPreviousCommandAction.ID, SelectToPreviousCommandAction.LABEL, { primary: null, mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts index 42065e46e6e..41feb0c3536 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts @@ -982,9 +982,9 @@ export class RenameTerminalQuickOpenAction extends RenameTerminalAction { } } -export class FocusPreviousCommandAction extends Action { - public static readonly ID = 'workbench.action.terminal.focusPreviousCommand'; - public static readonly LABEL = nls.localize('workbench.action.terminal.focusPreviousCommand', "Focus Previous Command"); +export class ScrollToPreviousCommandAction extends Action { + public static readonly ID = 'workbench.action.terminal.scrollToPreviousCommand'; + public static readonly LABEL = nls.localize('workbench.action.terminal.scrollToPreviousCommand', "Scroll To Previous Command"); constructor( id: string, label: string, @@ -996,15 +996,15 @@ export class FocusPreviousCommandAction extends Action { public run(): TPromise { const instance = this.terminalService.getActiveInstance(); if (instance) { - instance.commandTracker.focusPreviousCommand(); + instance.commandTracker.scrollToPreviousCommand(); } return TPromise.as(void 0); } } -export class FocusNextCommandAction extends Action { - public static readonly ID = 'workbench.action.terminal.focusNextCommand'; - public static readonly LABEL = nls.localize('workbench.action.terminal.focusNextCommand', "Focus Next Command"); +export class ScrollToNextCommandAction extends Action { + public static readonly ID = 'workbench.action.terminal.scrollToNextCommand'; + public static readonly LABEL = nls.localize('workbench.action.terminal.scrollToNextCommand', "Scroll To Next Command"); constructor( id: string, label: string, @@ -1016,7 +1016,7 @@ export class FocusNextCommandAction extends Action { public run(): TPromise { const instance = this.terminalService.getActiveInstance(); if (instance) { - instance.commandTracker.focusNextCommand(); + instance.commandTracker.scrollToNextCommand(); } return TPromise.as(void 0); } diff --git a/src/vs/workbench/parts/terminal/node/terminalCommandTracker.ts b/src/vs/workbench/parts/terminal/node/terminalCommandTracker.ts index f7c06906327..a5e08c5a28a 100644 --- a/src/vs/workbench/parts/terminal/node/terminalCommandTracker.ts +++ b/src/vs/workbench/parts/terminal/node/terminalCommandTracker.ts @@ -43,7 +43,7 @@ export class TerminalCommandTracker implements ITerminalCommandTracker { } } - public focusPreviousCommand(retainSelection: boolean = false): void { + public scrollToPreviousCommand(retainSelection: boolean = false): void { if (!retainSelection) { this._selectionStart = null; } @@ -67,7 +67,7 @@ export class TerminalCommandTracker implements ITerminalCommandTracker { this._xterm.scrollToLine(this._currentMarker.line); } - public focusNextCommand(retainSelection: boolean = false): void { + public scrollToNextCommand(retainSelection: boolean = false): void { if (!retainSelection) { this._selectionStart = null; } @@ -95,7 +95,7 @@ export class TerminalCommandTracker implements ITerminalCommandTracker { if (this._selectionStart === null) { this._selectionStart = this._currentMarker; } - this.focusPreviousCommand(true); + this.scrollToPreviousCommand(true); this._selectLines(this._currentMarker, this._selectionStart); } @@ -103,8 +103,7 @@ export class TerminalCommandTracker implements ITerminalCommandTracker { if (this._selectionStart === null) { this._selectionStart = this._currentMarker; } - this.focusNextCommand(true); - // if (!this._currentMarker + this.scrollToNextCommand(true); this._selectLines(this._currentMarker, this._selectionStart); } From b46e1e6afee78c1112165f2416a9b2f70e3db30c Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 26 Mar 2018 16:12:22 +0200 Subject: [PATCH 0046/1070] always hide F8 when going to a related marker, #10271 --- src/vs/editor/contrib/gotoError/gotoError.ts | 16 +++++++++++++--- .../contrib/gotoError/gotoErrorWidget.ts | 18 ++++++++---------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/vs/editor/contrib/gotoError/gotoError.ts b/src/vs/editor/contrib/gotoError/gotoError.ts index 64d181d155e..d1d82b9a00b 100644 --- a/src/vs/editor/contrib/gotoError/gotoError.ts +++ b/src/vs/editor/contrib/gotoError/gotoError.ts @@ -26,6 +26,7 @@ import { compare } from 'vs/base/common/strings'; import { binarySearch } from 'vs/base/common/arrays'; import { IEditorService } from 'vs/platform/editor/common/editor'; import { TPromise } from 'vs/base/common/winjs.base'; +import { onUnexpectedError } from 'vs/base/common/errors'; class MarkerModel { @@ -233,11 +234,18 @@ class MarkerController implements editorCommon.IEditorContribution { this._model = new MarkerModel(this._editor, markers); this._markerService.onMarkerChanged(this._onMarkerChanged, this, this._disposeOnClose); - this._widget = new MarkerNavigationWidget(this._editor, this._themeService, this._editorService); + this._widget = new MarkerNavigationWidget(this._editor, this._themeService); this._widgetVisible.set(true); this._disposeOnClose.push(this._model); this._disposeOnClose.push(this._widget); + this._disposeOnClose.push(this._widget.onDidSelectRelatedInformation(related => { + this._editorService.openEditor({ + resource: related.resource, + options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() } + }).then(undefined, onUnexpectedError); + this.closeMarkersNavigation(false); + })); this._disposeOnClose.push(this._editor.onDidChangeModel(() => this._cleanUp())); this._disposeOnClose.push(this._model.onCurrentMarkerChanged(marker => { @@ -261,9 +269,11 @@ class MarkerController implements editorCommon.IEditorContribution { return this._model; } - public closeMarkersNavigation(): void { + public closeMarkersNavigation(focusEditor: boolean = true): void { this._cleanUp(); - this._editor.focus(); + if (focusEditor) { + this._editor.focus(); + } } private _onMarkerChanged(changedResources: URI[]): void { diff --git a/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts b/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts index 0e3ac5d116d..0190c1e630b 100644 --- a/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts +++ b/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts @@ -23,9 +23,8 @@ import { ScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElemen import { ScrollbarVisibility } from 'vs/base/common/scrollable'; import { ScrollType } from 'vs/editor/common/editorCommon'; import { getBaseLabel } from 'vs/base/common/labels'; -import { IEditorService } from 'vs/platform/editor/common/editor'; -import { onUnexpectedError } from 'vs/base/common/errors'; import { isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { Event, Emitter } from 'vs/base/common/event'; class MessageWidget { @@ -39,7 +38,7 @@ class MessageWidget { private readonly _relatedDiagnostics = new WeakMap(); private readonly _disposables: IDisposable[] = []; - constructor(parent: HTMLElement, editor: ICodeEditor, editorService: IEditorService) { + constructor(parent: HTMLElement, editor: ICodeEditor, onRelatedInformation: (related: IRelatedInformation) => void, ) { this._editor = editor; const domNode = document.createElement('div'); @@ -56,10 +55,7 @@ class MessageWidget { event.preventDefault(); const related = this._relatedDiagnostics.get(event.target); if (related) { - editorService.openEditor({ - resource: related.resource, - options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() } - }).then(undefined, onUnexpectedError); + onRelatedInformation(related); } })); @@ -148,11 +144,13 @@ export class MarkerNavigationWidget extends ZoneWidget { private _callOnDispose: IDisposable[] = []; private _severity: MarkerSeverity; private _backgroundColor: Color; + private _onDidSelectRelatedInformation = new Emitter(); + + readonly onDidSelectRelatedInformation: Event = this._onDidSelectRelatedInformation.event; constructor( editor: ICodeEditor, - private _themeService: IThemeService, - private _editorService: IEditorService + private _themeService: IThemeService ) { super(editor, { showArrow: true, showFrame: true, isAccessible: true }); this._severity = MarkerSeverity.Warning; @@ -208,7 +206,7 @@ export class MarkerNavigationWidget extends ZoneWidget { this._title.className = 'block title'; this._container.appendChild(this._title); - this._message = new MessageWidget(this._container, this.editor, this._editorService); + this._message = new MessageWidget(this._container, this.editor, related => this._onDidSelectRelatedInformation.fire(related)); this._disposables.push(this._message); } From e45a276a07437acb9256a966378e04ed030b865d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Mon, 26 Mar 2018 16:44:36 +0200 Subject: [PATCH 0047/1070] node-debug@1.22.9 --- build/builtInExtensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index 3244b9f5d70..baea135199c 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -1,7 +1,7 @@ [ { "name": "ms-vscode.node-debug", - "version": "1.22.8", + "version": "1.22.9", "repo": "https://github.com/Microsoft/vscode-node-debug" }, { From 6577bde53648de0996a999540276118c41edcb5a Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 26 Mar 2018 17:04:31 +0200 Subject: [PATCH 0048/1070] Task query and execution polish --- src/vs/vscode.proposed.d.ts | 22 ++++++--- .../api/electron-browser/mainThreadTask.ts | 17 ++++--- src/vs/workbench/api/node/extHost.api.impl.ts | 17 ++++--- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostTask.ts | 38 +++++++++++---- src/vs/workbench/api/node/extHostTypes.ts | 48 +++++++++++++++++++ src/vs/workbench/api/shared/tasks.ts | 9 ++-- src/vs/workbench/parts/tasks/common/tasks.ts | 4 +- 8 files changed, 121 insertions(+), 36 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 88e7c568499..4f05464bcbe 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -688,12 +688,25 @@ declare module 'vscode' { /** * An object representing an executed Task. It can be used * to terminate a task. + * + * This interface is not intended to be implemented. */ export interface TaskExecution { + /** + * The task that got started. + */ + task: Task; + + /** + * Terminates the task execution. + */ + terminate(): void; } /** * An event signaling the start of a task execution. + * + * This interface is not intended to be implemented. */ interface TaskStartEvent { /** @@ -704,6 +717,8 @@ declare module 'vscode' { /** * An event signaling the end of an executed task. + * + * This interface is not intended to be implemented. */ interface TaskEndEvent { /** @@ -734,13 +749,6 @@ declare module 'vscode' { */ export const onDidStartTask: Event; - /** - * Terminates a task that was previously started using `executeTask` - * - * @param task the task to terminate - */ - export function terminateTask(task: TaskExecution): void; - /** * Fires when a task ends. */ diff --git a/src/vs/workbench/api/electron-browser/mainThreadTask.ts b/src/vs/workbench/api/electron-browser/mainThreadTask.ts index 03fa8d2b3b8..1e052ee9e0e 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTask.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTask.ts @@ -17,7 +17,7 @@ import { IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspac import { ContributedTask, ExtensionTaskSourceTransfer, TaskIdentifier, TaskExecution, Task, TaskEvent, TaskEventKind, - PresentationOptions, CommandOptions, CommandConfiguration, RuntimeType, CustomTask, TaskScope, TaskSource, TaskSourceKind, ExtensionTaskSource + PresentationOptions, CommandOptions, CommandConfiguration, RuntimeType, CustomTask, TaskScope, TaskSource, TaskSourceKind, ExtensionTaskSource, RevealKind, PanelKind } from 'vs/workbench/parts/tasks/common/tasks'; import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService'; @@ -35,11 +35,13 @@ namespace TaskExecutionDTO { export function from(value: TaskExecution): TaskExecutionDTO { return { id: value.id, + task: TaskDTO.from(value.task) }; } export function to(value: TaskExecutionDTO, workspace: IWorkspaceContextService): TaskExecution { return { id: value.id, + task: TaskDTO.to(value.task, workspace) }; } } @@ -303,6 +305,8 @@ namespace TaskDTO { return undefined; } command.presentation = TaskPresentationOptionsDTO.to(task.presentationOptions); + command.presentation = Objects.assign(command.presentation || {}, { echo: true, reveal: RevealKind.Always, focus: false, panel: PanelKind.Shared }); + let source = TaskSourceDTO.to(task.source, workspace); let label = nls.localize('task.label', '{0}: {1}', source.label, task.name); @@ -403,7 +407,8 @@ export class MainThreadTask implements MainThreadTaskShape { this._taskService.getTask(workspaceFolder, value.id, true).then((task: Task) => { this._taskService.run(task); let result: TaskExecutionDTO = { - id: value.id + id: value.id, + task: TaskDTO.from(task) }; resolve(result); }, (error) => { @@ -413,19 +418,19 @@ export class MainThreadTask implements MainThreadTaskShape { let task = TaskDTO.to(value, this._workspaceContextServer); this._taskService.run(task); let result: TaskExecutionDTO = { - id: task._id + id: task._id, + task: TaskDTO.from(task) }; resolve(result); } }); } - public $terminateTask(value: TaskExecutionDTO): TPromise { - let execution: TaskExecution = TaskExecutionDTO.to(value, this._workspaceContextServer); + public $terminateTask(id: string): TPromise { return new TPromise((resolve, reject) => { this._taskService.getActiveTasks().then((tasks) => { for (let task of tasks) { - if (execution.id === task._id) { + if (id === task._id) { this._taskService.terminate(task).then((value) => { resolve(undefined); }, (error) => { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index a2a727aae7a..a5fa5f81e92 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -517,18 +517,21 @@ export function createApiFactory( registerTaskProvider: (type: string, provider: vscode.TaskProvider) => { return extHostTask.registerTaskProvider(extension, provider); }, - fetchTasks: proposedApiFunction(extension, (): Thenable => { + // fetchTasks: proposedApiFunction(extension, (): Thenable => { + // return extHostTask.executeTaskProvider(); + // }), + // executeTask: proposedApiFunction(extension, (task: vscode.Task): Thenable => { + // return extHostTask.executeTask(extension, task); + // }), + fetchTasks: (): Thenable => { return extHostTask.executeTaskProvider(); - }), - executeTask: proposedApiFunction(extension, (task: vscode.Task): Thenable => { + }, + executeTask: (task: vscode.Task): Thenable => { return extHostTask.executeTask(extension, task); - }), + }, onDidStartTask: (listeners, thisArgs?, disposables?) => { return extHostTask.onDidStartTask(listeners, thisArgs, disposables); }, - terminateTask: proposedApiFunction(extension, (task: vscode.TaskExecution): void => { - extHostTask.terminateTask(task); - }), onDidEndTask: (listeners, thisArgs?, disposables?) => { return extHostTask.onDidEndTask(listeners, thisArgs, disposables); }, diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 80cf86ea2e9..8a1b10bc57b 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -391,7 +391,7 @@ export interface MainThreadTaskShape extends IDisposable { $registerTaskProvider(handle: number): TPromise; $executeTaskProvider(): TPromise; $executeTask(task: TaskHandleDTO | TaskDTO): TPromise; - $terminateTask(task: TaskExecutionDTO): TPromise; + $terminateTask(id: string): TPromise; $unregisterTaskProvider(handle: number): TPromise; } diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index 828b31b8c96..03e3ae433e0 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -613,6 +613,7 @@ namespace TaskDTO { if (!execution || !definition || !scope) { return undefined; } + let group = (value.group as types.TaskGroup) ? (value.group as types.TaskGroup).id : undefined; let result: TaskDTO = { _id: (value as types.Task)._id, definition, @@ -624,7 +625,7 @@ namespace TaskDTO { }, execution, isBackground: value.isBackground, - group: (value.group as types.TaskGroup).id, + group: group, presentationOptions: TaskPresentationOptionsDTO.from(value.presentationOptions), problemMatchers: value.problemMatchers, hasDefinedMatchers: (value as types.Task).hasDefinedMatchers @@ -675,17 +676,26 @@ namespace TaskDTO { } class TaskExecutionImpl implements vscode.TaskExecution { - constructor(readonly _id: string) { + constructor(readonly _id: string, private readonly _task: vscode.Task, private readonly _tasks: ExtHostTask) { + } + + get task(): vscode.Task { + return this._task; + } + + public terminate(): void { + this._tasks.terminateTask(this); } } namespace TaskExecutionDTO { - export function to(value: TaskExecutionDTO): vscode.TaskExecution { - return new TaskExecutionImpl(value.id); + export function to(value: TaskExecutionDTO, tasks: ExtHostTask): vscode.TaskExecution { + return new TaskExecutionImpl(value.id, TaskDTO.to(value.task, tasks.extHostWorkspace), tasks); } export function from(value: vscode.TaskExecution): TaskExecutionDTO { return { - id: (value as TaskExecutionImpl)._id + id: (value as TaskExecutionImpl)._id, + task: undefined }; } } @@ -712,6 +722,10 @@ export class ExtHostTask implements ExtHostTaskShape { this._handlers = new Map(); } + public get extHostWorkspace(): ExtHostWorkspace { + return this._extHostWorkspace; + } + public registerTaskProvider(extension: IExtensionDescription, provider: vscode.TaskProvider): vscode.Disposable { if (!provider) { return new types.Disposable(() => { }); @@ -742,15 +756,19 @@ export class ExtHostTask implements ExtHostTaskShape { let tTask = (task as types.Task); // We have a preserved ID. So the task didn't change. if (tTask._id !== void 0) { - return this._proxy.$executeTask(TaskHandleDTO.from(tTask)).then(value => TaskExecutionDTO.to(value)); + return this._proxy.$executeTask(TaskHandleDTO.from(tTask)).then(value => new TaskExecutionImpl(value.id, task, this)); } else { - return this._proxy.$executeTask(TaskDTO.from(task, extension)).then(value => TaskExecutionDTO.to(value)); + let dto = TaskDTO.from(task, extension); + if (dto === void 0) { + return Promise.reject(new Error('Task is not valid')); + } + return this._proxy.$executeTask(dto).then(value => new TaskExecutionImpl(value.id, task, this)); } } public $taskStarted(execution: TaskExecutionDTO): void { this._onDidExecuteTask.fire({ - execution: TaskExecutionDTO.to(execution) + execution: TaskExecutionDTO.to(execution, this) }); } @@ -762,12 +780,12 @@ export class ExtHostTask implements ExtHostTaskShape { if (!(execution instanceof TaskExecutionImpl)) { throw new Error('No valid task execution provided'); } - return this._proxy.$terminateTask(TaskExecutionDTO.from(execution)); + return this._proxy.$terminateTask((execution as TaskExecutionImpl)._id); } public $taskEnded(execution: TaskExecutionDTO): void { this._onDidTerminateTask.fire({ - execution: TaskExecutionDTO.to(execution) + execution: TaskExecutionDTO.to(execution, this) }); } diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index 07ced944343..def9661a41d 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1343,6 +1343,20 @@ export class ProcessExecution implements vscode.ProcessExecution { set options(value: vscode.ProcessExecutionOptions) { this._options = value; } + + public computeId(): string { + const hash = crypto.createHash('md5'); + hash.update('process'); + if (this._process !== void 0) { + hash.update(this._process); + } + if (this._args && this._args.length > 0) { + for (let arg of this._args) { + hash.update(arg); + } + } + return hash.digest('hex'); + } } export class ShellExecution implements vscode.ShellExecution { @@ -1411,6 +1425,23 @@ export class ShellExecution implements vscode.ShellExecution { set options(value: vscode.ShellExecutionOptions) { this._options = value; } + + public computeId(): string { + const hash = crypto.createHash('md5'); + hash.update('shell'); + if (this._commandLine !== void 0) { + hash.update(this._commandLine); + } + if (this._command !== void 0) { + hash.update(typeof this._command === 'string' ? this._command : this._command.value); + } + if (this._args && this._args.length > 0) { + for (let arg of this._args) { + hash.update(typeof arg === 'string' ? arg : arg.value); + } + } + return hash.digest('hex'); + } } export enum ShellQuoting { @@ -1485,7 +1516,24 @@ export class Task implements vscode.Task { } private clear(): void { + if (this.__id === void 0) { + return; + } this.__id = undefined; + this._scope = undefined; + this._definitionKey = undefined; + this._definition = undefined; + if (this._execution instanceof ProcessExecution) { + this._definition = { + type: 'process', + id: this._execution.computeId() + }; + } else if (this._execution instanceof ShellExecution) { + this._definition = { + type: 'shell', + id: this._execution.computeId() + }; + } } get definition(): vscode.TaskDefinition { diff --git a/src/vs/workbench/api/shared/tasks.ts b/src/vs/workbench/api/shared/tasks.ts index cba95638cbc..093fff83f06 100644 --- a/src/vs/workbench/api/shared/tasks.ts +++ b/src/vs/workbench/api/shared/tasks.ts @@ -11,10 +11,6 @@ export interface TaskDefinitionDTO { [name: string]: any; } -export interface TaskExecutionDTO { - id: string; -} - export interface TaskPresentationOptionsDTO { reveal?: number; echo?: boolean; @@ -85,4 +81,9 @@ export interface TaskDTO { presentationOptions: TaskPresentationOptionsDTO; problemMatchers: string[]; hasDefinedMatchers: boolean; +} + +export interface TaskExecutionDTO { + id: string; + task: TaskDTO; } \ No newline at end of file diff --git a/src/vs/workbench/parts/tasks/common/tasks.ts b/src/vs/workbench/parts/tasks/common/tasks.ts index b5a93a7cb63..1528f762003 100644 --- a/src/vs/workbench/parts/tasks/common/tasks.ts +++ b/src/vs/workbench/parts/tasks/common/tasks.ts @@ -642,7 +642,8 @@ export namespace Task { export function getTaskExecution(task: Task): TaskExecution { let result: TaskExecution = { - id: task._id + id: task._id, + task: task }; return result; } @@ -657,6 +658,7 @@ export interface TaskItem { export interface TaskExecution { id: string; + task: Task; } export enum ExecutionEngine { From c560f172dfefba512bcb82e68119028ea172cb29 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 17:04:28 +0200 Subject: [PATCH 0049/1070] compoiste bar: removing a composite make sure to deactive it proper fixes #46368 --- .../workbench/browser/parts/compositebar/compositeBar.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 08dc54643ee..61bb1e3607f 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -99,6 +99,7 @@ export class CompositeBar implements ICompositeBar { } this.options.composites = this.options.composites.filter(c => c.id !== id); + this.deactivateComposite(id); this.unpin(id); this.pullComposite(id); } @@ -123,6 +124,12 @@ export class CompositeBar implements ICompositeBar { if (this.compositeIdToActions[id]) { this.compositeIdToActions[id].deactivate(); } + if (this.activeCompositeId === id) { + this.activeCompositeId = undefined; + } + if (this.activeUnpinnedCompositeId === id) { + this.activeUnpinnedCompositeId = undefined; + } } public showActivity(compositeId: string, badge: IBadge, clazz?: string, priority?: number): IDisposable { From 9339bb205da4b0f13bbece65e41c0af56cd114e0 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 17:14:49 +0200 Subject: [PATCH 0050/1070] faster linux build --- build/tfs/product-build.yml | 146 ++---------------------------------- 1 file changed, 6 insertions(+), 140 deletions(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index ffa155423bb..52b2e8fbdb0 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -224,78 +224,11 @@ phases: - phase: Linux condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') - queue: - name: linux-x64 - parallel: 2 - matrix: - x64: - VSCODE_ARCH: x64 - # ia32: - # VSCODE_ARCH: ia32 + queue: linux-x64 + variables: + VSCODE_ARCH: x64 steps: - - script: | - # dependencies - dpkg --add-architecture i386 - apt-get update - - DEPS=" \ - gcc-multilib g++-multilib \ - pkg-config \ - dbus \ - xvfb \ - fakeroot \ - bc \ - bsdmainutils \ - rpm \ - " - - if [[ "$(VSCODE_ARCH)" == "x64" ]]; then - DEPS="$DEPS \ - dpkg-dev \ - libgconf-2-4 \ - libnss3 \ - libasound2 \ - libxtst6 \ - libx11-dev \ - libxkbfile-dev \ - libxss1 \ - libx11-xcb-dev \ - libsecret-1-dev \ - " - else - DEPS="$DEPS \ - dpkg-dev:i386 \ - libgconf-2-4:i386 \ - libnss3:i386 \ - libasound2:i386 \ - libxtst6:i386 \ - libnotify4:i386 \ - libx11-dev:i386 \ - libxkbfile-dev:i386 \ - libxss1:i386 \ - libx11-xcb-dev:i386 \ - libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 \ - libgirepository-1.0-1:i386 \ - gir1.2-glib-2.0:i386 \ - gir1.2-secret-1:i386 \ - libsecret-1-dev:i386 \ - libgtk2.0-0:i386 \ - " - fi - - apt-get install -y $DEPS - - # setup xvfb - cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb - chmod +x /etc/init.d/xvfb - update-rc.d xvfb defaults - service xvfb start - - # setup dbus - ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon - service dbus start - - task: NodeTool@0 inputs: versionSpec: "8.9.1" @@ -338,78 +271,11 @@ phases: - phase: Linux32 condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') - queue: - name: linux-ia32 - parallel: 2 - matrix: - # x64: - # VSCODE_ARCH: x64 - ia32: - VSCODE_ARCH: ia32 + queue: linux-ia32 + variables: + VSCODE_ARCH: ia32 steps: - - script: | - # dependencies - dpkg --add-architecture i386 - apt-get update - - DEPS=" \ - gcc-multilib g++-multilib \ - pkg-config \ - dbus \ - xvfb \ - fakeroot \ - bc \ - bsdmainutils \ - rpm \ - " - - if [[ "$(VSCODE_ARCH)" == "x64" ]]; then - DEPS="$DEPS \ - dpkg-dev \ - libgconf-2-4 \ - libnss3 \ - libasound2 \ - libxtst6 \ - libx11-dev \ - libxkbfile-dev \ - libxss1 \ - libx11-xcb-dev \ - libsecret-1-dev \ - " - else - DEPS="$DEPS \ - dpkg-dev:i386 \ - libgconf-2-4:i386 \ - libnss3:i386 \ - libasound2:i386 \ - libxtst6:i386 \ - libnotify4:i386 \ - libx11-dev:i386 \ - libxkbfile-dev:i386 \ - libxss1:i386 \ - libx11-xcb-dev:i386 \ - libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 \ - libgirepository-1.0-1:i386 \ - gir1.2-glib-2.0:i386 \ - gir1.2-secret-1:i386 \ - libsecret-1-dev:i386 \ - libgtk2.0-0:i386 \ - " - fi - - apt-get install -y $DEPS - - # setup xvfb - cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb - chmod +x /etc/init.d/xvfb - update-rc.d xvfb defaults - service xvfb start - - # setup dbus - ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon - service dbus start - - task: NodeTool@0 inputs: versionSpec: "8.9.1" From 49397cdbed723c95d148359dbcabe2269d2ba04e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 26 Mar 2018 17:21:11 +0200 Subject: [PATCH 0051/1070] enable background updates for stable fix #45314 --- src/vs/platform/update/node/update.config.contribution.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vs/platform/update/node/update.config.contribution.ts b/src/vs/platform/update/node/update.config.contribution.ts index 547952b04d0..9b368fa02b1 100644 --- a/src/vs/platform/update/node/update.config.contribution.ts +++ b/src/vs/platform/update/node/update.config.contribution.ts @@ -6,7 +6,6 @@ 'use strict'; import * as nls from 'vs/nls'; -import product from 'vs/platform/node/product'; import { Registry } from 'vs/platform/registry/common/platform'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; @@ -25,7 +24,7 @@ configurationRegistry.registerConfiguration({ }, 'update.enableWindowsBackgroundUpdates': { 'type': 'boolean', - 'default': product.quality === 'insider', + 'default': true, 'description': nls.localize('enableWindowsBackgroundUpdates', "Enables Windows background updates.") } } From de9181ff49f3ab868046669b119d0f5a821f9320 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 26 Mar 2018 17:37:15 +0200 Subject: [PATCH 0052/1070] [folding] collapsed region not preserved. Fixes #44524 --- src/vs/editor/contrib/folding/folding.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/folding/folding.ts b/src/vs/editor/contrib/folding/folding.ts index b9c2f1131bf..56a11c968b4 100644 --- a/src/vs/editor/contrib/folding/folding.ts +++ b/src/vs/editor/contrib/folding/folding.ts @@ -80,7 +80,7 @@ export class FoldingController implements IEditorContribution { this.foldingDecorationProvider.autoHideFoldingControls = this._autoHideFoldingControls; this.globalToDispose.push(this.editor.onDidChangeModel(() => this.onModelChanged())); - this.globalToDispose.push(FoldingProviderRegistry.onDidChange(() => this.onModelChanged())); + this.globalToDispose.push(FoldingProviderRegistry.onDidChange(() => this.onFoldingProviderRegistryChanged())); this.globalToDispose.push(this.editor.onDidChangeConfiguration((e: IConfigurationChangedEvent) => { if (e.contribInfo) { @@ -190,6 +190,11 @@ export class FoldingController implements IEditorContribution { this.onModelContentChanged(); } + private onFoldingProviderRegistryChanged() { + this.rangeProvider = null; + this.onModelContentChanged(); + } + private getRangeProvider(): RangeProvider { if (!this.rangeProvider) { let foldingProviders = FoldingProviderRegistry.ordered(this.foldingModel.textModel); From cfe0998240d95ad12213944cc90f43149779fc40 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 17:45:35 +0200 Subject: [PATCH 0053/1070] Debug: log whole json object in case of parse error fixes #46317 --- src/vs/workbench/parts/debug/node/v8Protocol.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/node/v8Protocol.ts b/src/vs/workbench/parts/debug/node/v8Protocol.ts index cd9c151d7cb..efac7e46afa 100644 --- a/src/vs/workbench/parts/debug/node/v8Protocol.ts +++ b/src/vs/workbench/parts/debug/node/v8Protocol.ts @@ -149,7 +149,7 @@ export abstract class V8Protocol { break; } } catch (e) { - this.onServerError(new Error(e.message || e)); + this.onServerError(new Error((e.message || e) + '\n' + body)); } } } From 3bd520302d7aa29367ee50dc34a536ddd2cf4119 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 26 Mar 2018 17:49:38 +0200 Subject: [PATCH 0054/1070] avoid isEqualOrParent for tildify method --- src/vs/base/common/filters.ts | 2 +- src/vs/base/common/labels.ts | 21 +++++++--- src/vs/base/common/paths.ts | 4 +- src/vs/base/common/strings.ts | 6 ++- src/vs/base/test/common/strings.test.ts | 40 +++++++++---------- src/vs/platform/files/common/files.ts | 21 +--------- src/vs/platform/files/test/files.test.ts | 14 +------ .../browser/editors/fileEditorTracker.ts | 21 +++++++++- .../parts/files/common/explorerModel.ts | 4 +- 9 files changed, 67 insertions(+), 66 deletions(-) diff --git a/src/vs/base/common/filters.ts b/src/vs/base/common/filters.ts index 9c7dc2dc68d..b268681d0c3 100644 --- a/src/vs/base/common/filters.ts +++ b/src/vs/base/common/filters.ts @@ -50,7 +50,7 @@ function _matchesPrefix(ignoreCase: boolean, word: string, wordToMatchAgainst: s let matches: boolean; if (ignoreCase) { - matches = strings.beginsWithIgnoreCase(wordToMatchAgainst, word); + matches = strings.startsWithIgnoreCase(wordToMatchAgainst, word); } else { matches = wordToMatchAgainst.indexOf(word) === 0; } diff --git a/src/vs/base/common/labels.ts b/src/vs/base/common/labels.ts index 10e06ed599d..ade3020fcdc 100644 --- a/src/vs/base/common/labels.ts +++ b/src/vs/base/common/labels.ts @@ -5,8 +5,8 @@ 'use strict'; import URI from 'vs/base/common/uri'; -import { nativeSep, normalize, isEqualOrParent, basename as pathsBasename, join } from 'vs/base/common/paths'; -import { endsWith, ltrim, equalsIgnoreCase } from 'vs/base/common/strings'; +import { nativeSep, normalize, basename as pathsBasename, join, sep } from 'vs/base/common/paths'; +import { endsWith, ltrim, equalsIgnoreCase, startsWithIgnoreCase, rtrim, startsWith } from 'vs/base/common/strings'; import { Schemas } from 'vs/base/common/network'; import { isLinux, isWindows, isMacintosh } from 'vs/base/common/platform'; @@ -100,13 +100,22 @@ export function normalizeDriveLetter(path: string): string { return path; } +let normalizedUserHomeCached: { original: string; normalized: string } = Object.create(null); export function tildify(path: string, userHome: string): string { - if (isWindows || !path) { - return path; // unsupported on Windows + if (isWindows || !path || !userHome) { + return path; // unsupported } - if (isEqualOrParent(path, userHome, !isLinux /* ignorecase */)) { - path = `~${path.substr(userHome.length)}`; + // Keep a normalized user home path as cache to prevent accumulated string creation + let normalizedUserHome = normalizedUserHomeCached.original === userHome ? normalizedUserHomeCached.normalized : void 0; + if (!normalizedUserHome) { + normalizedUserHome = `${rtrim(userHome, sep)}${sep}`; + normalizedUserHomeCached = { original: userHome, normalized: normalizedUserHome }; + } + + // Linux: case sensitive, macOS: case insensitive + if (isLinux ? startsWith(path, normalizedUserHome) : startsWithIgnoreCase(path, normalizedUserHome)) { + path = `~/${path.substr(normalizedUserHome.length)}`; } return path; diff --git a/src/vs/base/common/paths.ts b/src/vs/base/common/paths.ts index e0e8f7c05ae..70c4b3ae231 100644 --- a/src/vs/base/common/paths.ts +++ b/src/vs/base/common/paths.ts @@ -5,7 +5,7 @@ 'use strict'; import { isWindows } from 'vs/base/common/platform'; -import { beginsWithIgnoreCase, equalsIgnoreCase } from 'vs/base/common/strings'; +import { startsWithIgnoreCase, equalsIgnoreCase } from 'vs/base/common/strings'; import { CharCode } from 'vs/base/common/charCode'; /** @@ -340,7 +340,7 @@ export function isEqualOrParent(path: string, candidate: string, ignoreCase?: bo } if (ignoreCase) { - const beginsWith = beginsWithIgnoreCase(path, candidate); + const beginsWith = startsWithIgnoreCase(path, candidate); if (!beginsWith) { return false; } diff --git a/src/vs/base/common/strings.ts b/src/vs/base/common/strings.ts index f1eef60ca00..deeb3ae1f99 100644 --- a/src/vs/base/common/strings.ts +++ b/src/vs/base/common/strings.ts @@ -159,6 +159,10 @@ export function startsWith(haystack: string, needle: string): boolean { return false; } + if (haystack === needle) { + return true; + } + for (let i = 0; i < needle.length; i++) { if (haystack[i] !== needle[i]) { return false; @@ -427,7 +431,7 @@ function doEqualsIgnoreCase(a: string, b: string, stopAt = a.length): boolean { return true; } -export function beginsWithIgnoreCase(str: string, candidate: string): boolean { +export function startsWithIgnoreCase(str: string, candidate: string): boolean { const candidateLength = candidate.length; if (candidate.length > str.length) { return false; diff --git a/src/vs/base/test/common/strings.test.ts b/src/vs/base/test/common/strings.test.ts index 4db726aae72..295c3adb50a 100644 --- a/src/vs/base/test/common/strings.test.ts +++ b/src/vs/base/test/common/strings.test.ts @@ -21,29 +21,29 @@ suite('Strings', () => { }); test('beginsWithIgnoreCase', function () { - assert(strings.beginsWithIgnoreCase('', '')); - assert(!strings.beginsWithIgnoreCase('', '1')); - assert(strings.beginsWithIgnoreCase('1', '')); + assert(strings.startsWithIgnoreCase('', '')); + assert(!strings.startsWithIgnoreCase('', '1')); + assert(strings.startsWithIgnoreCase('1', '')); - assert(strings.beginsWithIgnoreCase('a', 'a')); - assert(strings.beginsWithIgnoreCase('abc', 'Abc')); - assert(strings.beginsWithIgnoreCase('abc', 'ABC')); - assert(strings.beginsWithIgnoreCase('Höhenmeter', 'HÖhenmeter')); - assert(strings.beginsWithIgnoreCase('ÖL', 'Öl')); + assert(strings.startsWithIgnoreCase('a', 'a')); + assert(strings.startsWithIgnoreCase('abc', 'Abc')); + assert(strings.startsWithIgnoreCase('abc', 'ABC')); + assert(strings.startsWithIgnoreCase('Höhenmeter', 'HÖhenmeter')); + assert(strings.startsWithIgnoreCase('ÖL', 'Öl')); - assert(strings.beginsWithIgnoreCase('alles klar', 'a')); - assert(strings.beginsWithIgnoreCase('alles klar', 'A')); - assert(strings.beginsWithIgnoreCase('alles klar', 'alles k')); - assert(strings.beginsWithIgnoreCase('alles klar', 'alles K')); - assert(strings.beginsWithIgnoreCase('alles klar', 'ALLES K')); - assert(strings.beginsWithIgnoreCase('alles klar', 'alles klar')); - assert(strings.beginsWithIgnoreCase('alles klar', 'ALLES KLAR')); + assert(strings.startsWithIgnoreCase('alles klar', 'a')); + assert(strings.startsWithIgnoreCase('alles klar', 'A')); + assert(strings.startsWithIgnoreCase('alles klar', 'alles k')); + assert(strings.startsWithIgnoreCase('alles klar', 'alles K')); + assert(strings.startsWithIgnoreCase('alles klar', 'ALLES K')); + assert(strings.startsWithIgnoreCase('alles klar', 'alles klar')); + assert(strings.startsWithIgnoreCase('alles klar', 'ALLES KLAR')); - assert(!strings.beginsWithIgnoreCase('alles klar', ' ALLES K')); - assert(!strings.beginsWithIgnoreCase('alles klar', 'ALLES K ')); - assert(!strings.beginsWithIgnoreCase('alles klar', 'öALLES K ')); - assert(!strings.beginsWithIgnoreCase('alles klar', ' ')); - assert(!strings.beginsWithIgnoreCase('alles klar', 'ö')); + assert(!strings.startsWithIgnoreCase('alles klar', ' ALLES K')); + assert(!strings.startsWithIgnoreCase('alles klar', 'ALLES K ')); + assert(!strings.startsWithIgnoreCase('alles klar', 'öALLES K ')); + assert(!strings.startsWithIgnoreCase('alles klar', ' ')); + assert(!strings.startsWithIgnoreCase('alles klar', 'ö')); }); test('compareIgnoreCase', function () { diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index f3f03d75732..c9d7d12260d 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -11,7 +11,7 @@ import * as glob from 'vs/base/common/glob'; import { isLinux } from 'vs/base/common/platform'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { Event } from 'vs/base/common/event'; -import { beginsWithIgnoreCase } from 'vs/base/common/strings'; +import { startsWithIgnoreCase } from 'vs/base/common/strings'; import { IProgress } from 'vs/platform/progress/common/progress'; import { IDisposable } from 'vs/base/common/lifecycle'; import { isEqualOrParent, isEqual } from 'vs/base/common/resources'; @@ -348,29 +348,12 @@ export function isParent(path: string, candidate: string, ignoreCase?: boolean): } if (ignoreCase) { - return beginsWithIgnoreCase(path, candidate); + return startsWithIgnoreCase(path, candidate); } return path.indexOf(candidate) === 0; } -export function indexOf(path: string, candidate: string, ignoreCase?: boolean): number { - if (candidate.length > path.length) { - return -1; - } - - if (path === candidate) { - return 0; - } - - if (ignoreCase) { - path = path.toLowerCase(); - candidate = candidate.toLowerCase(); - } - - return path.indexOf(candidate); -} - export interface IBaseStat { /** diff --git a/src/vs/platform/files/test/files.test.ts b/src/vs/platform/files/test/files.test.ts index 305db3647cd..aba5148b53d 100644 --- a/src/vs/platform/files/test/files.test.ts +++ b/src/vs/platform/files/test/files.test.ts @@ -8,7 +8,7 @@ import * as assert from 'assert'; import URI from 'vs/base/common/uri'; import { join, isEqual, isEqualOrParent } from 'vs/base/common/paths'; -import { FileChangeType, FileChangesEvent, isParent, indexOf } from 'vs/platform/files/common/files'; +import { FileChangeType, FileChangesEvent, isParent } from 'vs/platform/files/common/files'; import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; suite('Files', () => { @@ -187,16 +187,4 @@ suite('Files', () => { assert(!isEqualOrParent('foo/bar/test.ts', 'foo/BAR/test.', true)); } }); - - test('indexOf (ignorecase)', function () { - assert.equal(indexOf('/some/path', '/some/path', true), 0); - assert.equal(indexOf('/some/path/more', '/some/path', true), 0); - - assert.equal(indexOf('c:\\some\\path', 'c:\\some\\path', true), 0); - assert.equal(indexOf('c:\\some\\path\\more', 'c:\\some\\path', true), 0); - - assert.equal(indexOf('/some/path', '/some/other/path', true), -1); - - assert.equal(indexOf('/some/path', '/some/PATH', true), 0); - }); }); \ No newline at end of file diff --git a/src/vs/workbench/parts/files/browser/editors/fileEditorTracker.ts b/src/vs/workbench/parts/files/browser/editors/fileEditorTracker.ts index 899757c4082..fe2905822fd 100644 --- a/src/vs/workbench/parts/files/browser/editors/fileEditorTracker.ts +++ b/src/vs/workbench/parts/files/browser/editors/fileEditorTracker.ts @@ -13,7 +13,7 @@ import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { toResource, SideBySideEditorInput, IEditorGroup, IWorkbenchEditorConfiguration } from 'vs/workbench/common/editor'; import { BINARY_FILE_EDITOR_ID } from 'vs/workbench/parts/files/common/files'; import { ITextFileService, ITextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles'; -import { FileOperationEvent, FileOperation, IFileService, FileChangeType, FileChangesEvent, indexOf } from 'vs/platform/files/common/files'; +import { FileOperationEvent, FileOperation, IFileService, FileChangeType, FileChangesEvent } from 'vs/platform/files/common/files'; import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; @@ -208,7 +208,7 @@ export class FileEditorTracker implements IWorkbenchContribution { if (oldResource.toString() === resource.toString()) { reopenFileResource = newResource; // file got moved } else { - const index = indexOf(resource.path, oldResource.path, !isLinux /* ignorecase */); + const index = this.getIndexOfPath(resource.path, oldResource.path); reopenFileResource = newResource.with({ path: paths.join(newResource.path, resource.path.substr(index + oldResource.path.length + 1)) }); // parent folder got moved } @@ -229,6 +229,23 @@ export class FileEditorTracker implements IWorkbenchContribution { }); } + private getIndexOfPath(path: string, candidate: string): number { + if (candidate.length > path.length) { + return -1; + } + + if (path === candidate) { + return 0; + } + + if (!isLinux /* ignore case */) { + path = path.toLowerCase(); + candidate = candidate.toLowerCase(); + } + + return path.indexOf(candidate); + } + private getViewStateFor(resource: URI, group: IEditorGroup): IEditorViewState | undefined { const stacks = this.editorGroupService.getStacksModel(); const editors = this.editorService.getVisibleEditors(); diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index b6aa416ef81..cac3eaf31c9 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -17,7 +17,7 @@ import { IEditorGroup, toResource, IEditorIdentifier } from 'vs/workbench/common import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { getPathLabel } from 'vs/base/common/labels'; import { Schemas } from 'vs/base/common/network'; -import { startsWith, beginsWithIgnoreCase, equalsIgnoreCase } from 'vs/base/common/strings'; +import { startsWith, startsWithIgnoreCase, equalsIgnoreCase } from 'vs/base/common/strings'; export class Model { @@ -316,7 +316,7 @@ export class ExplorerItem { public find(resource: URI): ExplorerItem { // Return if path found if (resource && this.resource.scheme === resource.scheme && this.resource.authority === resource.authority && - (isLinux ? startsWith(resource.path, this.resource.path) : beginsWithIgnoreCase(resource.path, this.resource.path)) + (isLinux ? startsWith(resource.path, this.resource.path) : startsWithIgnoreCase(resource.path, this.resource.path)) ) { return this.findByPath(resource.path, this.resource.path.length); } From aee2af6c9f4540d6f840b84e88c022e1afe6390c Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 17:54:21 +0200 Subject: [PATCH 0055/1070] composite bar: fix order when removing composite --- src/vs/workbench/browser/parts/compositebar/compositeBar.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 61bb1e3607f..55712a8d842 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -99,9 +99,10 @@ export class CompositeBar implements ICompositeBar { } this.options.composites = this.options.composites.filter(c => c.id !== id); - this.deactivateComposite(id); this.unpin(id); this.pullComposite(id); + // Only at the end deactivate composite so the unpin and pull properly finish + this.deactivateComposite(id); } public activateComposite(id: string): void { From a9704b5c56cd729c320528c5b49a95d67e54852a Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 26 Mar 2018 17:55:01 +0200 Subject: [PATCH 0056/1070] Fixes #46568: Graduate visible ranges API out of proposed --- src/vs/vscode.d.ts | 25 ++++++++++++++ src/vs/vscode.proposed.d.ts | 33 ------------------- src/vs/workbench/api/node/extHost.api.impl.ts | 4 +-- 3 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index a890f927ccf..070409e485b 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -537,6 +537,20 @@ declare module 'vscode' { kind?: TextEditorSelectionChangeKind; } + /** + * Represents an event describing the change in a [text editor's visible ranges](#TextEditor.visibleRanges). + */ + export interface TextEditorVisibleRangesChangeEvent { + /** + * The [text editor](#TextEditor) for which the visible ranges have changed. + */ + textEditor: TextEditor; + /** + * The new value for the [text editor's visible ranges](#TextEditor.visibleRanges). + */ + visibleRanges: Range[]; + } + /** * Represents an event describing the change in a [text editor's options](#TextEditor.options). */ @@ -1062,6 +1076,12 @@ declare module 'vscode' { */ selections: Selection[]; + /** + * The current visible ranges in the editor (vertically). + * This accounts only for vertical scrolling, and not for horizontal scrolling. + */ + readonly visibleRanges: Range[]; + /** * Text editor options. */ @@ -4830,6 +4850,11 @@ declare module 'vscode' { */ export const onDidChangeTextEditorSelection: Event; + /** + * An [event](#Event) which fires when the selection in an editor has changed. + */ + export const onDidChangeTextEditorVisibleRanges: Event; + /** * An [event](#Event) which fires when the options of an editor have changed. */ diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 4f05464bcbe..5d0f2e25d86 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -650,39 +650,6 @@ declare module 'vscode' { //#endregion - //#region Alex: TextEditor.visibleRange and related event - - export interface TextEditor { - /** - * The current visible ranges in the editor (vertically). - * This accounts only for vertical scrolling, and not for horizontal scrolling. - */ - readonly visibleRanges: Range[]; - } - - /** - * Represents an event describing the change in a [text editor's visible ranges](#TextEditor.visibleRanges). - */ - export interface TextEditorVisibleRangesChangeEvent { - /** - * The [text editor](#TextEditor) for which the visible ranges have changed. - */ - textEditor: TextEditor; - /** - * The new value for the [text editor's visible ranges](#TextEditor.visibleRanges). - */ - visibleRanges: Range[]; - } - - export namespace window { - /** - * An [event](#Event) which fires when the selection in an editor has changed. - */ - export const onDidChangeTextEditorVisibleRanges: Event; - } - - //#endregion - //#region Tasks /** diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index a5fa5f81e92..82fc8af5fea 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -342,9 +342,9 @@ export function createApiFactory( onDidChangeTextEditorOptions(listener: (e: vscode.TextEditorOptionsChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) { return extHostEditors.onDidChangeTextEditorOptions(listener, thisArgs, disposables); }, - onDidChangeTextEditorVisibleRanges: proposedApiFunction(extension, (listener: (e: vscode.TextEditorVisibleRangesChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => { + onDidChangeTextEditorVisibleRanges(listener: (e: vscode.TextEditorVisibleRangesChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) { return extHostEditors.onDidChangeTextEditorVisibleRanges(listener, thisArgs, disposables); - }), + }, onDidChangeTextEditorViewColumn(listener, thisArg?, disposables?) { return extHostEditors.onDidChangeTextEditorViewColumn(listener, thisArg, disposables); }, From 2425a0e46c694a1ecfa29d3e83fb532d61d5a892 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 26 Mar 2018 18:30:57 +0200 Subject: [PATCH 0057/1070] explorer model: when merging ExplorerItems respect isSymbolicLink fixes #46536 --- src/vs/workbench/parts/files/common/explorerModel.ts | 1 + .../workbench/parts/search/browser/searchViewLocationUpdater.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index cac3eaf31c9..6abc54c895a 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -177,6 +177,7 @@ export class ExplorerItem { local.isDirectory = disk.isDirectory; local.mtime = disk.mtime; local.isDirectoryResolved = disk.isDirectoryResolved; + local._isSymbolicLink = disk.isSymbolicLink; // Merge Children if resolved if (mergingDirectories && disk.isDirectoryResolved) { diff --git a/src/vs/workbench/parts/search/browser/searchViewLocationUpdater.ts b/src/vs/workbench/parts/search/browser/searchViewLocationUpdater.ts index a7bc8a9babd..851e30dc4e5 100644 --- a/src/vs/workbench/parts/search/browser/searchViewLocationUpdater.ts +++ b/src/vs/workbench/parts/search/browser/searchViewLocationUpdater.ts @@ -30,7 +30,6 @@ export class SearchViewLocationUpdater implements IWorkbenchContribution { configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration('search.location')) { updateSearchViewLocation(); - } }); From b638f1ad1b82722b11124ac80c61bc31921c2d72 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 26 Mar 2018 10:48:29 -0700 Subject: [PATCH 0058/1070] Reduce tokenization of viewport if they are already correct. --- src/vs/editor/common/model/textModel.ts | 9 ++++++++- src/vs/editor/common/model/textModelTokens.ts | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index ccc986b4d0f..9dc2d0e38f8 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -1686,8 +1686,15 @@ export class TextModel extends Disposable implements model.ITextModel { let text = this.getLineContent(i); let r = this._tokens._tokenizeText(this._buffer, text, state); if (r) { - state = r.endState.clone(); this._tokens._setTokens(this._tokens.languageIdentifier.id, i - 1, text.length, r.tokens); + /* + * we think it's valid and give it a state but we don't update `_invalidLineStartIndex` then the top-to-bottom tokenization + * goes through the viewport, it can skip them if they already have correct tokens and state, and the lines after the viewport + * can still be tokenized. + */ + this._tokens._setIsInvalid(i - 1, false); + this._tokens._setState(i - 1, state); + state = r.endState.clone(); eventBuilder.registerChangedTokens(i); } else { state = initialState.clone(); diff --git a/src/vs/editor/common/model/textModelTokens.ts b/src/vs/editor/common/model/textModelTokens.ts index 80e5e1c7287..ab4e221927f 100644 --- a/src/vs/editor/common/model/textModelTokens.ts +++ b/src/vs/editor/common/model/textModelTokens.ts @@ -233,7 +233,7 @@ export class ModelLinesTokens { } } - private _setIsInvalid(lineIndex: number, invalid: boolean): void { + _setIsInvalid(lineIndex: number, invalid: boolean): void { if (lineIndex < this._tokens.length && this._tokens[lineIndex]) { this._tokens[lineIndex]._invalid = invalid; } @@ -278,7 +278,7 @@ export class ModelLinesTokens { target._lineTokens = tokens.buffer; } - private _setState(lineIndex: number, state: IState): void { + _setState(lineIndex: number, state: IState): void { if (lineIndex < this._tokens.length && this._tokens[lineIndex]) { this._tokens[lineIndex]._state = state; } else { From d2d9d65efcaf1b67d17e483b2c6b22192c714f59 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Mon, 26 Mar 2018 10:53:38 -0700 Subject: [PATCH 0059/1070] Update windows-process-tree version to 0.2.0 --- package.json | 2 +- src/typings/windows-process-tree.d.ts | 59 +++++++++++++++++-- .../electron-browser/windowsShellHelper.ts | 2 +- yarn.lock | 6 +- 4 files changed, 58 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 2339b0f7cbb..17b5ee8a4df 100644 --- a/package.json +++ b/package.json @@ -132,6 +132,6 @@ "optionalDependencies": { "windows-foreground-love": "0.1.0", "windows-mutex": "^0.2.0", - "windows-process-tree": "0.1.6" + "windows-process-tree": "0.2.0" } } diff --git a/src/typings/windows-process-tree.d.ts b/src/typings/windows-process-tree.d.ts index aec2670a5cd..b9db4ea76a8 100644 --- a/src/typings/windows-process-tree.d.ts +++ b/src/typings/windows-process-tree.d.ts @@ -4,13 +4,60 @@ *--------------------------------------------------------------------------------------------*/ declare module 'windows-process-tree' { - interface ProcessTreeNode { - pid: number, - name: string, - children: ProcessTreeNode[] + export enum ProcessDataFlag { + None = 0, + Memory = 1, + CommandLine = 2 } - function get(rootPid: number, callback: (tree: ProcessTreeNode) => void): void; + export interface IProcessInfo { + pid: number; + ppid: number; + name: string; - export = get; + /** + * The working set size of the process, in bytes. + */ + memory?: number; + + /** + * The string returned is at most 512 chars, strings exceeding this length are truncated. + */ + commandLine?: string; + } + + export interface IProcessCpuInfo extends IProcessInfo { + cpu?: number; + } + + export interface IProcessTreeNode { + pid: number; + name: string; + memory?: number; + commandLine?: string; + children: IProcessTreeNode[]; + } + + /** + * Returns a tree of processes with the rootPid process as the root. + * @param rootPid - The pid of the process that will be the root of the tree. + * @param callback - The callback to use with the returned list of processes. + * @param flags - The flags for what process data should be included. + */ + export function getProcessTree(rootPid: number, callback: (tree: IProcessTreeNode) => void, flags?: ProcessDataFlag): void; + + /** + * Returns a list of processes containing the rootPid process and all of its descendants. + * @param rootPid - The pid of the process of interest. + * @param callback - The callback to use with the returned set of processes. + * @param flags - The flags for what process data should be included. + */ + export function getProcessList(rootPid: number, callback: (processList: IProcessInfo[]) => void, flags?: ProcessDataFlag): void; + + /** + * Returns the list of processes annotated with cpu usage information. + * @param processList - The list of processes. + * @param callback - The callback to use with the returned list of processes. + */ + export function getProcessCpuUsage(processList: IProcessInfo[], callback: (processListWithCpu: IProcessCpuInfo[]) => void): void; } diff --git a/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts index 803ad86dd9c..ebd8347f02f 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts @@ -115,7 +115,7 @@ export class WindowsShellHelper { return this._currentRequest; } this._currentRequest = new TPromise(resolve => { - windowsProcessTree(this._rootProcessId, (tree) => { + windowsProcessTree.getProcessTree(this._rootProcessId, (tree) => { const name = this.traverseTree(tree); this._currentRequest = null; resolve(name); diff --git a/yarn.lock b/yarn.lock index 29d519dd7b8..611eae8b5b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5969,9 +5969,9 @@ windows-mutex@^0.2.0: bindings "^1.2.1" nan "^2.1.0" -windows-process-tree@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.1.6.tgz#c2d942a944152ea749a4c1c0bdb769b2f570639f" +windows-process-tree@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.2.0.tgz#04dc0507df292a7984daf0d35861bd1ebaff7ae8" dependencies: nan "^2.6.2" From e42c66306b0b34819cbee7722fcecafc923298a7 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 21 Mar 2018 21:58:19 -0700 Subject: [PATCH 0060/1070] Add context menu to search tree --- src/vs/platform/actions/common/actions.ts | 1 + .../parts/search/browser/searchActions.ts | 16 +++-- .../parts/search/browser/searchResultsView.ts | 69 ++++++++++++++++++- .../parts/search/browser/searchView.ts | 4 +- .../electron-browser/search.contribution.ts | 36 ++++++++++ 5 files changed, 119 insertions(+), 7 deletions(-) diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index d125b035683..1ea711884b8 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -59,6 +59,7 @@ export class MenuId { static readonly ViewTitle = new MenuId(); static readonly ViewItemContext = new MenuId(); static readonly TouchBarContext = new MenuId(); + static readonly SearchContext = new MenuId(); readonly id: string = String(MenuId.ID++); } diff --git a/src/vs/workbench/parts/search/browser/searchActions.ts b/src/vs/workbench/parts/search/browser/searchActions.ts index 8dcb979e257..868a64b10a7 100644 --- a/src/vs/workbench/parts/search/browser/searchActions.ts +++ b/src/vs/workbench/parts/search/browser/searchActions.ts @@ -474,8 +474,10 @@ export abstract class AbstractSearchAndReplaceAction extends Action { export class RemoveAction extends AbstractSearchAndReplaceAction { + public static LABEL = nls.localize('RemoveAction.label', "Dismiss"); + constructor(private viewer: ITree, private element: RenderableMatch) { - super('remove', nls.localize('RemoveAction.label', "Dismiss"), 'action-remove'); + super('remove', RemoveAction.LABEL, 'action-remove'); } public run(): TPromise { @@ -508,9 +510,11 @@ export class RemoveAction extends AbstractSearchAndReplaceAction { export class ReplaceAllAction extends AbstractSearchAndReplaceAction { + public static readonly LABEL = nls.localize('file.replaceAll.label', "Replace All"); + constructor(private viewer: ITree, private fileMatch: FileMatch, private viewlet: SearchView, @IKeybindingService keyBindingService: IKeybindingService) { - super(Constants.ReplaceAllInFileActionId, appendKeyBindingLabel(nls.localize('file.replaceAll.label', "Replace All"), keyBindingService.lookupKeybinding(Constants.ReplaceAllInFileActionId), keyBindingService), 'action-replace-all'); + super(Constants.ReplaceAllInFileActionId, appendKeyBindingLabel(ReplaceAllAction.LABEL, keyBindingService.lookupKeybinding(Constants.ReplaceAllInFileActionId), keyBindingService), 'action-replace-all'); } public run(): TPromise { @@ -527,10 +531,12 @@ export class ReplaceAllAction extends AbstractSearchAndReplaceAction { export class ReplaceAllInFolderAction extends AbstractSearchAndReplaceAction { + public static readonly LABEL = nls.localize('file.replaceAll.label', "Replace All"); + constructor(private viewer: ITree, private folderMatch: FolderMatch, @IKeybindingService keyBindingService: IKeybindingService ) { - super(Constants.ReplaceAllInFolderActionId, appendKeyBindingLabel(nls.localize('file.replaceAll.label', "Replace All"), keyBindingService.lookupKeybinding(Constants.ReplaceAllInFolderActionId), keyBindingService), 'action-replace-all'); + super(Constants.ReplaceAllInFolderActionId, appendKeyBindingLabel(ReplaceAllInFolderAction.LABEL, keyBindingService.lookupKeybinding(Constants.ReplaceAllInFolderActionId), keyBindingService), 'action-replace-all'); } public async run(): TPromise { @@ -546,11 +552,13 @@ export class ReplaceAllInFolderAction extends AbstractSearchAndReplaceAction { export class ReplaceAction extends AbstractSearchAndReplaceAction { + public static readonly LABEL = nls.localize('match.replace.label', "Replace"); + constructor(private viewer: ITree, private element: Match, private viewlet: SearchView, @IReplaceService private replaceService: IReplaceService, @IKeybindingService keyBindingService: IKeybindingService, @IWorkbenchEditorService private editorService: IWorkbenchEditorService) { - super(Constants.ReplaceActionId, appendKeyBindingLabel(nls.localize('match.replace.label', "Replace"), keyBindingService.lookupKeybinding(Constants.ReplaceActionId), keyBindingService), 'action-replace'); + super(Constants.ReplaceActionId, appendKeyBindingLabel(ReplaceAction.LABEL, keyBindingService.lookupKeybinding(Constants.ReplaceActionId), keyBindingService), 'action-replace'); } public run(): TPromise { diff --git a/src/vs/workbench/parts/search/browser/searchResultsView.ts b/src/vs/workbench/parts/search/browser/searchResultsView.ts index 188f2c1c147..bdb7d0d2cc9 100644 --- a/src/vs/workbench/parts/search/browser/searchResultsView.ts +++ b/src/vs/workbench/parts/search/browser/searchResultsView.ts @@ -9,10 +9,10 @@ import * as DOM from 'vs/base/browser/dom'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; import { IAction, IActionRunner } from 'vs/base/common/actions'; -import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ActionBar, ActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { FileLabel } from 'vs/workbench/browser/labels'; -import { ITree, IDataSource, ISorter, IAccessibilityProvider, IFilter, IRenderer } from 'vs/base/parts/tree/browser/tree'; +import { ITree, IDataSource, ISorter, IAccessibilityProvider, IFilter, IRenderer, ContextMenuEvent } from 'vs/base/parts/tree/browser/tree'; import { Match, SearchResult, FileMatch, FileMatchOrMatch, SearchModel, FolderMatch } from 'vs/workbench/parts/search/common/searchModel'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { Range } from 'vs/editor/common/core/range'; @@ -23,6 +23,11 @@ import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { getPathLabel } from 'vs/base/common/labels'; import { FileKind } from 'vs/platform/files/common/files'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; +import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; +import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { WorkbenchTreeController, WorkbenchTree } from 'vs/platform/list/browser/listService'; export class SearchDataSource implements IDataSource { @@ -354,3 +359,63 @@ export class SearchFilter implements IFilter { return !(element instanceof FileMatch || element instanceof FolderMatch) || element.matches().length > 0; } } + +export class SearchTreeController extends WorkbenchTreeController { + constructor( + @IContextMenuService private contextMenuService: IContextMenuService, + @IMenuService private menuService: IMenuService, + @IKeybindingService private readonly _keybindingService: IKeybindingService, + @IConfigurationService configurationService: IConfigurationService + ) { + super({}, configurationService); + } + + public onContextMenu(tree: WorkbenchTree, element: any, event: ContextMenuEvent): boolean { + tree.setFocus(element); + const actions = this._getMenuActions(tree); + if (!actions.length) { + return true; + } + + const anchor = { x: event.posx, y: event.posy }; + this.contextMenuService.showContextMenu({ + getAnchor: () => anchor, + + getActions: () => { + return TPromise.as(actions); + }, + + getActionItem: (action) => { + const keybinding = this._keybindingService.lookupKeybinding(action.id); + if (keybinding) { + return new ActionItem(action, action, { label: true, keybinding: keybinding.getLabel() }); + } + return null; + }, + + onHide: (wasCancelled?: boolean) => { + if (wasCancelled) { + tree.domFocus(); + } + } + }); + + return true; + } + + private _getMenuActions(tree: WorkbenchTree): IAction[] { + const result: IAction[] = []; + const menu = this.menuService.createMenu(MenuId.SearchContext, tree.contextKeyService); + const groups = menu.getActions(); + menu.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/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index f6b01d6a0f2..1ef8b568a8f 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -41,7 +41,7 @@ import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/c import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { KeyCode } from 'vs/base/common/keyCodes'; import { PatternInputWidget, ExcludePatternInputWidget } from 'vs/workbench/parts/search/browser/patternInputWidget'; -import { SearchRenderer, SearchDataSource, SearchSorter, SearchAccessibilityProvider, SearchFilter } from 'vs/workbench/parts/search/browser/searchResultsView'; +import { SearchRenderer, SearchDataSource, SearchSorter, SearchAccessibilityProvider, SearchFilter, SearchTreeController } from 'vs/workbench/parts/search/browser/searchResultsView'; import { SearchWidget, ISearchWidgetOptions } from 'vs/workbench/parts/search/browser/searchWidget'; import { RefreshAction, CollapseDeepestExpandedLevelAction, ClearSearchResultsAction, CancelSearchAction } from 'vs/workbench/parts/search/browser/searchActions'; import { IReplaceService } from 'vs/workbench/parts/search/common/replace'; @@ -83,6 +83,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private folderMatchFocused: IContextKey; private matchFocused: IContextKey; private hasSearchResultsKey: IContextKey; + private searchSubmitted: boolean; private searching: boolean; @@ -493,6 +494,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { renderer: renderer, sorter: new SearchSorter(), filter: new SearchFilter(), + controller: this.instantiationService.createInstance(SearchTreeController), accessibilityProvider: this.instantiationService.createInstance(SearchAccessibilityProvider), dnd }, { diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index e38d72e2114..30bb35e24fb 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -126,6 +126,15 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.RemoveActionId, + title: RemoveAction.LABEL + }, + when: Constants.FileMatchOrMatchFocusKey, + group: 'search' +}); + KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -139,6 +148,15 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceActionId, + title: ReplaceAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.MatchFocusKey), + group: 'search' +}); + KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceAllInFileActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -151,6 +169,15 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceAllInFileActionId, + title: ReplaceAllAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FileFocusKey), + group: 'search' +}); + KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceAllInFolderActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -163,6 +190,15 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceAllInFolderActionId, + title: ReplaceAllInFolderAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FolderFocusKey), + group: 'search' +}); + KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.CloseReplaceWidgetActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), From 6294fa2097954fe6ec1d789a8e81556e1c68c79b Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 22 Mar 2018 09:22:52 -0700 Subject: [PATCH 0061/1070] PR feedback --- .../parts/search/browser/searchResultsView.ts | 50 +++--------- .../parts/search/browser/searchView.ts | 2 +- .../electron-browser/search.contribution.ts | 76 ++++++++++--------- 3 files changed, 53 insertions(+), 75 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchResultsView.ts b/src/vs/workbench/parts/search/browser/searchResultsView.ts index bdb7d0d2cc9..9ce97eec3b1 100644 --- a/src/vs/workbench/parts/search/browser/searchResultsView.ts +++ b/src/vs/workbench/parts/search/browser/searchResultsView.ts @@ -9,7 +9,7 @@ import * as DOM from 'vs/base/browser/dom'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; import { IAction, IActionRunner } from 'vs/base/common/actions'; -import { ActionBar, ActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { FileLabel } from 'vs/workbench/browser/labels'; import { ITree, IDataSource, ISorter, IAccessibilityProvider, IFilter, IRenderer, ContextMenuEvent } from 'vs/base/parts/tree/browser/tree'; @@ -25,9 +25,9 @@ import { getPathLabel } from 'vs/base/common/labels'; import { FileKind } from 'vs/platform/files/common/files'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions'; import { WorkbenchTreeController, WorkbenchTree } from 'vs/platform/list/browser/listService'; +import { fillInActions } from 'vs/platform/actions/browser/menuItemActionItem'; export class SearchDataSource implements IDataSource { @@ -361,61 +361,35 @@ export class SearchFilter implements IFilter { } export class SearchTreeController extends WorkbenchTreeController { + private contextMenu: IMenu; + constructor( @IContextMenuService private contextMenuService: IContextMenuService, @IMenuService private menuService: IMenuService, - @IKeybindingService private readonly _keybindingService: IKeybindingService, @IConfigurationService configurationService: IConfigurationService ) { super({}, configurationService); } public onContextMenu(tree: WorkbenchTree, element: any, event: ContextMenuEvent): boolean { - tree.setFocus(element); - const actions = this._getMenuActions(tree); - if (!actions.length) { - return true; + if (!this.contextMenu) { + this.contextMenu = this.menuService.createMenu(MenuId.SearchContext, tree.contextKeyService); } + tree.setFocus(element); + const anchor = { x: event.posx, y: event.posy }; this.contextMenuService.showContextMenu({ getAnchor: () => anchor, getActions: () => { + const actions: IAction[] = []; + fillInActions(this.contextMenu, { shouldForwardArgs: true }, actions, this.contextMenuService); return TPromise.as(actions); }, - - getActionItem: (action) => { - const keybinding = this._keybindingService.lookupKeybinding(action.id); - if (keybinding) { - return new ActionItem(action, action, { label: true, keybinding: keybinding.getLabel() }); - } - return null; - }, - - onHide: (wasCancelled?: boolean) => { - if (wasCancelled) { - tree.domFocus(); - } - } + // getActionsContext: () => element instanceof OpenEditor ? { groupId: element.group.id, editorIndex: element.editorIndex } : { groupId: element.id } }); return true; } - - private _getMenuActions(tree: WorkbenchTree): IAction[] { - const result: IAction[] = []; - const menu = this.menuService.createMenu(MenuId.SearchContext, tree.contextKeyService); - const groups = menu.getActions(); - menu.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/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index 1ef8b568a8f..a41280fc18c 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -528,7 +528,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { if (treeHasFocus) { const focus = e.focus; this.firstMatchFocused.set(this.tree.getNavigator().first() === focus); - this.fileMatchOrMatchFocused.set(true); + this.fileMatchOrMatchFocused.set(!!focus); this.fileMatchFocused.set(focus instanceof FileMatch); this.folderMatchFocused.set(focus instanceof FolderMatch); this.matchFocused.set(focus instanceof Match); diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 30bb35e24fb..dad5c628fea 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -126,15 +126,6 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); -MenuRegistry.appendMenuItem(MenuId.SearchContext, { - command: { - id: Constants.RemoveActionId, - title: RemoveAction.LABEL - }, - when: Constants.FileMatchOrMatchFocusKey, - group: 'search' -}); - KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -148,15 +139,6 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); -MenuRegistry.appendMenuItem(MenuId.SearchContext, { - command: { - id: Constants.ReplaceActionId, - title: ReplaceAction.LABEL - }, - when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.MatchFocusKey), - group: 'search' -}); - KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceAllInFileActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -169,15 +151,6 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); -MenuRegistry.appendMenuItem(MenuId.SearchContext, { - command: { - id: Constants.ReplaceAllInFileActionId, - title: ReplaceAllAction.LABEL - }, - when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FileFocusKey), - group: 'search' -}); - KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.ReplaceAllInFolderActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -190,15 +163,6 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); -MenuRegistry.appendMenuItem(MenuId.SearchContext, { - command: { - id: Constants.ReplaceAllInFolderActionId, - title: ReplaceAllInFolderAction.LABEL - }, - when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FolderFocusKey), - group: 'search' -}); - KeybindingsRegistry.registerCommandAndKeybindingRule({ id: Constants.CloseReplaceWidgetActionId, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), @@ -229,6 +193,46 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ } }); +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceActionId, + title: ReplaceAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.MatchFocusKey), + group: 'search', + order: 1 +}); + +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceAllInFolderActionId, + title: ReplaceAllInFolderAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FolderFocusKey), + group: 'search', + order: 1 +}); + +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.ReplaceAllInFileActionId, + title: ReplaceAllAction.LABEL + }, + when: ContextKeyExpr.and(Constants.ReplaceActiveKey, Constants.FileFocusKey), + group: 'search', + order: 1 +}); + +MenuRegistry.appendMenuItem(MenuId.SearchContext, { + command: { + id: Constants.RemoveActionId, + title: RemoveAction.LABEL + }, + when: Constants.FileMatchOrMatchFocusKey, + group: 'search', + order: 2 +}); + const FIND_IN_FOLDER_ID = 'filesExplorer.findInFolder'; CommandsRegistry.registerCommand({ id: FIND_IN_FOLDER_ID, From 60b9d1ba02cdb846c240f307daf253fd02a193c5 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Mon, 26 Mar 2018 11:49:44 -0700 Subject: [PATCH 0062/1070] Add support for filing an issue on an extension within the issue reporter, #45673 --- .../issue/issueReporterMain.ts | 123 ++++++++++++------ .../issue/issueReporterModel.ts | 18 ++- .../issue/issueReporterPage.ts | 41 +++--- .../issue/media/issueReporter.css | 35 +---- .../issue/test/testReporterModel.test.ts | 3 +- .../common/extensionManagement.ts | 3 + 6 files changed, 122 insertions(+), 101 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index f6bbf228784..e179fc5c52a 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -213,9 +213,9 @@ export class IssueReporter extends Disposable { if (this.environmentService.disableExtensions || extensions.length === 0) { (document.getElementById('disableExtensions')).disabled = true; - (document.getElementById('reproducesWithoutExtensions')).checked = true; - this.issueReporterModel.update({ reprosWithoutExtensions: true }); } + + this.updateExtensionSelector(extensions); } private handleSettingsSearchData(data: ISettingsSearchIssueReporterData): void { @@ -322,30 +322,21 @@ export class IssueReporter extends Disposable { }); } - this.addEventListener('reproducesWithoutExtensions', 'click', (e) => { - this.issueReporterModel.update({ reprosWithoutExtensions: true }); - }); - - this.addEventListener('reproducesWithExtensions', 'click', (e) => { - this.issueReporterModel.update({ reprosWithoutExtensions: false }); + this.addEventListener('issue-source', 'change', (event: Event) => { + const fileOnExtension = JSON.parse((event.target).value); + this.issueReporterModel.update({ fileOnExtension: fileOnExtension, includeExtensions: !fileOnExtension }); + this.render(); + this.search(); }); this.addEventListener('description', 'input', (event: Event) => { const issueDescription = (event.target).value; this.issueReporterModel.update({ issueDescription }); - - const title = (document.getElementById('issue-title')).value; - if (title || issueDescription) { - this.searchDuplicates(title, issueDescription); - } else { - this.clearSearchResults(); - } + this.search(); }); this.addEventListener('issue-title', 'input', (e) => { - const description = this.issueReporterModel.getData().issueDescription; const title = (event.target).value; - const lengthValidationMessage = document.getElementById('issue-title-length-validation-error'); if (title && this.getIssueUrlWithTitle(title).length > MAX_URL_LENGTH) { show(lengthValidationMessage); @@ -353,11 +344,7 @@ export class IssueReporter extends Disposable { hide(lengthValidationMessage); } - if (title || description) { - this.searchDuplicates(title, description); - } else { - this.clearSearchResults(); - } + this.search(); }); this.addEventListener('github-submit-btn', 'click', () => this.createIssue()); @@ -373,16 +360,6 @@ export class IssueReporter extends Disposable { } }); - this.addEventListener('showRunning', 'click', () => { - ipcRenderer.send('workbenchCommand', 'workbench.action.showRuntimeExtensions'); - }); - - this.addEventListener('showRunning', 'keydown', (e: KeyboardEvent) => { - if (e.keyCode === 13 || e.keyCode === 32) { - ipcRenderer.send('workbenchCommand', 'workbench.action.showRuntimeExtensions'); - } - }); - // Cmd+Enter or Mac or Ctrl+Enter on other platforms previews issue and closes window if (platform.isMacintosh) { let prevKeyWasCommand = false; @@ -438,6 +415,23 @@ export class IssueReporter extends Disposable { return false; } + private search(): void { + // Only search issues in VSCode for now. + const fileOnExtension = this.issueReporterModel.getData().fileOnExtension; + if (fileOnExtension) { + this.clearSearchResults(); + return; + } + + const title = (document.getElementById('issue-title')).value; + const issueDescription = (document.getElementById('description')).value; + if (title || issueDescription) { + this.searchDuplicates(title, issueDescription); + } else { + this.clearSearchResults(); + } + } + private clearSearchResults(): void { const similarIssues = document.getElementById('similar-issues'); similarIssues.innerHTML = ''; @@ -551,7 +545,7 @@ export class IssueReporter extends Disposable { private renderBlocks(): void { // Depending on Issue Type, we render different blocks and text - const { issueType } = this.issueReporterModel.getData(); + const { issueType, fileOnExtension } = this.issueReporterModel.getData(); const blockContainer = document.getElementById('block-container'); const systemBlock = document.querySelector('.block-system'); const processBlock = document.querySelector('.block-process'); @@ -560,9 +554,10 @@ export class IssueReporter extends Disposable { const searchedExtensionsBlock = document.querySelector('.block-searchedExtensions'); const settingsSearchResultsBlock = document.querySelector('.block-settingsSearchResults'); - const disabledExtensions = document.getElementById('disabledExtensions'); + const problemSource = document.getElementById('problem-source'); const descriptionTitle = document.getElementById('issue-description-label'); const descriptionSubtitle = document.getElementById('issue-description-subtitle'); + const extensionSelector = document.getElementById('extension-selection'); // Hide all by default hide(blockContainer); @@ -572,13 +567,20 @@ export class IssueReporter extends Disposable { hide(extensionsBlock); hide(searchedExtensionsBlock); hide(settingsSearchResultsBlock); - hide(disabledExtensions); + hide(problemSource); if (issueType === IssueType.Bug) { show(blockContainer); show(systemBlock); - show(extensionsBlock); - show(disabledExtensions); + show(problemSource); + + if (fileOnExtension) { + hide(extensionsBlock); + show(extensionSelector); + } else { + show(extensionsBlock); + hide(extensionSelector); + } descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} *`; descriptionSubtitle.innerHTML = localize('bugDescription', "Share the steps needed to reliably reproduce the problem. Please include actual and expected results. We support GitHub-flavored Markdown. You will be able to edit your issue and add screenshots when we preview it on GitHub."); @@ -588,7 +590,15 @@ export class IssueReporter extends Disposable { show(processBlock); show(workspaceBlock); show(extensionsBlock); - show(disabledExtensions); + show(problemSource); + + if (fileOnExtension) { + hide(extensionsBlock); + show(extensionSelector); + } else { + show(extensionsBlock); + hide(extensionSelector); + } descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} *`; descriptionSubtitle.innerHTML = localize('performanceIssueDesciption', "When did this performance issue happen? Does it occur on startup or after a specific series of actions? We support GitHub-flavored Markdown. You will be able to edit your issue and add screenshots when we preview it on GitHub."); @@ -618,9 +628,8 @@ export class IssueReporter extends Disposable { private validateInputs(): boolean { let isValid = true; - ['issue-title', 'description'].forEach(elementId => { + ['issue-title', 'description', 'issue-source', 'extension-selector'].forEach(elementId => { isValid = this.validateInput(elementId) && isValid; - }); return isValid; @@ -630,7 +639,10 @@ export class IssueReporter extends Disposable { if (!this.validateInputs()) { // If inputs are invalid, set focus to the first one and add listeners on them // to detect further changes - (document.getElementsByClassName('invalid-input')[0]).focus(); + const invalidInput = document.getElementsByClassName('invalid-input'); + if (invalidInput.length) { + (invalidInput[0]).focus(); + } document.getElementById('issue-title').addEventListener('input', (event) => { this.validateInput('issue-title'); @@ -664,9 +676,19 @@ export class IssueReporter extends Disposable { return true; } - private getIssueUrlWithTitle(issueTitle: string) { + private getIssueUrlWithTitle(issueTitle: string): string { + let repositoryUrl = product.reportIssueUrl; + if (this.issueReporterModel.getData().fileOnExtension) { + const selectedExtension = this.issueReporterModel.getData().selectedExtension; + const extensionUrl = selectedExtension && selectedExtension.manifest && selectedExtension.manifest.repository && selectedExtension.manifest.repository.url; + if (extensionUrl) { + // Remove '.git' suffix + repositoryUrl = `${extensionUrl.indexOf('.git') !== -1 ? extensionUrl.substr(0, extensionUrl.length - 4) : extensionUrl}/issues/new/`; + } + } + const queryStringPrefix = product.reportIssueUrl.indexOf('?') === -1 ? '?' : '&'; - return `${product.reportIssueUrl}${queryStringPrefix}title=${encodeURIComponent(issueTitle)}`; + return `${repositoryUrl}${queryStringPrefix}title=${encodeURIComponent(issueTitle)}`; } private updateSystemInfo = (state) => { @@ -682,6 +704,21 @@ export class IssueReporter extends Disposable { target.innerHTML = `${tableHtml}
`; } + private updateExtensionSelector(extensions: ILocalExtension[]): void { + const makeOption = (extension: ILocalExtension) => ``; + const extensionsSelector = document.getElementById('extension-selector'); + extensionsSelector.innerHTML = '' + extensions.map(makeOption).join('\n'); + + this.addEventListener('extension-selector', 'change', (e: Event) => { + const selectedExtensionId = (e.target).value; + const extensions = this.issueReporterModel.getData().enabledNonThemeExtesions; + const matches = extensions.filter(extension => extension.identifier.id === selectedExtensionId); + if (matches.length) { + this.issueReporterModel.update({ selectedExtension: matches[0] }); + } + }); + } + private updateProcessInfo = (state) => { const target = document.querySelector('.block-process .block-info'); target.innerHTML = `${state.processInfo}`; diff --git a/src/vs/code/electron-browser/issue/issueReporterModel.ts b/src/vs/code/electron-browser/issue/issueReporterModel.ts index a6ec8153424..8be6fa1bea9 100644 --- a/src/vs/code/electron-browser/issue/issueReporterModel.ts +++ b/src/vs/code/electron-browser/issue/issueReporterModel.ts @@ -28,7 +28,8 @@ export interface IssueReporterData { numberOfThemeExtesions?: number; enabledNonThemeExtesions?: ILocalExtension[]; extensionsDisabled?: boolean; - reprosWithoutExtensions?: boolean; + fileOnExtension?: boolean; + selectedExtension?: ILocalExtension; actualSearchResults?: ISettingSearchResult[]; query?: string; filterResultCount?: number; @@ -44,8 +45,7 @@ export class IssueReporterModel { includeProcessInfo: true, includeExtensions: true, includeSearchedExtensions: true, - includeSettingsSearchDetails: true, - reprosWithoutExtensions: false + includeSettingsSearchDetails: true }; this._data = initialData ? assign(defaultData, initialData) : defaultData; @@ -64,7 +64,7 @@ export class IssueReporterModel { Issue Type: ${this.getIssueTypeTitle()} ${this._data.issueDescription} - +${this.getExtensionVersion()} VS Code version: ${this._data.versionInfo && this._data.versionInfo.vscodeVersion} OS version: ${this._data.versionInfo && this._data.versionInfo.os} @@ -72,6 +72,14 @@ ${this.getInfos()} `; } + private getExtensionVersion(): string { + if (this._data.fileOnExtension) { + return `\nExtension version: ${this._data.selectedExtension.manifest.version}`; + } else { + return ''; + } + } + private getIssueTypeTitle(): string { if (this._data.issueType === IssueType.Bug) { return 'Bug'; @@ -108,8 +116,6 @@ ${this.getInfos()} if (this._data.includeExtensions) { info += this.generateExtensionsMd(); } - - info += this._data.reprosWithoutExtensions ? '\nReproduces without extensions' : '\nReproduces only with extensions'; } if (this._data.issueType === IssueType.SettingsSearchIssue) { diff --git a/src/vs/code/electron-browser/issue/issueReporterPage.ts b/src/vs/code/electron-browser/issue/issueReporterPage.ts index abf3c7b4ad6..045a35fb717 100644 --- a/src/vs/code/electron-browser/issue/issueReporterPage.ts +++ b/src/vs/code/electron-browser/issue/issueReporterPage.ts @@ -27,6 +27,25 @@ export default (): string => ` + +
+ + +
${escape(localize('disableExtensionsLabelText', "Try to reproduce the problem after {0}. If the problem only reproduces when extensions are active, it is likely an issue with an extension.")) + .replace('{0}', `${escape(localize('disableExtensions', "disabling all extensions and reloading the window"))}`)} +
+ +
+ + +
+
+
@@ -112,28 +131,6 @@ export default (): string => `
-
-
- -
-
- - -
-
- - -
-
-
-
${escape(localize('disableExtensionsLabelText', "Try to reproduce the problem after {0}.")) - .replace('{0}', `${escape(localize('disableExtensions', "disabling all extensions and reloading the window"))}`)} -
-
${escape(localize('showRunningExtensionsLabelText', "If you suspect it's an extension issue, {0} to report the issue on the extension.")) - .replace('{0}', `${escape(localize('showRunningExtensions', "view all running extensions"))}`)} -
-
-
From 3fca70781ecf7f54ac78081a5b01ecb7d3c6b20a Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Wed, 28 Mar 2018 10:52:47 -0700 Subject: [PATCH 0228/1070] Don't show help text when filing against an extension, fixes #46787 --- src/vs/code/electron-browser/issue/issueReporterMain.ts | 9 +++++---- src/vs/code/electron-browser/issue/issueReporterPage.ts | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index 78aa4c56373..6af83069392 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -624,6 +624,7 @@ export class IssueReporter extends Disposable { const settingsSearchResultsBlock = document.querySelector('.block-settingsSearchResults'); const problemSource = document.getElementById('problem-source'); + const problemSourceHelpText = document.getElementById('problem-source-help-text'); const descriptionTitle = document.getElementById('issue-description-label'); const descriptionSubtitle = document.getElementById('issue-description-subtitle'); const extensionSelector = document.getElementById('extension-selection'); @@ -637,6 +638,8 @@ export class IssueReporter extends Disposable { hide(searchedExtensionsBlock); hide(settingsSearchResultsBlock); hide(problemSource); + hide(problemSourceHelpText); + hide(extensionSelector); if (issueType === IssueType.Bug) { show(blockContainer); @@ -644,11 +647,10 @@ export class IssueReporter extends Disposable { show(problemSource); if (fileOnExtension) { - hide(extensionsBlock); show(extensionSelector); } else { show(extensionsBlock); - hide(extensionSelector); + show(problemSourceHelpText); } descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} *`; @@ -662,11 +664,10 @@ export class IssueReporter extends Disposable { show(problemSource); if (fileOnExtension) { - hide(extensionsBlock); show(extensionSelector); } else { show(extensionsBlock); - hide(extensionSelector); + show(problemSourceHelpText); } descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} *`; diff --git a/src/vs/code/electron-browser/issue/issueReporterPage.ts b/src/vs/code/electron-browser/issue/issueReporterPage.ts index 96a819be1df..4991cd98b70 100644 --- a/src/vs/code/electron-browser/issue/issueReporterPage.ts +++ b/src/vs/code/electron-browser/issue/issueReporterPage.ts @@ -25,7 +25,7 @@ export default (): string => ` -
${escape(localize('disableExtensionsLabelText', "Try to reproduce the problem after {0}. If the problem only reproduces when extensions are active, it is likely an issue with an extension.")) +
${escape(localize('disableExtensionsLabelText', "Try to reproduce the problem after {0}. If the problem only reproduces when extensions are active, it is likely an issue with an extension.")) .replace('{0}', `${escape(localize('disableExtensions', "disabling all extensions and reloading the window"))}`)}
From 9e0374f29f81fd8038b2633f2cc4cd69ac682759 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Wed, 28 Mar 2018 21:13:36 +0200 Subject: [PATCH 0229/1070] Fixes #46709: Tasks: Single/double quotes not quoted/escaped --- .../tasks/electron-browser/terminalTaskSystem.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index 17de814f26e..02621b26855 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -62,18 +62,24 @@ export class TerminalTaskSystem implements ITaskSystem { 'powershell': { escape: { escapeChar: '`', - charsToEscape: ` ()` + charsToEscape: ' "\'()' }, strong: '\'', weak: '"' }, 'bash': { - escape: '\\', + escape: { + escapeChar: '\\', + charsToEscape: ' "\'' + }, strong: '\'', weak: '"' }, 'zsh': { - escape: '\\', + escape: { + escapeChar: '\\', + charsToEscape: ' "\'' + }, strong: '\'', weak: '"' } From d9d762d1ceea893ded09d625cfcd689c1187a860 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 28 Mar 2018 21:39:44 +0200 Subject: [PATCH 0230/1070] [css] .asar file breaks CSS path completion. Fixes #46638 --- .../server/src/pathCompletion.ts | 10 +++++++--- .../server/src/test/completion.test.ts | 14 ++++++++++++++ .../test/pathCompletionFixtures/src/data/foo.asar | 4 ++++ .../server/src/modes/pathCompletion.ts | 10 +++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 extensions/css-language-features/server/test/pathCompletionFixtures/src/data/foo.asar diff --git a/extensions/css-language-features/server/src/pathCompletion.ts b/extensions/css-language-features/server/src/pathCompletion.ts index 76b93f3a628..2f840184a14 100644 --- a/extensions/css-language-features/server/src/pathCompletion.ts +++ b/extensions/css-language-features/server/src/pathCompletion.ts @@ -10,7 +10,7 @@ import URI from 'vscode-uri'; import { TextDocument, CompletionList, CompletionItemKind, CompletionItem, TextEdit, Range, Position } from 'vscode-languageserver-types'; import { WorkspaceFolder } from 'vscode-languageserver'; -import { ICompletionParticipant } from 'vscode-css-languageservice'; +import { ICompletionParticipant, URILiteralCompletionContext } from 'vscode-css-languageservice'; import { startsWith } from './utils/strings'; @@ -20,7 +20,7 @@ export function getPathCompletionParticipant( result: CompletionList ): ICompletionParticipant { return { - onURILiteralValue: (context: { uriValue: string, position: Position, range: Range; }) => { + onURILiteralValue: (context: URILiteralCompletionContext) => { if (!workspaceFolders || workspaceFolders.length === 0) { return; } @@ -91,7 +91,11 @@ export function providePathSuggestions(value: string, range: Range, activeDocFsP } const isDir = (p: string) => { - return fs.statSync(p).isDirectory(); + try { + return fs.statSync(p).isDirectory(); + } catch (e) { + return false; + } }; function resolveWorkspaceRoot(activeDoc: TextDocument, workspaceFolders: WorkspaceFolder[]): string | undefined { diff --git a/extensions/css-language-features/server/src/test/completion.test.ts b/extensions/css-language-features/server/src/test/completion.test.ts index 518a467cf40..82f1af7026d 100644 --- a/extensions/css-language-features/server/src/test/completion.test.ts +++ b/extensions/css-language-features/server/src/test/completion.test.ts @@ -77,5 +77,19 @@ suite('Completions', () => { { label: 'src/', resultText: `html { background-image: url('../src/')` } ] }, testUri); + + assertCompletions(`html { background-image: url('../src/a|')`, { + items: [ + { label: 'feature.js', resultText: `html { background-image: url('../src/feature.js')` }, + { label: 'data/', resultText: `html { background-image: url('../src/data/')` }, + { label: 'test.js', resultText: `html { background-image: url('../src/test.js')` } + ] + }, testUri); + + assertCompletions(`html { background-image: url('../src/data/f|.asar')`, { + items: [ + { label: 'foo.asar', resultText: `html { background-image: url('../src/data/foo.asar')` } + ] + }, testUri); }); }); \ No newline at end of file diff --git a/extensions/css-language-features/server/test/pathCompletionFixtures/src/data/foo.asar b/extensions/css-language-features/server/test/pathCompletionFixtures/src/data/foo.asar new file mode 100644 index 00000000000..adae63e647c --- /dev/null +++ b/extensions/css-language-features/server/test/pathCompletionFixtures/src/data/foo.asar @@ -0,0 +1,4 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ \ No newline at end of file diff --git a/extensions/html-language-features/server/src/modes/pathCompletion.ts b/extensions/html-language-features/server/src/modes/pathCompletion.ts index afb5089fbfd..10e4649a0e3 100644 --- a/extensions/html-language-features/server/src/modes/pathCompletion.ts +++ b/extensions/html-language-features/server/src/modes/pathCompletion.ts @@ -82,7 +82,7 @@ function providePaths(valueBeforeCursor: string, activeDocFsPath: string, root?: try { return fs.readdirSync(parentDir).map(f => { - return fs.statSync(path.resolve(parentDir, f)).isDirectory() + return isDir(path.resolve(parentDir, f)) ? f + '/' : f; }); @@ -91,6 +91,14 @@ function providePaths(valueBeforeCursor: string, activeDocFsPath: string, root?: } } +function isDir(p: string) { + try { + return fs.statSync(p).isDirectory(); + } catch (e) { + return false; + } +} + function pathToSuggestion(p: string, valueBeforeCursor: string, fullValue: string, range: Range): CompletionItem { const isDir = p[p.length - 1] === '/'; From dcc822dac11fa3fe3720739bfff703e6c15ad5fc Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 28 Mar 2018 22:20:22 +0200 Subject: [PATCH 0231/1070] Store the first visible line in the view state (#41968) --- .../editor/browser/widget/codeEditorWidget.ts | 8 ++-- src/vs/editor/common/commonCodeEditor.ts | 2 +- src/vs/editor/common/editorCommon.ts | 8 +++- src/vs/editor/common/viewLayout/viewLayout.ts | 13 +------ src/vs/editor/common/viewModel/viewModel.ts | 5 +-- .../editor/common/viewModel/viewModelImpl.ts | 37 +++++++++++++++++++ src/vs/monaco.d.ts | 8 +++- 7 files changed, 56 insertions(+), 25 deletions(-) diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 8c517a711d6..a46cc954011 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -455,11 +455,11 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito return; } if (s && s.cursorState && s.viewState) { - const reducedState = this.viewModel.viewLayout.reduceRestoreState(s.viewState); + const reducedState = this.viewModel.reduceRestoreState(s.viewState); const linesViewportData = this.viewModel.viewLayout.getLinesViewportDataAtScrollTop(reducedState.scrollTop); - const startViewPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.startLineNumber, 1)); - const endViewPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.endLineNumber, 1)); - this.model.tokenizeViewport(startViewPosition.lineNumber, endViewPosition.lineNumber); + const startPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.startLineNumber, 1)); + const endPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.endLineNumber, 1)); + this.model.tokenizeViewport(startPosition.lineNumber, endPosition.lineNumber); this._view.restoreState(reducedState); } } diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index 91af610e886..b9c9ca1a3c9 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -641,7 +641,7 @@ export abstract class CommonCodeEditor extends Disposable { } const cursorState = this.cursor.saveState(); - const viewState = this.viewModel.viewLayout.saveState(); + const viewState = this.viewModel.saveState(); return { cursorState: cursorState, viewState: viewState, diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index 44106c97324..5ad6a70a0f6 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -199,9 +199,13 @@ export interface ICursorState { * A (serializable) state of the view. */ export interface IViewState { - scrollTop: number; - scrollTopWithoutViewZones: number; + /** written by previous versions */ + scrollTop?: number; + /** written by previous versions */ + scrollTopWithoutViewZones?: number; scrollLeft: number; + firstPosition: IPosition; + firstPositionDeltaTop: number; } /** * A (serializable) state of the code editor. diff --git a/src/vs/editor/common/viewLayout/viewLayout.ts b/src/vs/editor/common/viewLayout/viewLayout.ts index d04c5657afb..a7e1f091386 100644 --- a/src/vs/editor/common/viewLayout/viewLayout.ts +++ b/src/vs/editor/common/viewLayout/viewLayout.ts @@ -163,7 +163,7 @@ export class ViewLayout extends Disposable implements IViewLayout { // ---- view state - public saveState(): editorCommon.IViewState { + public saveState(): { scrollTop: number; scrollTopWithoutViewZones: number; scrollLeft: number; } { const currentScrollPosition = this.scrollable.getFutureScrollPosition(); let scrollTop = currentScrollPosition.scrollTop; let firstLineNumberInViewport = this._linesLayout.getLineNumberAtOrAfterVerticalOffset(scrollTop); @@ -175,17 +175,6 @@ export class ViewLayout extends Disposable implements IViewLayout { }; } - public reduceRestoreState(state: editorCommon.IViewState): { scrollLeft: number; scrollTop: number; } { - let restoreScrollTop = state.scrollTop; - if (typeof state.scrollTopWithoutViewZones === 'number' && !this._linesLayout.hasWhitespace()) { - restoreScrollTop = state.scrollTopWithoutViewZones; - } - return { - scrollLeft: state.scrollLeft, - scrollTop: restoreScrollTop - }; - } - // ---- IVerticalLayoutProvider public addWhitespace(afterLineNumber: number, ordinal: number, height: number): number { diff --git a/src/vs/editor/common/viewModel/viewModel.ts b/src/vs/editor/common/viewModel/viewModel.ts index 3dc65ee071a..12766993b5d 100644 --- a/src/vs/editor/common/viewModel/viewModel.ts +++ b/src/vs/editor/common/viewModel/viewModel.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { INewScrollPosition, IViewState } from 'vs/editor/common/editorCommon'; +import { INewScrollPosition } from 'vs/editor/common/editorCommon'; import { EndOfLinePreference, IModelDecorationOptions } from 'vs/editor/common/model'; import { IViewLineTokens } from 'vs/editor/common/core/lineTokens'; import { Position, IPosition } from 'vs/editor/common/core/position'; @@ -63,9 +63,6 @@ export interface IViewLayout { getLinesViewportDataAtScrollTop(scrollTop: number): IPartialViewLinesViewportData; getWhitespaces(): IEditorWhitespace[]; - saveState(): IViewState; - reduceRestoreState(state: IViewState): { scrollLeft: number; scrollTop: number; }; - isAfterLines(verticalOffset: number): boolean; getLineNumberAtVerticalOffset(verticalOffset: number): number; getVerticalOffsetForLineNumber(lineNumber: number): number; diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index 6f9f27e704e..e857d492b4c 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -409,6 +409,43 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel ); } + public saveState(): editorCommon.IViewState { + const compatViewState = this.viewLayout.saveState(); + + const scrollTop = compatViewState.scrollTop; + const firstViewLineNumber = this.viewLayout.getLineNumberAtVerticalOffset(scrollTop); + const firstPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(firstViewLineNumber, this.getLineMinColumn(firstViewLineNumber))); + const firstPositionDeltaTop = this.viewLayout.getVerticalOffsetForLineNumber(firstViewLineNumber) - scrollTop; + + return { + scrollLeft: compatViewState.scrollLeft, + firstPosition: firstPosition, + firstPositionDeltaTop: firstPositionDeltaTop + }; + } + + public reduceRestoreState(state: editorCommon.IViewState): { scrollLeft: number; scrollTop: number; } { + if (typeof state.firstPosition === 'undefined') { + // This is a view state serialized by an older version + return this._reduceRestoreStateCompatibility(state); + } + + const modelPosition = this.model.validatePosition(state.firstPosition); + const viewPosition = this.coordinatesConverter.convertModelPositionToViewPosition(modelPosition); + const scrollTop = this.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber) - state.firstPositionDeltaTop; + return { + scrollLeft: state.scrollLeft, + scrollTop: scrollTop + }; + } + + private _reduceRestoreStateCompatibility(state: editorCommon.IViewState): { scrollLeft: number; scrollTop: number; } { + return { + scrollLeft: state.scrollLeft, + scrollTop: state.scrollTopWithoutViewZones + }; + } + public getTabSize(): number { return this.model.getOptions().tabSize; } diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index dd91585c691..700626d549a 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -1927,9 +1927,13 @@ declare namespace monaco.editor { * A (serializable) state of the view. */ export interface IViewState { - scrollTop: number; - scrollTopWithoutViewZones: number; + /** written by previous versions */ + scrollTop?: number; + /** written by previous versions */ + scrollTopWithoutViewZones?: number; scrollLeft: number; + firstPosition: IPosition; + firstPositionDeltaTop: number; } /** From 4b55e2d7de5b8feafe913b20d7f2844b28acc8dc Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 28 Mar 2018 23:08:29 +0200 Subject: [PATCH 0232/1070] [css] update service --- extensions/css-language-features/server/package.json | 2 +- extensions/css-language-features/server/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 88ed441a3ed..25d1ffe0c96 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,7 +8,7 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.3", + "vscode-css-languageservice": "^3.0.9-next.4", "vscode-emmet-helper": "^1.2.4", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^1.0.1" diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 8ce04e915c9..5b970d64c4b 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -18,9 +18,9 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-css-languageservice@^3.0.9-next.3: - version "3.0.9-next.3" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.3.tgz#c6b8baf316d3b87d5896d2694721d6b90ce41c00" +vscode-css-languageservice@^3.0.9-next.4: + version "3.0.9-next.4" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.4.tgz#d50d4186f70b0dcedf37337b99e71d1ffdc22684" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" From b2f572cf0f5325da6d52413db12d03474b2e0ce0 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 28 Mar 2018 23:28:48 +0200 Subject: [PATCH 0233/1070] Fixes #45996: Edit only the indentation part of a line --- .../editor/contrib/indentation/indentation.ts | 25 +++++++++++++------ .../indentation/test/indentation.test.ts | 20 ++++++++++++--- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/vs/editor/contrib/indentation/indentation.ts b/src/vs/editor/contrib/indentation/indentation.ts index 859db38bb06..3ca805ebfad 100644 --- a/src/vs/editor/contrib/indentation/indentation.ts +++ b/src/vs/editor/contrib/indentation/indentation.ts @@ -586,18 +586,27 @@ function getIndentationEditOperations(model: ITextModel, builder: IEditOperation spaces += ' '; } - const content = model.getLinesContent(); - for (let i = 0; i < content.length; i++) { - let lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(i + 1); + let spacesRegExp = new RegExp(spaces, 'gi'); + + for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) { + let lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber); if (lastIndentationColumn === 0) { - lastIndentationColumn = model.getLineMaxColumn(i + 1); + lastIndentationColumn = model.getLineMaxColumn(lineNumber); } - const text = (tabsToSpaces ? content[i].substr(0, lastIndentationColumn).replace(/\t/ig, spaces) : - content[i].substr(0, lastIndentationColumn).replace(new RegExp(spaces, 'gi'), '\t')) + - content[i].substr(lastIndentationColumn); + if (lastIndentationColumn === 1) { + continue; + } - builder.addEditOperation(new Range(i + 1, 1, i + 1, model.getLineMaxColumn(i + 1)), text); + const originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn); + const originalIndentation = model.getValueInRange(originalIndentationRange); + const newIndentation = ( + tabsToSpaces + ? originalIndentation.replace(/\t/ig, spaces) + : originalIndentation.replace(spacesRegExp, '\t') + ); + + builder.addEditOperation(originalIndentationRange, newIndentation); } } diff --git a/src/vs/editor/contrib/indentation/test/indentation.test.ts b/src/vs/editor/contrib/indentation/test/indentation.test.ts index 1f2e9ff1577..59ece7d34e7 100644 --- a/src/vs/editor/contrib/indentation/test/indentation.test.ts +++ b/src/vs/editor/contrib/indentation/test/indentation.test.ts @@ -57,7 +57,7 @@ suite('Editor Contrib - Indentation to Spaces', () => { 'fourth line', 'fifth' ], - new Selection(1, 5, 1, 5) + new Selection(1, 9, 1, 9) ); }); @@ -79,7 +79,7 @@ suite('Editor Contrib - Indentation to Spaces', () => { ' fourth line', 'fifth' ], - new Selection(1, 5, 1, 5) + new Selection(1, 7, 1, 7) ); }); @@ -157,7 +157,7 @@ suite('Editor Contrib - Indentation to Tabs', () => { ' fourth line', 'fifth' ], - new Selection(1, 5, 1, 5), + new Selection(1, 8, 1, 8), 2, [ '\t\t\tfirst ', @@ -169,4 +169,18 @@ suite('Editor Contrib - Indentation to Tabs', () => { new Selection(1, 5, 1, 5) ); }); + + test('issue #45996', function () { + testIndentationToSpacesCommand( + [ + '\tabc', + ], + new Selection(1, 3, 1, 3), + 4, + [ + ' abc', + ], + new Selection(1, 6, 1, 6) + ); + }); }); From c8d61024f967b3120be8322da6ed9dcb5f624873 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Wed, 28 Mar 2018 14:28:33 -0700 Subject: [PATCH 0234/1070] Change similar issues section to have a max height instead of a fixed height, fixes #46124 --- src/vs/code/electron-browser/issue/media/issueReporter.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index 486ab705a5a..7e7217fe2ba 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -345,7 +345,7 @@ button { .issues-container { margin-left: 1.5em; margin-top: .5em; - height: 92px; + max-height: 92px; overflow-y: auto; } From a4da791b92bdfb9f49d9193caf397aa6581ef16d Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 29 Mar 2018 00:03:48 +0200 Subject: [PATCH 0235/1070] Fixes #45908: Use idiomatic programming --- .../browser/preferencesRenderers.ts | 47 ++++--------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts index 45f83466767..20e9351d138 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts @@ -879,16 +879,12 @@ export class FilteredMatchesRenderer extends Disposable implements HiddenAreasPr public render(result: IFilterResult, allSettingsGroups: ISettingsGroup[]): void { const model = this.editor.getModel(); this.hiddenAreas = []; - this.editor.changeDecorations(changeAccessor => { - this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, []); - }); if (result) { this.hiddenAreas = this.computeHiddenRanges(result.filteredGroups, result.allGroups, model); - this.editor.changeDecorations(changeAccessor => { - this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, result.matches.map(match => this.createDecoration(match, model))); - }); + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, result.matches.map(match => this.createDecoration(match, model))); } else { this.hiddenAreas = this.computeHiddenRanges(null, allSettingsGroups, model); + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, []); } } @@ -920,11 +916,7 @@ export class FilteredMatchesRenderer extends Disposable implements HiddenAreasPr } public dispose() { - if (this.decorationIds) { - this.decorationIds = this.editor.changeDecorations(changeAccessor => { - return changeAccessor.deltaDecorations(this.decorationIds, []); - }); - } + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, []); super.dispose(); } } @@ -940,14 +932,7 @@ export class HighlightMatchesRenderer extends Disposable { public render(matches: IRange[]): void { const model = this.editor.getModel(); - this.editor.changeDecorations(changeAccessor => { - this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, []) || []; - }); - if (matches.length) { - this.editor.changeDecorations(changeAccessor => { - this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, matches.map(match => this.createDecoration(match, model))) || []; - }); - } + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, matches.map(match => this.createDecoration(match, model))); } private static readonly _FIND_MATCH = ModelDecorationOptions.register({ @@ -963,11 +948,7 @@ export class HighlightMatchesRenderer extends Disposable { } public dispose() { - if (this.decorationIds) { - this.decorationIds = this.editor.changeDecorations(changeAccessor => { - return changeAccessor.deltaDecorations(this.decorationIds, []); - }) || []; - } + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, []); super.dispose(); } } @@ -1383,7 +1364,7 @@ class UnsupportedSettingsRenderer extends Disposable { } else { this.markerService.remove('preferencesEditor', [this.settingsEditorModel.uri]); } - this.editor.changeDecorations(changeAccessor => this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, ranges.map(range => this.createDecoration(range, this.editor.getModel())))); + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, ranges.map(range => this.createDecoration(range, this.editor.getModel()))); } private createDecoration(range: IRange, model: ITextModel): IModelDeltaDecoration { @@ -1404,11 +1385,7 @@ class UnsupportedSettingsRenderer extends Disposable { public dispose(): void { this.markerService.remove('preferencesEditor', [this.settingsEditorModel.uri]); - if (this.decorationIds) { - this.decorationIds = this.editor.changeDecorations(changeAccessor => { - return changeAccessor.deltaDecorations(this.decorationIds, []); - }); - } + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, []); super.dispose(); } @@ -1444,8 +1421,6 @@ class WorkspaceConfigurationRenderer extends Disposable { this.associatedSettingsEditorModel = associatedSettingsEditorModel; // Dim other configurations in workspace configuration file only in the context of Settings Editor if (this.associatedSettingsEditorModel && this.workspaceContextService.getWorkbenchState() === WorkbenchState.WORKSPACE && this.workspaceSettingsEditorModel instanceof WorkspaceConfigurationEditorModel) { - this.editor.changeDecorations(changeAccessor => this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, [])); - const ranges: IRange[] = []; for (const settingsGroup of this.workspaceSettingsEditorModel.configurationGroups) { for (const section of settingsGroup.sections) { @@ -1461,7 +1436,7 @@ class WorkspaceConfigurationRenderer extends Disposable { } } } - this.editor.changeDecorations(changeAccessor => this.decorationIds = changeAccessor.deltaDecorations(this.decorationIds, ranges.map(range => this.createDecoration(range, this.editor.getModel())))); + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, ranges.map(range => this.createDecoration(range, this.editor.getModel()))); } } @@ -1478,11 +1453,7 @@ class WorkspaceConfigurationRenderer extends Disposable { } public dispose(): void { - if (this.decorationIds) { - this.decorationIds = this.editor.changeDecorations(changeAccessor => { - return changeAccessor.deltaDecorations(this.decorationIds, []); - }); - } + this.decorationIds = this.editor.deltaDecorations(this.decorationIds, []); super.dispose(); } } From 2f581e89868ba7196c64317c0a7c021b272dc706 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 28 Mar 2018 15:34:56 -0700 Subject: [PATCH 0236/1070] Allow a space between # and `region` for folding in Python Automatic formatting inserts a space between the comment marker `#` and text in the Python extension, so without the allowance for whitespace then `"editor.formatOnType": true` breaks all region markers. Closes Microsoft/vscode-python#1073 and Microsoft/vscode-python#33 --- extensions/python/language-configuration.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/python/language-configuration.json b/extensions/python/language-configuration.json index c2c4aabc862..4717d09750b 100644 --- a/extensions/python/language-configuration.json +++ b/extensions/python/language-configuration.json @@ -43,8 +43,8 @@ "folding": { "offSide": true, "markers": { - "start": "^\\s*#region\\b", - "end": "^\\s*#endregion\\b" + "start": "^\\s*#\\s*region\\b", + "end": "^\\s*#\\s*endregion\\b" } } } From fe6b1682e4c27faaef5ad3c0c5583c26c3cba234 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Wed, 28 Mar 2018 16:13:26 -0700 Subject: [PATCH 0237/1070] split long change buffer. --- .../pieceTreeTextBuffer/pieceTreeBase.ts | 89 +++++++++++++++---- .../pieceTreeTextBuffer.test.ts | 39 ++++++++ 2 files changed, 113 insertions(+), 15 deletions(-) diff --git a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts index 13c81a70acb..b8d8f4f4803 100644 --- a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts +++ b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts @@ -13,6 +13,7 @@ import { SearchData, isValidMatch, Searcher, createFindMatch } from 'vs/editor/c import { FindMatch } from 'vs/editor/common/model'; // const lfRegex = new RegExp(/\r\n|\r|\n/g); +export const AverageBufferSize = 65535; export function createUintArray(arr: number[]): Uint32Array | Uint16Array { let r; @@ -311,7 +312,7 @@ export class PieceTreeBase { } normalizeEOL(eol: '\r\n' | '\n') { - let averageBufferSize = 65536; + let averageBufferSize = AverageBufferSize; let min = averageBufferSize - Math.floor(averageBufferSize / 3); let max = min * 2; @@ -712,7 +713,8 @@ export class PieceTreeBase { if (node.piece.bufferIndex === 0 && piece.end.line === this._lastChangeBufferPos.line && piece.end.column === this._lastChangeBufferPos.column && - (nodeStartOffset + piece.length === offset) + (nodeStartOffset + piece.length === offset) && + value.length < AverageBufferSize ) { // changed buffer this.appendToNode(node, value); @@ -769,19 +771,27 @@ export class PieceTreeBase { this.deleteNodeTail(node, insertPosInBuffer); } - let newPiece = this.createNewPiece(value); + let newPieces = this.createNewPieces(value); if (newRightPiece.length > 0) { this.rbInsertRight(node, newRightPiece); } - this.rbInsertRight(node, newPiece); + + let tmpNode = node; + for (let k = 0; k < newPieces.length; k++) { + tmpNode = this.rbInsertRight(tmpNode, newPieces[k]); + } this.deleteNodes(nodesToDel); } else { this.insertContentToNodeRight(value, node); } } else { // insert new node - let piece = this.createNewPiece(value); - this.rbInsertLeft(null, piece); + let pieces = this.createNewPieces(value); + let node = this.rbInsertLeft(null, pieces[0]); + + for (let k = 1; k < pieces.length; k++) { + node = this.rbInsertRight(node, pieces[k]); + } } // todo, this is too brutal. Total line feed count should be updated the same way as lf_left. @@ -887,8 +897,11 @@ export class PieceTreeBase { } } - let newPiece = this.createNewPiece(value); - let newNode = this.rbInsertLeft(node, newPiece); + let newPieces = this.createNewPieces(value); + let newNode = this.rbInsertLeft(node, newPieces[newPieces.length - 1]); + for (let k = newPieces.length - 2; k >= 0; k--) { + newNode = this.rbInsertLeft(newNode, newPieces[k]); + } this.validateCRLFWithPrevNode(newNode); this.deleteNodes(nodesToDel); } @@ -900,8 +913,14 @@ export class PieceTreeBase { value += '\n'; } - let newPiece = this.createNewPiece(value); - let newNode = this.rbInsertRight(node, newPiece); + let newPieces = this.createNewPieces(value); + let newNode = this.rbInsertRight(node, newPieces[0]); + let tmpNode = newNode; + + for (let k = 1; k < newPieces.length; k++) { + tmpNode = this.rbInsertRight(tmpNode, newPieces[k]); + } + this.validateCRLFWithPrevNode(newNode); } @@ -994,7 +1013,47 @@ export class PieceTreeBase { } } - createNewPiece(text: string): Piece { + createNewPieces(text: string): Piece[] { + if (text.length > AverageBufferSize) { + // the content is large, operations like substring, charCode becomes slow + // so here we split it into smaller chunks, just like what we did for CR/LF normalization + let newPieces = []; + while (text.length > AverageBufferSize) { + const lastChar = text.charCodeAt(AverageBufferSize - 1); + let splitText; + if (lastChar === CharCode.CarriageReturn || (lastChar >= 0xd800 && lastChar <= 0xdbff)) { + // last character is \r or a high surrogate => keep it back + splitText = text.substring(0, AverageBufferSize - 1); + text = text.substring(AverageBufferSize - 1); + } else { + splitText = text.substring(0, AverageBufferSize); + text = text.substring(AverageBufferSize); + } + + let lineStarts = createLineStartsFast(splitText); + newPieces.push(new Piece( + this._buffers.length, /* buffer index */ + { line: 0, column: 0 }, + { line: lineStarts.length - 1, column: splitText.length - lineStarts[lineStarts.length - 1] }, + lineStarts.length - 1, + splitText.length + )); + this._buffers.push(new StringBuffer(splitText, lineStarts)); + } + + let lineStarts = createLineStartsFast(text); + newPieces.push(new Piece( + this._buffers.length, /* buffer index */ + { line: 0, column: 0 }, + { line: lineStarts.length - 1, column: text.length - lineStarts[lineStarts.length - 1] }, + lineStarts.length - 1, + text.length + )); + this._buffers.push(new StringBuffer(text, lineStarts)); + + return newPieces; + } + let startOffset = this._buffers[0].buffer.length; const lineStarts = createLineStartsFast(text, false); @@ -1029,14 +1088,14 @@ export class PieceTreeBase { let endColumn = endOffset - this._buffers[0].lineStarts[endIndex]; let endPos = { line: endIndex, column: endColumn }; let newPiece = new Piece( - 0, + 0, /** todo */ start, endPos, this.getLineFeedCnt(0, start, endPos), endOffset - startOffset ); this._lastChangeBufferPos = endPos; - return newPiece; + return [newPiece]; } getLinesRawContent(): string { @@ -1519,8 +1578,8 @@ export class PieceTreeBase { } // create new piece which contains \r\n - let piece = this.createNewPiece('\r\n'); - this.rbInsertRight(prev, piece); + let pieces = this.createNewPieces('\r\n'); + this.rbInsertRight(prev, pieces[0]); // delete empty nodes for (let i = 0; i < nodesToDel.length; i++) { diff --git a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts index e5b6970d888..d4de4b65ec8 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1445,11 +1445,44 @@ suite('centralized lineStarts with CRLF', () => { }); suite('random is unsupervised', () => { + test('splitting large change buffer', function () { + let pieceTable = createTextBuffer([''], false); + let str = ''; + + pieceTable.insert(0, 'WUZ\nXVZY\n'); + str = str.substring(0, 0) + 'WUZ\nXVZY\n' + str.substring(0); + pieceTable.insert(8, '\r\r\nZXUWVW'); + str = str.substring(0, 8) + '\r\r\nZXUWVW' + str.substring(8); + pieceTable.delete(10, 7); + str = str.substring(0, 10) + str.substring(10 + 7); + pieceTable.delete(10, 1); + str = str.substring(0, 10) + str.substring(10 + 1); + pieceTable.insert(4, 'VX\r\r\nWZVZ'); + str = str.substring(0, 4) + 'VX\r\r\nWZVZ' + str.substring(4); + pieceTable.delete(11, 3); + str = str.substring(0, 11) + str.substring(11 + 3); + pieceTable.delete(12, 4); + str = str.substring(0, 12) + str.substring(12 + 4); + pieceTable.delete(8, 0); + str = str.substring(0, 8) + str.substring(8 + 0); + pieceTable.delete(10, 2); + str = str.substring(0, 10) + str.substring(10 + 2); + pieceTable.insert(0, 'VZXXZYZX\r'); + str = str.substring(0, 0) + 'VZXXZYZX\r' + str.substring(0); + + assert.equal(pieceTable.getLinesRawContent(), str); + + testLineStarts(str, pieceTable); + testLinesContent(str, pieceTable); + assertTreeInvariants(pieceTable); + }); + test('random insert delete', function () { this.timeout(500000); let str = ''; let pieceTable = createTextBuffer([str], false); + // let output = ''; for (let i = 0; i < 1000; i++) { if (Math.random() < 0.6) { // insert @@ -1457,6 +1490,8 @@ suite('random is unsupervised', () => { let pos = randomInt(str.length + 1); pieceTable.insert(pos, text); str = str.substring(0, pos) + text + str.substring(pos); + // output += `pieceTable.insert(${pos}, '${text.replace(/\n/g, '\\n').replace(/\r/g, '\\r')}');\n`; + // output += `str = str.substring(0, ${pos}) + '${text.replace(/\n/g, '\\n').replace(/\r/g, '\\r')}' + str.substring(${pos});\n`; } else { // delete let pos = randomInt(str.length); @@ -1466,8 +1501,12 @@ suite('random is unsupervised', () => { ); pieceTable.delete(pos, length); str = str.substring(0, pos) + str.substring(pos + length); + // output += `pieceTable.delete(${pos}, ${length});\n`; + // output += `str = str.substring(0, ${pos}) + str.substring(${pos} + ${length});\n` + } } + // console.log(output); assert.equal(pieceTable.getLinesRawContent(), str); From 5075e9a2f8f2bf6ff35e4bb77018825d71a50fb3 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 29 Mar 2018 01:27:33 +0200 Subject: [PATCH 0238/1070] Fixes #45735: Fix implementation of getLineCharCode --- .../common/model/pieceTreeTextBuffer/pieceTreeBase.ts | 2 +- .../pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts index 13c81a70acb..e5cc6a1b291 100644 --- a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts +++ b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts @@ -538,7 +538,7 @@ export class PieceTreeBase { let nodePos = this.nodeAt2(lineNumber, index + 1); let buffer = this._buffers[nodePos.node.piece.bufferIndex]; let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start); - let targetOffset = startOffset + index; + let targetOffset = startOffset + nodePos.remainder; return buffer.buffer.charCodeAt(targetOffset); } diff --git a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts index e5b6970d888..266e9de61ae 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1571,6 +1571,15 @@ suite('buffer api', () => { assert(!a.equal(b)); }); + + test('getLineCharCode - issue #45735', () => { + let pieceTable = createTextBuffer(['LINE1\nline2']); + assert.equal(pieceTable.getLineCharCode(2, 0), 'l'.charCodeAt(0), 'l'); + assert.equal(pieceTable.getLineCharCode(2, 1), 'i'.charCodeAt(0), 'i'); + assert.equal(pieceTable.getLineCharCode(2, 2), 'n'.charCodeAt(0), 'n'); + assert.equal(pieceTable.getLineCharCode(2, 3), 'e'.charCodeAt(0), 'e'); + assert.equal(pieceTable.getLineCharCode(2, 4), '2'.charCodeAt(0), '2'); + }); }); suite('search offset cache', () => { From 5126026376982265f1cf7f9d90e20283fef6c595 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Wed, 28 Mar 2018 16:46:15 -0700 Subject: [PATCH 0239/1070] Revert "Fix microsoft/monaco-editor#552. It's okay to switch focus in composition mode when typing Japanese. This reverts commit 2b941e427c38ee786e7ced495afd7c5dc5538eb3. --- src/vs/editor/browser/controller/textAreaInput.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/vs/editor/browser/controller/textAreaInput.ts b/src/vs/editor/browser/controller/textAreaInput.ts index 054dbaa48e4..a96c80dbbf2 100644 --- a/src/vs/editor/browser/controller/textAreaInput.ts +++ b/src/vs/editor/browser/controller/textAreaInput.ts @@ -419,12 +419,6 @@ export class TextAreaInput extends Disposable { } this._hasFocus = newHasFocus; - if (this._isDoingComposition) { - // textarea gets focus, so the state should be clean - // https://github.com/Microsoft/monaco-editor/issues/552 - this._isDoingComposition = false; - } - if (this._hasFocus) { if (browser.isEdge) { // Edge has a bug where setting the selection range while the focus event From 2de91fdce59536e5dffc94d535d7748f3074b127 Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Wed, 28 Mar 2018 18:12:07 -0700 Subject: [PATCH 0240/1070] Css partial parse refactoring (#46894) * Refactor parsePartialStylesheet * More refactoring * To avoid errors, parse line comments char by char and no when getting to previous line. * Revert "To avoid errors, parse line comments char by char and no when getting to previous line." This reverts commit f353dba4c7b7b9224ae02e458b8dafa27654f166. * Fix for inline comments inside block comments --- extensions/emmet/src/util.ts | 182 ++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 90 deletions(-) diff --git a/extensions/emmet/src/util.ts b/extensions/emmet/src/util.ts index 0fb4471eda5..309be6de79a 100644 --- a/extensions/emmet/src/util.ts +++ b/extensions/emmet/src/util.ts @@ -128,31 +128,53 @@ export function parseDocument(document: vscode.TextDocument, showError: boolean return undefined; } -export function parsePartialStylesheet(document: vscode.TextDocument, position: vscode.Position): Stylesheet | undefined { +const closeBrace = 125; +const openBrace = 123; +const slash = 47; +const star = 42; +export function parsePartialStylesheet(document: vscode.TextDocument, position: vscode.Position): Stylesheet | undefined { + const isCSS = document.languageId === 'css'; let startPosition = new vscode.Position(0, 0); let endPosition = new vscode.Position(document.lineCount - 1, document.lineAt(document.lineCount - 1).text.length); - const closeBrace = 125; - const openBrace = 123; - let slash = 47; - let star = 42; - let isCSS = document.languageId === 'css'; + const limitCharacter = document.offsetAt(position) - 5000; + const limitPosition = limitCharacter > 0 ? document.positionAt(limitCharacter) : startPosition; + const stream = new DocumentStreamReader(document, position); - let singleLineCommentIndex = document.lineAt(position.line).text.indexOf('//'); - if (!isCSS && singleLineCommentIndex > -1 && singleLineCommentIndex < position.character) { - return; + function consumeLineCommentBackwards() { + if (!isCSS && currentLine !== stream.pos.line) { + currentLine = stream.pos.line; + let startLineComment = document.lineAt(currentLine).text.indexOf('//'); + if (startLineComment > -1) { + stream.pos = new vscode.Position(currentLine, startLineComment); + } + } } - // Go forward until we found a closing brace. - let stream = new DocumentStreamReader(document, position); - while (!stream.eof() && !stream.eat(closeBrace)) { + function consumeBlockCommentBackwards() { + if (stream.peek() === slash) { + if (stream.backUp(1) === star) { + stream.pos = findOpeningCommentBeforePosition(document, stream.pos) || startPosition; + } else { + stream.next(); + } + } + } + + function consumeCommentForwards() { if (stream.eat(slash)) { if (stream.eat(slash) && !isCSS) { - // Single line Comment, we continue searching from next line. stream.pos = new vscode.Position(stream.pos.line + 1, 0); } else if (stream.eat(star)) { stream.pos = findClosingCommentAfterPosition(document, stream.pos) || endPosition; } + } + } + + // Go forward until we find a closing brace. + while (!stream.eof() && !stream.eat(closeBrace)) { + if (stream.peek() === slash) { + consumeCommentForwards(); } else { stream.next(); } @@ -162,99 +184,79 @@ export function parsePartialStylesheet(document: vscode.TextDocument, position: endPosition = stream.pos; } - // Go back until we found an opening brace. If we find a closing one, we first find its opening brace and then we continue. stream.pos = position; - let openBracesRemaining = 1; + let openBracesToFind = 1; let currentLine = position.line; - let limitCharacter = document.offsetAt(position) - 5000; - let limitPosition = limitCharacter > 0 ? document.positionAt(limitCharacter) : startPosition; + let exit = false; - while (openBracesRemaining > 0 && !stream.sof()) { - if (position.line - stream.pos.line > 100 || stream.pos.isBeforeOrEqual(limitPosition)) { - return parseStylesheet(new DocumentStreamReader(document, startPosition, new vscode.Range(startPosition, endPosition))); - } else if (!isCSS && stream.pos.line !== currentLine) { - // In not CSS stylesheets, we need to skip singleLine comments. - currentLine = stream.pos.line; - let startLineComment = document.lineAt(currentLine).text.indexOf('//'); - if (startLineComment > -1) { - stream.pos = new vscode.Position(currentLine, startLineComment); - } + // Go back until we found an opening brace. If we find a closing one, consume its pair and continue. + while (!exit && openBracesToFind > 0 && !stream.sof()) { + consumeLineCommentBackwards(); + + switch (stream.backUp(1)) { + case openBrace: + openBracesToFind--; + break; + case closeBrace: + if (isCSS) { + stream.next(); + startPosition = stream.pos; + exit = true; + } else { + openBracesToFind++; + } + break; + case slash: + consumeBlockCommentBackwards(); + break; + default: + break; } - let ch = stream.backUp(1); - if (ch === openBrace) { - openBracesRemaining--; - } else if (ch === closeBrace) { - if (isCSS) { - stream.next(); - return parseStylesheet(new DocumentStreamReader(document, stream.pos, new vscode.Range(stream.pos, endPosition))); - } - openBracesRemaining++; - } else if (ch === slash) { - stream.backUp(1); - if (stream.peek() === star) { - stream.pos = findOpeningCommentBeforePosition(document, stream.pos) || startPosition; - } else { - stream.next(); - } - } else if (ch === star) { - stream.backUp(1); - if (stream.peek() === slash) { - return; - } else { - stream.next(); - } + + if (position.line - stream.pos.line > 100 || stream.pos.isBeforeOrEqual(limitPosition)) { + exit = true; } } // We are at an opening brace. We need to include its selector. - // We need one non whitespace character, that's not commented and is not a block { } currentLine = stream.pos.line; - openBracesRemaining = 0; - while (!stream.sof()) { - // Find a nonspace character - while (!stream.sof() && String.fromCharCode(stream.backUp(1)).match(/\s/)) { } - if (stream.sof()) { - break; - } - let characterFound = stream.peek(); - // Check if such character is end of comment. - if (characterFound === slash) { - let ch = stream.backUp(1); - if (ch === star) { - stream.pos = findOpeningCommentBeforePosition(document, stream.pos) || startPosition; - } else { - stream.next(); - } + openBracesToFind = 0; + let foundSelector = false; + while (!exit && !stream.sof() && !foundSelector && openBracesToFind >= 0) { + + consumeLineCommentBackwards(); + + const ch = stream.backUp(1); + if (/\s/.test(String.fromCharCode(ch))) { continue; } - // In not CSS stylesheets, we need to skip singleLine comments. - if (!isCSS && stream.pos.line !== currentLine) { - currentLine = stream.pos.line; - let startLineComment = document.lineAt(currentLine).text.indexOf('//'); - if (startLineComment > -1 && startLineComment < stream.pos.character) { - stream.pos = new vscode.Position(currentLine, startLineComment); - continue; - } - } - // Here, we know we are not in a comment - if (characterFound === closeBrace) { - openBracesRemaining++; - } else if (!openBracesRemaining) { - if (characterFound === openBrace) { - return; - } else { + + switch (ch) { + case slash: + consumeBlockCommentBackwards(); break; - } - } else if (characterFound === openBrace) { - openBracesRemaining--; + case closeBrace: + openBracesToFind++; + break; + case openBrace: + openBracesToFind--; + break; + default: + if (!openBracesToFind) { + foundSelector = true; + } + break; + } + + if (!stream.sof() && foundSelector) { + startPosition = stream.pos; } } - if (!stream.sof()) { - startPosition = stream.pos; - } + try { return parseStylesheet(new DocumentStreamReader(document, startPosition, new vscode.Range(startPosition, endPosition))); } catch (e) { + } } @@ -482,7 +484,7 @@ export function getEmmetConfiguration(syntax: string) { } /** - * Itereates by each child, as well as nested child’ children, in their order + * Itereates by each child, as well as nested child's children, in their order * and invokes `fn` for each. If `fn` function returns `false`, iteration stops */ export function iterateCSSToken(token: CssToken, fn: (x: any) => any) { From 5e51bf9fd8adbe8e6b8da15d8b6056d81b15938f Mon Sep 17 00:00:00 2001 From: Daniel Ye Date: Wed, 28 Mar 2018 18:20:16 -0700 Subject: [PATCH 0241/1070] 2018-03-28. Merged in translations from Transifex. --- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/chs/extensions/css/package.i18n.json | 74 +---------------- i18n/chs/extensions/emmet/package.i18n.json | 3 +- .../chs/extensions/git/out/commands.i18n.json | 2 +- i18n/chs/extensions/git/out/main.i18n.json | 4 +- i18n/chs/extensions/git/package.i18n.json | 5 +- .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/chs/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/chs/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/chs/extensions/php/package.i18n.json | 9 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../config/commonEditorConfig.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 4 +- .../editor/contrib/find/findWidget.i18n.json | 2 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 47 +++++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 4 +- .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 6 +- .../list/browser/listService.i18n.json | 5 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../mainThreadSaveParticipant.i18n.json | 2 + .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsCenter.i18n.json | 1 + .../main.contribution.i18n.json | 12 ++- .../debug/browser/breakpointsView.i18n.json | 1 + .../debug/browser/debugActions.i18n.json | 4 - .../browser/debugEditorActions.i18n.json | 1 + .../debug/browser/linkDetector.i18n.json | 4 +- .../breakpointWidget.i18n.json | 18 +++++ .../debugEditorContribution.i18n.json | 5 ++ .../electron-browser/debugService.i18n.json | 4 +- .../parts/debug/node/debugAdapter.i18n.json | 1 + .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 61 ++++++++++++++ .../extensionTipsService.i18n.json | 2 +- .../extensionsViewlet.i18n.json | 4 +- .../browser/editors/textFileEditor.i18n.json | 2 + .../fileActions.contribution.i18n.json | 2 +- .../electron-browser/fileActions.i18n.json | 6 +- .../files.contribution.i18n.json | 2 + .../views/explorerViewer.i18n.json | 2 + .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 4 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 44 ++++++++++ .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 2 + .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 7 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 9 +++ .../task.contribution.i18n.json | 8 +- .../tasks/node/taskConfiguration.i18n.json | 2 +- .../terminalActions.i18n.json | 6 +- .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 12 +++ .../configurationResolverService.i18n.json | 21 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 2 +- .../services/files/node/fileService.i18n.json | 2 +- .../browser/progressService2.i18n.json | 3 +- .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/cht/extensions/css/package.i18n.json | 74 +---------------- i18n/cht/extensions/emmet/package.i18n.json | 3 +- .../cht/extensions/git/out/commands.i18n.json | 2 +- i18n/cht/extensions/git/package.i18n.json | 1 + .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/cht/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/cht/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/cht/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 40 +++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 5 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsCenter.i18n.json | 1 + .../main.contribution.i18n.json | 5 +- .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../browser/extensionsActions.i18n.json | 1 + .../extensionEditor.i18n.json | 61 ++++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 +- .../views/explorerViewer.i18n.json | 1 + .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../browser/keybindingsEditor.i18n.json | 2 + .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 7 +- .../electron-browser/jsonSchema_v2.i18n.json | 6 ++ .../task.contribution.i18n.json | 8 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 18 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 2 +- .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 80 ++++++++++++++++++ i18n/deu/extensions/css/package.i18n.json | 73 +---------------- .../deu/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/deu/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/deu/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 10 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 31 +++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 17 ++++ i18n/deu/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 9 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 9 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../browser/extensionsActions.i18n.json | 2 + .../extensionEditor.i18n.json | 56 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 10 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 11 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 9 +++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 79 ++++++++++++++++++ i18n/esn/extensions/css/package.i18n.json | 73 +---------------- .../esn/extensions/git/out/commands.i18n.json | 1 - i18n/esn/extensions/git/package.i18n.json | 1 + .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/esn/extensions/html/package.i18n.json | 26 +----- .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/esn/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 19 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 16 ++++ i18n/esn/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 5 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 12 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 3 - .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../api/browser/viewsExtensionPoint.i18n.json | 2 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 9 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 3 +- .../extensionEditor.i18n.json | 56 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 18 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 2 +- .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/fra/extensions/css/package.i18n.json | 74 +---------------- i18n/fra/extensions/emmet/package.i18n.json | 3 +- .../fra/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/fra/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/fra/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 17 ++++ i18n/fra/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 2 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 20 +++++ .../wordHighlighter/wordHighlighter.i18n.json | 4 +- .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 6 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 6 +- .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 3 +- .../extensionEditor.i18n.json | 55 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 10 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 12 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 21 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/hun/extensions/css/package.i18n.json | 74 +---------------- i18n/hun/extensions/emmet/package.i18n.json | 3 +- .../hun/extensions/git/out/commands.i18n.json | 2 +- i18n/hun/extensions/git/package.i18n.json | 1 + .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/hun/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/hun/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/hun/extensions/php/package.i18n.json | 9 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 4 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 47 +++++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 4 +- .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 6 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../mainThreadSaveParticipant.i18n.json | 2 + .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsCenter.i18n.json | 1 + .../main.contribution.i18n.json | 12 ++- .../debug/browser/breakpointsView.i18n.json | 1 + .../debug/browser/debugActions.i18n.json | 4 - .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 18 +++++ .../debugEditorContribution.i18n.json | 5 ++ .../electron-browser/debugService.i18n.json | 4 +- .../parts/debug/node/debugAdapter.i18n.json | 1 + .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 61 ++++++++++++++ .../extensionTipsService.i18n.json | 2 +- .../extensionsViewlet.i18n.json | 4 +- .../browser/editors/textFileEditor.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 6 +- .../files.contribution.i18n.json | 2 + .../views/explorerViewer.i18n.json | 2 + .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 4 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 44 ++++++++++ .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 2 + .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 7 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 9 +++ .../task.contribution.i18n.json | 8 +- .../tasks/node/taskConfiguration.i18n.json | 2 +- .../terminalActions.i18n.json | 6 +- .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 12 +++ .../configurationResolverService.i18n.json | 21 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 2 +- .../services/files/node/fileService.i18n.json | 2 +- .../browser/progressService2.i18n.json | 3 +- .../electron-browser/TMGrammars.i18n.json | 3 +- .../electron-browser/TMSyntax.i18n.json | 1 + .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/ita/extensions/css/package.i18n.json | 74 +---------------- .../ita/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/ita/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 19 +++++ i18n/ita/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 16 ++++ i18n/ita/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 9 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 3 - .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 9 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../extensionEditor.i18n.json | 57 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 10 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 11 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 9 +++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/jpn/extensions/css/package.i18n.json | 74 +---------------- i18n/jpn/extensions/emmet/package.i18n.json | 3 +- .../jpn/extensions/git/out/commands.i18n.json | 2 +- i18n/jpn/extensions/git/package.i18n.json | 3 +- .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/jpn/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/jpn/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/jpn/extensions/php/package.i18n.json | 9 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../src/vs/code/electron-main/menus.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 4 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 47 +++++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 4 +- .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 6 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../mainThreadSaveParticipant.i18n.json | 2 + .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsCenter.i18n.json | 1 + .../main.contribution.i18n.json | 12 ++- .../debug/browser/breakpointsView.i18n.json | 1 + .../debug/browser/debugActions.i18n.json | 4 - .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 18 +++++ .../debugEditorContribution.i18n.json | 5 ++ .../electron-browser/debugService.i18n.json | 4 +- .../parts/debug/node/debugAdapter.i18n.json | 1 + .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 61 ++++++++++++++ .../extensionsViewlet.i18n.json | 4 +- .../browser/editors/textFileEditor.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 10 ++- .../files.contribution.i18n.json | 2 + .../views/explorerViewer.i18n.json | 2 + .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 4 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 44 ++++++++++ .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 2 + .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 7 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 9 +++ .../task.contribution.i18n.json | 8 +- .../tasks/node/taskConfiguration.i18n.json | 2 +- .../terminalActions.i18n.json | 6 +- .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 12 +++ .../configurationResolverService.i18n.json | 21 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 2 +- .../services/files/node/fileService.i18n.json | 2 +- .../browser/progressService2.i18n.json | 3 +- .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/kor/extensions/css/package.i18n.json | 74 +---------------- .../kor/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/kor/extensions/html/package.i18n.json | 27 +------ i18n/kor/extensions/jake/package.i18n.json | 1 + .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 19 +++++ i18n/kor/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 10 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 30 +++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/kor/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 9 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 3 - .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 9 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../extensionEditor.i18n.json | 57 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 6 +- .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 10 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 6 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 20 +++++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- i18n/ptb/extensions/clojure/package.i18n.json | 3 +- .../extensions/coffeescript/package.i18n.json | 3 +- .../out/settingsDocumentHelper.i18n.json | 2 +- i18n/ptb/extensions/cpp/package.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 79 ++++++++++++++++++ i18n/ptb/extensions/css/package.i18n.json | 74 +---------------- .../ptb/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 32 ++++++++ i18n/ptb/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/ptb/extensions/json/package.i18n.json | 14 +--- .../markdown-basics/package.i18n.json | 3 +- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 11 +++ .../out/security.i18n.json | 16 ++++ .../package.i18n.json | 26 ++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 16 ++++ i18n/ptb/extensions/php/package.i18n.json | 7 -- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 4 + .../code/electron-main/logUploader.i18n.json | 1 + .../src/vs/code/electron-main/menus.i18n.json | 1 + .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 9 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 3 - .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../mainThreadMessageService.i18n.json | 1 + .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../editor/editor.contribution.i18n.json | 1 + .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsActions.i18n.json | 4 +- .../notificationsStatus.i18n.json | 3 +- .../main.contribution.i18n.json | 3 - .../debug/browser/breakpointsView.i18n.json | 1 + .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debug.contribution.i18n.json | 1 + .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../electronDebugActions.i18n.json | 1 + .../extensionEditor.i18n.json | 53 ++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../views/openEditorsView.i18n.json | 2 +- .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 10 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 12 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../output/browser/outputActions.i18n.json | 3 +- .../scm/electron-browser/scmViewlet.i18n.json | 1 - .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 5 +- .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 6 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 9 +++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 80 ++++++++++++++++++ i18n/rus/extensions/css/package.i18n.json | 74 +---------------- .../rus/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/rus/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 19 +++++ i18n/rus/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 10 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 19 +++++ .../package.i18n.json | 31 +++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 16 ++++ i18n/rus/extensions/php/package.i18n.json | 10 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 1 - .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 9 +++ .../wordHighlighter/wordHighlighter.i18n.json | 2 - .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 3 - .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 9 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 15 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../extensionEditor.i18n.json | 54 +++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 9 +++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- .../client/out/cssMain.i18n.json | 12 +++ .../css-language-features/package.i18n.json | 81 +++++++++++++++++++ i18n/trk/extensions/css/package.i18n.json | 74 +---------------- .../trk/extensions/git/out/commands.i18n.json | 1 - .../client/out/htmlMain.i18n.json | 12 +++ .../html-language-features/package.i18n.json | 33 ++++++++ i18n/trk/extensions/html/package.i18n.json | 27 +------ .../client/out/jsonMain.i18n.json | 10 +++ .../json-language-features/package.i18n.json | 20 +++++ i18n/trk/extensions/json/package.i18n.json | 14 +--- .../onPreviewStyleLoadError.i18n.json | 10 +++ .../out/features/preview.i18n.json | 11 +++ .../features/previewContentProvider.i18n.json | 12 +++ .../out/security.i18n.json | 20 +++++ .../package.i18n.json | 32 ++++++++ .../out/features/validationProvider.i18n.json | 15 ++++ .../php-language-features/package.i18n.json | 18 +++++ i18n/trk/extensions/php/package.i18n.json | 9 +-- .../issue/issueReporterMain.i18n.json | 2 +- .../common/view/editorColorRegistry.i18n.json | 4 +- .../contrib/gotoError/gotoError.i18n.json | 7 +- .../gotoError/gotoErrorWidget.i18n.json | 14 ++++ .../snippet/snippetVariables.i18n.json | 47 +++++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 4 +- .../platform/dialogs/common/dialogs.i18n.json | 11 +++ .../dialogs/node/dialogService.i18n.json | 10 +++ .../node/extensionManagementService.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../platform/markers/common/markers.i18n.json | 12 +++ .../theme/common/colorRegistry.i18n.json | 4 +- .../electron-browser/mainThreadTask.i18n.json | 10 +++ .../api/node/extHostProgress.i18n.json | 10 +++ .../parts/editor/editorActions.i18n.json | 1 + .../parts/editor/titleControl.i18n.json | 1 - .../notificationsCenter.i18n.json | 1 + .../main.contribution.i18n.json | 3 - .../debug/browser/debugActions.i18n.json | 4 - .../breakpointWidget.i18n.json | 16 ++++ .../debugEditorContribution.i18n.json | 4 + .../electron-browser/debugService.i18n.json | 4 +- .../parts/debug/node/debugAdapter.i18n.json | 1 + .../browser/extensionsActions.i18n.json | 4 +- .../extensionEditor.i18n.json | 61 ++++++++++++++ .../extensionsViewlet.i18n.json | 1 - .../electron-browser/fileActions.i18n.json | 4 - .../html.contribution.i18n.json | 10 +++ .../htmlPreviewPart.i18n.json | 10 +++ .../webview.contribution.i18n.json | 10 +++ .../webviewCommands.i18n.json | 11 +++ .../localizations.contribution.i18n.json | 3 + .../markers.contribution.i18n.json | 11 +++ .../electron-browser/markers.i18n.json | 11 +++ .../markersFileDecorations.i18n.json | 13 +++ .../electron-browser/messages.i18n.json | 34 ++++++++ .../output.contribution.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 2 - .../parts/search/browser/searchView.i18n.json | 4 - .../electron-browser/jsonSchema_v2.i18n.json | 2 + .../task.contribution.i18n.json | 8 +- .../tasks/node/taskConfiguration.i18n.json | 1 - .../electron-browser/terminalPanel.i18n.json | 4 +- .../releaseNotesEditor.i18n.json | 11 +++ .../update/electron-browser/update.i18n.json | 1 - .../webview.contribution.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 9 +++ .../electron-browser/dialogService.i18n.json | 11 +++ .../electron-browser/fileService.i18n.json | 1 - .../services/files/node/fileService.i18n.json | 1 - .../browser/progressService2.i18n.json | 3 +- 883 files changed, 8089 insertions(+), 2047 deletions(-) create mode 100644 i18n/chs/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/chs/extensions/css-language-features/package.i18n.json create mode 100644 i18n/chs/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/chs/extensions/html-language-features/package.i18n.json create mode 100644 i18n/chs/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/chs/extensions/json-language-features/package.i18n.json create mode 100644 i18n/chs/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/chs/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/chs/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/chs/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/chs/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/chs/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/chs/extensions/php-language-features/package.i18n.json create mode 100644 i18n/chs/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/chs/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/chs/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/chs/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/chs/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/chs/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/chs/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/chs/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/cht/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/cht/extensions/css-language-features/package.i18n.json create mode 100644 i18n/cht/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/cht/extensions/html-language-features/package.i18n.json create mode 100644 i18n/cht/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/cht/extensions/json-language-features/package.i18n.json create mode 100644 i18n/cht/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/cht/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/cht/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/cht/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/cht/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/cht/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/cht/extensions/php-language-features/package.i18n.json create mode 100644 i18n/cht/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/cht/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/cht/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/cht/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/cht/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/cht/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/cht/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/deu/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/deu/extensions/css-language-features/package.i18n.json create mode 100644 i18n/deu/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/deu/extensions/html-language-features/package.i18n.json create mode 100644 i18n/deu/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/deu/extensions/json-language-features/package.i18n.json create mode 100644 i18n/deu/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/deu/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/deu/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/deu/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/deu/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/deu/extensions/php-language-features/package.i18n.json create mode 100644 i18n/deu/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/deu/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/deu/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/deu/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/deu/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/deu/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/deu/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/esn/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/esn/extensions/css-language-features/package.i18n.json create mode 100644 i18n/esn/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/esn/extensions/html-language-features/package.i18n.json create mode 100644 i18n/esn/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/esn/extensions/json-language-features/package.i18n.json create mode 100644 i18n/esn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/esn/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/esn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/esn/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/esn/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/esn/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/esn/extensions/php-language-features/package.i18n.json create mode 100644 i18n/esn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/esn/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/esn/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/esn/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/esn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/esn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/fra/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/fra/extensions/css-language-features/package.i18n.json create mode 100644 i18n/fra/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/fra/extensions/html-language-features/package.i18n.json create mode 100644 i18n/fra/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/fra/extensions/json-language-features/package.i18n.json create mode 100644 i18n/fra/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/fra/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/fra/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/fra/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/fra/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/fra/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/fra/extensions/php-language-features/package.i18n.json create mode 100644 i18n/fra/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/fra/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/fra/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/fra/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/fra/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/fra/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/fra/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/hun/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/hun/extensions/css-language-features/package.i18n.json create mode 100644 i18n/hun/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/hun/extensions/html-language-features/package.i18n.json create mode 100644 i18n/hun/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/hun/extensions/json-language-features/package.i18n.json create mode 100644 i18n/hun/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/hun/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/hun/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/hun/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/hun/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/hun/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/hun/extensions/php-language-features/package.i18n.json create mode 100644 i18n/hun/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/hun/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/hun/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/hun/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/hun/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/hun/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/hun/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/hun/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/ita/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/ita/extensions/css-language-features/package.i18n.json create mode 100644 i18n/ita/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/ita/extensions/html-language-features/package.i18n.json create mode 100644 i18n/ita/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/ita/extensions/json-language-features/package.i18n.json create mode 100644 i18n/ita/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/ita/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/ita/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/ita/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/ita/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/ita/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/ita/extensions/php-language-features/package.i18n.json create mode 100644 i18n/ita/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/ita/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/ita/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/ita/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/ita/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/ita/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/ita/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/jpn/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/jpn/extensions/css-language-features/package.i18n.json create mode 100644 i18n/jpn/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/jpn/extensions/html-language-features/package.i18n.json create mode 100644 i18n/jpn/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/jpn/extensions/json-language-features/package.i18n.json create mode 100644 i18n/jpn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/jpn/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/jpn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/jpn/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/jpn/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/jpn/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/jpn/extensions/php-language-features/package.i18n.json create mode 100644 i18n/jpn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/jpn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/jpn/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/jpn/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/jpn/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/kor/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/kor/extensions/css-language-features/package.i18n.json create mode 100644 i18n/kor/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/kor/extensions/html-language-features/package.i18n.json create mode 100644 i18n/kor/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/kor/extensions/json-language-features/package.i18n.json create mode 100644 i18n/kor/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/kor/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/kor/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/kor/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/kor/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/kor/extensions/php-language-features/package.i18n.json create mode 100644 i18n/kor/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/kor/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/kor/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/kor/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/kor/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/kor/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/ptb/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/ptb/extensions/css-language-features/package.i18n.json create mode 100644 i18n/ptb/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/ptb/extensions/html-language-features/package.i18n.json create mode 100644 i18n/ptb/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/ptb/extensions/json-language-features/package.i18n.json create mode 100644 i18n/ptb/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/ptb/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/ptb/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/ptb/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/ptb/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/ptb/extensions/php-language-features/package.i18n.json create mode 100644 i18n/ptb/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/ptb/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/ptb/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/ptb/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/rus/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/rus/extensions/css-language-features/package.i18n.json create mode 100644 i18n/rus/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/rus/extensions/html-language-features/package.i18n.json create mode 100644 i18n/rus/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/rus/extensions/json-language-features/package.i18n.json create mode 100644 i18n/rus/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/rus/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/rus/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/rus/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/rus/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/rus/extensions/php-language-features/package.i18n.json create mode 100644 i18n/rus/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/rus/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/rus/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/rus/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/rus/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/rus/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/rus/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json create mode 100644 i18n/trk/extensions/css-language-features/client/out/cssMain.i18n.json create mode 100644 i18n/trk/extensions/css-language-features/package.i18n.json create mode 100644 i18n/trk/extensions/html-language-features/client/out/htmlMain.i18n.json create mode 100644 i18n/trk/extensions/html-language-features/package.i18n.json create mode 100644 i18n/trk/extensions/json-language-features/client/out/jsonMain.i18n.json create mode 100644 i18n/trk/extensions/json-language-features/package.i18n.json create mode 100644 i18n/trk/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json create mode 100644 i18n/trk/extensions/markdown-language-features/out/features/preview.i18n.json create mode 100644 i18n/trk/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json create mode 100644 i18n/trk/extensions/markdown-language-features/out/security.i18n.json create mode 100644 i18n/trk/extensions/markdown-language-features/package.i18n.json create mode 100644 i18n/trk/extensions/php-language-features/out/features/validationProvider.i18n.json create mode 100644 i18n/trk/extensions/php-language-features/package.i18n.json create mode 100644 i18n/trk/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json create mode 100644 i18n/trk/src/vs/editor/contrib/snippet/snippetVariables.i18n.json create mode 100644 i18n/trk/src/vs/platform/dialogs/common/dialogs.i18n.json create mode 100644 i18n/trk/src/vs/platform/dialogs/node/dialogService.i18n.json create mode 100644 i18n/trk/src/vs/platform/markers/common/markers.i18n.json create mode 100644 i18n/trk/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json create mode 100644 i18n/trk/src/vs/workbench/api/node/extHostProgress.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json create mode 100644 i18n/trk/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json create mode 100644 i18n/trk/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json diff --git a/i18n/chs/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/chs/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..bbb5b917ca9 --- /dev/null +++ b/i18n/chs/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS 语言服务器", + "folding.start": "折叠区域开始", + "folding.end": "折叠区域结束" +} \ No newline at end of file diff --git a/i18n/chs/extensions/css-language-features/package.i18n.json b/i18n/chs/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..e35e92e1f84 --- /dev/null +++ b/i18n/chs/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS 语言功能", + "description": "为 CSS、LESS 和 SCSS 文件提供丰富的语言支持。", + "css.title": "CSS", + "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", + "css.lint.importStatement.desc": "Import 语句不会并行加载", + "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.trace.server.desc": "跟踪 VS Code 与 CSS 语言服务器之间的通信。", + "css.validate.title": "控制 CSS 验证和问题严重性。", + "css.validate.desc": "启用或禁用所有验证", + "less.title": "LESS", + "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", + "less.lint.importStatement.desc": "Import 语句不会并行加载", + "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.title": "控制 LESS 验证和问题严重性。", + "less.validate.desc": "启用或禁用所有验证", + "scss.title": "SCSS (Sass)", + "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", + "scss.lint.importStatement.desc": "Import 语句不会并行加载", + "scss.lint.propertyIgnoredDueToDisplay.desc": "因显示而忽略属性。例如,使用 \"display: inline\"时,宽度、高度、上边距、下边距和 float 属性将不起作用", + "scss.lint.universalSelector.desc": "通配选择符 (*) 运行效率低", + "scss.lint.unknownProperties.desc": "未知的属性。", + "scss.lint.unknownVendorSpecificProperties.desc": "未知的供应商特定属性。", + "scss.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性", + "scss.lint.zeroUnits.desc": "零不需要单位", + "scss.validate.title": "控制 SCSS 验证和问题严重性。", + "scss.validate.desc": "启用或禁用所有验证", + "less.colorDecorators.enable.desc": "启用或禁用颜色修饰器", + "scss.colorDecorators.enable.desc": "启用或禁用颜色修饰器", + "css.colorDecorators.enable.desc": "启用或禁用颜色修饰器", + "css.colorDecorators.enable.deprecationMessage": "已弃用设置 \"css.colorDecorators.enabl\",请改用 \"editor.colorDecorators\"。", + "scss.colorDecorators.enable.deprecationMessage": "已弃用设置 \"scss.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。", + "less.colorDecorators.enable.deprecationMessage": "已弃用设置 \"less.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。" +} \ 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 7648b17fe69..52369e22e58 100644 --- a/i18n/chs/extensions/css/package.i18n.json +++ b/i18n/chs/extensions/css/package.i18n.json @@ -6,76 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS 语言功能", - "description": "为 CSS、LESS 和 SCSS 文件提供丰富的语言支持。", - "css.title": "CSS", - "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", - "css.lint.importStatement.desc": "Import 语句不会并行加载", - "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.trace.server.desc": "跟踪 VS Code 与 CSS 语言服务器之间的通信。", - "css.validate.title": "控制 CSS 验证和问题严重性。", - "css.validate.desc": "启用或禁用所有验证", - "less.title": "LESS", - "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", - "less.lint.importStatement.desc": "Import 语句不会并行加载", - "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.title": "控制 LESS 验证和问题严重性。", - "less.validate.desc": "启用或禁用所有验证", - "scss.title": "SCSS (Sass)", - "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.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", - "scss.lint.importStatement.desc": "Import 语句不会并行加载", - "scss.lint.propertyIgnoredDueToDisplay.desc": "因显示而忽略属性。例如,使用 \"display: inline\"时,宽度、高度、上边距、下边距和 float 属性将不起作用", - "scss.lint.universalSelector.desc": "已知通配选择符 (*) 慢", - "scss.lint.unknownProperties.desc": "未知的属性。", - "scss.lint.unknownVendorSpecificProperties.desc": "未知的供应商特定属性。", - "scss.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性", - "scss.lint.zeroUnits.desc": "零不需要单位", - "scss.validate.title": "控制 SCSS 验证和问题严重性。", - "scss.validate.desc": "启用或禁用所有验证", - "less.colorDecorators.enable.desc": "启用或禁用颜色修饰器", - "scss.colorDecorators.enable.desc": "启用或禁用颜色修饰器", - "css.colorDecorators.enable.desc": "启用或禁用颜色修饰器", - "css.colorDecorators.enable.deprecationMessage": "已弃用设置 \"css.colorDecorators.enabl\",请改用 \"editor.colorDecorators\"。", - "scss.colorDecorators.enable.deprecationMessage": "已弃用设置 \"scss.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。", - "less.colorDecorators.enable.deprecationMessage": "已弃用设置 \"less.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。" + "displayName": "CSS 语言基础功能", + "description": "为 CSS、LESS 和 SCSS 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/emmet/package.i18n.json b/i18n/chs/extensions/emmet/package.i18n.json index 091b728c40a..14e1d1d65e4 100644 --- a/i18n/chs/extensions/emmet/package.i18n.json +++ b/i18n/chs/extensions/emmet/package.i18n.json @@ -59,5 +59,6 @@ "emmetPreferencesCssWebkitProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"webkit\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"webkit\" 前缀,请设为空字符串。", "emmetPreferencesCssMozProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"moz\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"moz\" 前缀,请设为空字符串。", "emmetPreferencesCssOProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"o\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"o\" 前缀,请设为空字符串。", - "emmetPreferencesCssMsProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"ms\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"ms\" 前缀,请设为空字符串。" + "emmetPreferencesCssMsProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"ms\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"ms\" 前缀,请设为空字符串。", + "emmetPreferencesCssFuzzySearchMinScore": "显示的缩写模糊匹配应达到的最低分数 (0 到 1 之间)。较低的值可能使匹配错误变多,较高的值可能将不会显示应有的匹配项。" } \ No newline at end of file diff --git a/i18n/chs/extensions/git/out/commands.i18n.json b/i18n/chs/extensions/git/out/commands.i18n.json index 6276a473d55..d4f3c5641f1 100644 --- a/i18n/chs/extensions/git/out/commands.i18n.json +++ b/i18n/chs/extensions/git/out/commands.i18n.json @@ -75,7 +75,7 @@ "ok": "确定", "push with tags success": "已成功带标签进行推送。", "pick remote": "选取要将分支“{0}”发布到的远程:", - "sync is unpredictable": "此操作将推送提交至“{0}”,并从中拉取提交。", + "sync is unpredictable": "此操作将推送提交至“{0}/{1}”,并从中拉取提交。", "never again": "确定,且不再显示", "no remotes to publish": "存储库未配置任何要发布到的远程存储库。", "no changes stash": "没有要储藏的更改。", diff --git a/i18n/chs/extensions/git/out/main.i18n.json b/i18n/chs/extensions/git/out/main.i18n.json index 64d8ce0c2ee..3af01415f05 100644 --- a/i18n/chs/extensions/git/out/main.i18n.json +++ b/i18n/chs/extensions/git/out/main.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "looking": "在 {0} 查找 Git 中", - "using git": "使用 {1} 中的 Git {0}", + "looking": "正在查找 Git: {0}", + "using git": "将使用位于 {1} 的 Git {0}", "downloadgit": "下载 Git", "neverShowAgain": "不再显示", "notfound": "未找到 Git。请安装 Git,或在 \"git.path\" 设置中配置。", diff --git a/i18n/chs/extensions/git/package.i18n.json b/i18n/chs/extensions/git/package.i18n.json index b59e2baae07..1ffec732d41 100644 --- a/i18n/chs/extensions/git/package.i18n.json +++ b/i18n/chs/extensions/git/package.i18n.json @@ -62,10 +62,10 @@ "config.autorefresh": "是否启用自动刷新", "config.autofetch": "是否启用自动拉取", "config.enableLongCommitWarning": "是否针对长段提交消息进行警告", - "config.confirmSync": "同步 GIT 存储库前请先进行确认", + "config.confirmSync": "同步 Git 存储库前进行确认", "config.countBadge": "控制 Git 徽章计数器。“all”计算所有更改。“tracked”只计算跟踪的更改。“off”关闭此功能。", "config.checkoutType": "控制运行“签出到...”功能时列出的分支类型。\"all\" 显示所有 refs,\"local\" 只显示本地分支,\"tags\" 只显示标签,\"remote\" 只显示远程分支。", - "config.ignoreLegacyWarning": "忽略旧版 Git 警告", + "config.ignoreLegacyWarning": "忽略“旧版 Git”警告", "config.ignoreMissingGitWarning": "忽略“缺失 Git”警告", "config.ignoreLimitWarning": "忽略“存储库中存在大量更改”的警告", "config.defaultCloneDirectory": "克隆 Git 存储库的默认位置", @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "控制是否在 Git 更改视图中显示内联“打开文件”操作。", "config.inputValidation": "控制何时显示提交消息输入验证。", "config.detectSubmodules": "控制是否自动检测 Git 子模块。", + "config.detectSubmodulesLimit": "控制可检测到的 Git 子模块的限制。", "colors.modified": "已修改资源的颜色。", "colors.deleted": "已删除资源的颜色。", "colors.untracked": "未跟踪资源的颜色。", diff --git a/i18n/chs/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/chs/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..9df9ff90438 --- /dev/null +++ b/i18n/chs/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML 语言服务器", + "folding.start": "折叠区域开始", + "folding.end": "折叠区域结束" +} \ No newline at end of file diff --git a/i18n/chs/extensions/html-language-features/package.i18n.json b/i18n/chs/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..10478bc7fed --- /dev/null +++ b/i18n/chs/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML 语言功能", + "description": "为 HTML、Razor 和 Handlebar 文件提供丰富的语言支持。", + "html.format.enable.desc": "启用/禁用默认 HTML 格式化程序", + "html.format.wrapLineLength.desc": "每行最大字符数(0 = 禁用)。", + "html.format.unformatted.desc": "以逗号分隔的标记列表不应重设格式。\"null\" 默认为所有列于 https://www.w3.org/TR/html5/dom.html#phrasing-content 的标记。", + "html.format.contentUnformatted.desc": "以逗号分隔的标记列表,不应在其中重新设置内容的格式。\"null\" 默认为 \"pre\" 标记。", + "html.format.indentInnerHtml.desc": "缩进 和 部分。", + "html.format.preserveNewLines.desc": "是否要保留元素前面的现有换行符。仅适用于元素前,不适用于标记内或文本。", + "html.format.maxPreserveNewLines.desc": "要保留在一个区块中的换行符的最大数量。对于无限制使用 \"null\"。", + "html.format.indentHandlebars.desc": "格式和缩进 {{#foo}} 和 {{/foo}}。", + "html.format.endWithNewline.desc": "以新行结束。", + "html.format.extraLiners.desc": "标记列表,以逗号分隔,其前应有额外新行。\"null\" 默认为“标头、正文、/html”。", + "html.format.wrapAttributes.desc": "对属性进行换行。", + "html.format.wrapAttributes.auto": "仅在超出行长度时才对属性进行换行。", + "html.format.wrapAttributes.force": "对除第一个属性外的其他每个属性进行换行。", + "html.format.wrapAttributes.forcealign": "对除第一个属性外的其他每个属性进行换行,并保持对齐。", + "html.format.wrapAttributes.forcemultiline": "对每个属性进行换行。", + "html.suggest.angular1.desc": "配置内置 HTML 语言支持是否建议 Angular V1 标记和属性。", + "html.suggest.ionic.desc": "配置内置 HTML 语言支持是否建议 Ionic 标记、属性和值。", + "html.suggest.html5.desc": "配置内置 HTML 语言支持是否建议 HTML5 标记、属性和值。", + "html.trace.server.desc": "跟踪 VS Code 与 HTML 语言服务器之间的通信。", + "html.validate.scripts": "配置内置的 HTML 语言支持是否对嵌入的脚本进行验证。", + "html.validate.styles": "配置内置的 HTML 语言支持是否对嵌入的样式进行验证。", + "html.autoClosingTags": "启用/禁用 HTML 标记的自动关闭。" +} \ 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 3f12dd7154e..ba42e46c478 100644 --- a/i18n/chs/extensions/html/package.i18n.json +++ b/i18n/chs/extensions/html/package.i18n.json @@ -6,29 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "HTML 语言功能", - "description": "为 HTML、Razor 和 Handlebar 文件提供丰富的语言支持。", - "html.format.enable.desc": "启用/禁用默认 HTML 格式化程序", - "html.format.wrapLineLength.desc": "每行最大字符数(0 = 禁用)。", - "html.format.unformatted.desc": "以逗号分隔的标记列表不应重设格式。\"null\" 默认为所有列于 https://www.w3.org/TR/html5/dom.html#phrasing-content 的标记。", - "html.format.contentUnformatted.desc": "以逗号分隔的标记列表,不应在其中重新设置内容的格式。\"null\" 默认为 \"pre\" 标记。", - "html.format.indentInnerHtml.desc": "缩进 和 部分。", - "html.format.preserveNewLines.desc": "是否要保留元素前面的现有换行符。仅适用于元素前,不适用于标记内或文本。", - "html.format.maxPreserveNewLines.desc": "要保留在一个区块中的换行符的最大数量。对于无限制使用 \"null\"。", - "html.format.indentHandlebars.desc": "格式和缩进 {{#foo}} 和 {{/foo}}。", - "html.format.endWithNewline.desc": "以新行结束。", - "html.format.extraLiners.desc": "标记列表,以逗号分隔,其前应有额外新行。\"null\" 默认为“标头、正文、/html”。", - "html.format.wrapAttributes.desc": "对属性进行换行。", - "html.format.wrapAttributes.auto": "仅在超出行长度时才对属性进行换行。", - "html.format.wrapAttributes.force": "对除第一个属性外的其他每个属性进行换行。", - "html.format.wrapAttributes.forcealign": "对除第一个属性外的其他每个属性进行换行,并保持对齐。", - "html.format.wrapAttributes.forcemultiline": "对每个属性进行换行。", - "html.suggest.angular1.desc": "配置内置 HTML 语言支持是否建议 Angular V1 标记和属性。", - "html.suggest.ionic.desc": "配置内置 HTML 语言支持是否建议 Ionic 标记、属性和值。", - "html.suggest.html5.desc": "配置内置 HTML 语言支持是否建议 HTML5 标记、属性和值。", - "html.trace.server.desc": "跟踪 VS Code 与 HTML 语言服务器之间的通信。", - "html.validate.scripts": "配置内置的 HTML 语言支持是否对嵌入的脚本进行验证。", - "html.validate.styles": "配置内置的 HTML 语言支持是否对嵌入的样式进行验证。", - "html.experimental.syntaxFolding": "启用或禁用语法折叠标记。", - "html.autoClosingTags": "启用/禁用 HTML 标记的自动关闭。" + "displayName": "HTML 语言基础功能", + "description": "在 HTML 文件中提供语法高亮、括号匹配和代码片段功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/chs/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..dac0ceb960a --- /dev/null +++ b/i18n/chs/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON 语言服务器" +} \ No newline at end of file diff --git a/i18n/chs/extensions/json-language-features/package.i18n.json b/i18n/chs/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..340eded0989 --- /dev/null +++ b/i18n/chs/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON 语言功能", + "description": "为 JSON 文件提供丰富的语言支持", + "json.schemas.desc": "将当前项目中的 JSON 文件与架构关联起来", + "json.schemas.url.desc": "当前目录中指向架构的 URL 或相对路径", + "json.schemas.fileMatch.desc": "将 JSON 文件解析到架构时,用于匹配的一组文件模式。", + "json.schemas.fileMatch.item.desc": "将 JSON 文件解析到架构时,用于匹配的可以包含 \"*\" 的文件模式。", + "json.schemas.schema.desc": "给定 URL 的架构定义。只需提供该架构以避免对架构 URL 的访问。", + "json.format.enable.desc": "启用/禁用默认 JSON 格式化程序(需要重启)", + "json.tracing.desc": "跟踪 VS Code 与 JSON 语言服务器之间的通信。", + "json.colorDecorators.enable.desc": "启用或禁用颜色修饰器", + "json.colorDecorators.enable.deprecationMessage": "已弃用设置 \"json.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。" +} \ 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 baafcd7474e..6138d8e11f1 100644 --- a/i18n/chs/extensions/json/package.i18n.json +++ b/i18n/chs/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "JSON 语言功能", - "description": "为 JSON 文件提供丰富的语言支持", - "json.schemas.desc": "将当前项目中的 JSON 文件与架构关联起来", - "json.schemas.url.desc": "当前目录中指向架构的 URL 或相对路径", - "json.schemas.fileMatch.desc": "将 JSON 文件解析到架构时,用于匹配的一组文件模式。", - "json.schemas.fileMatch.item.desc": "将 JSON 文件解析到架构时,用于匹配的可以包含 \"*\" 的文件模式。", - "json.schemas.schema.desc": "给定 URL 的架构定义。只需提供该架构以避免对架构 URL 的访问。", - "json.format.enable.desc": "启用/禁用默认 JSON 格式化程序(需要重启)", - "json.tracing.desc": "跟踪 VS Code 与 JSON 语言服务器之间的通信。", - "json.colorDecorators.enable.desc": "启用或禁用颜色修饰器", - "json.colorDecorators.enable.deprecationMessage": "已弃用设置 \"json.colorDecorators.enable\",请改用 \"editor.colorDecorators\"。", - "json.experimental.syntaxFolding": "启用或禁用语法折叠标记。" + "displayName": "JSON 语言基础功能", + "description": "在 JSON 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/chs/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..d0a2ce8701e --- /dev/null +++ b/i18n/chs/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "无法加载“markdown.styles”:{0}" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/chs/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..479e1e30f0b --- /dev/null +++ b/i18n/chs/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[预览] {0}", + "previewTitle": "预览 {0}" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/chs/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..6a53189d1b3 --- /dev/null +++ b/i18n/chs/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "已禁用此文档中的部分内容", + "preview.securityMessage.title": "已禁用此 Markdown 预览中的可能不安全的内容。更改 Markdown 预览安全设置以允许不安全内容或启用脚本。", + "preview.securityMessage.label": "已禁用内容安全警告" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/out/security.i18n.json b/i18n/chs/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..152913f9116 --- /dev/null +++ b/i18n/chs/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "严格", + "strict.description": "仅载入安全内容", + "insecureContent.title": "允许不安全内容", + "insecureContent.description": "允许通过 http 载入内容", + "disable.title": "禁用", + "disable.description": "允许所有内容,执行所有脚本。不推荐", + "moreInfo.title": "详细信息", + "enableSecurityWarning.title": "在此工作区中启用预览安全警告", + "disableSecurityWarning.title": "在此工作区中取消预览安全警告", + "toggleSecurityWarning.description": "不影响内容安全级别", + "preview.showPreviewSecuritySelector.title": "选择此工作区中 Markdown 预览的安全设置" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/package.i18n.json b/i18n/chs/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..6790472bfc0 --- /dev/null +++ b/i18n/chs/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 语言功能", + "description": "为 Markdown 提供丰富的语言支持。", + "markdown.preview.breaks.desc": "设置换行符如何在 markdown 预览中呈现。将其设置为 \"true\" 会为每一个新行创建一个
。", + "markdown.preview.linkify": "在 Markdown 预览中启用或禁用将类似 URL 的文本转换为链接。", + "markdown.preview.doubleClickToSwitchToEditor.desc": "在 Markdown 预览中双击切换到编辑器。", + "markdown.preview.fontFamily.desc": "控制 Markdown 预览中使用的字体系列。", + "markdown.preview.fontSize.desc": "控制 Markdown 预览中使用的字号(以像素为单位)。", + "markdown.preview.lineHeight.desc": "控制 Markdown 预览中使用的行高。此数值与字号相关。", + "markdown.preview.markEditorSelection.desc": "在 Markdown 预览中标记当前的编辑器选定内容。", + "markdown.preview.scrollEditorWithPreview.desc": "滚动 Markdown 预览时,更新其编辑器视图。", + "markdown.preview.scrollPreviewWithEditor.desc": "滚动 Markdown 编辑器时,更新其预览视图。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[弃用] 滚动 Markdown 预览以显示编辑器当前所选行。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "此设置已被 \"markdown.preview.scrollPreviewWithEditor\" 替换且不再有任何效果。", + "markdown.preview.title": "打开预览", + "markdown.previewFrontMatter.dec": "设置如何在 Markdown 预览中呈现 YAML 扉页。“隐藏”会删除扉页。否则,扉页则被视为 Markdown 内容。", + "markdown.previewSide.title": "打开侧边预览", + "markdown.showLockedPreviewToSide.title": "在侧边打开锁定的预览", + "markdown.showSource.title": "显示源", + "markdown.styles.dec": "要在 Markdown 预览中使用的 CSS 样式表的 URL 或本地路径列表。相对路径被解释为相对于资源管理器中打开的文件夹。如果没有任何打开的文件夹,则会被解释为相对于 Markdown 文件的位置。所有的 \"\\\" 需写为 \"\\\\\"。", + "markdown.showPreviewSecuritySelector.title": "更改预览安全设置", + "markdown.trace.desc": "对 Markdown 扩展启用调试日志记录。", + "markdown.preview.refresh.title": "刷新预览", + "markdown.preview.toggleLock.title": "切换开关锁定预览" +} \ No newline at end of file diff --git a/i18n/chs/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/chs/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..c5281f10087 --- /dev/null +++ b/i18n/chs/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "是否允许执行 {0} (定义为工作区设置)以进行 PHP 文件的 lint 操作?", + "php.yes": "Allow", + "php.no": "不允许", + "wrongExecutable": "无法验证,因为 {0} 不是有效的 PHP 可执行文件。请使用设置 \"php.validate.executablePath\" 配置 PHP 可执行文件。", + "noExecutable": "无法验证,因为未设置任何 PHP 可执行文件。请使用设置 \"php.validate.executablePath\" 配置 PHP 可执行文件。", + "unknownReason": "使用路径运行 php 失败: {0}。原因未知。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/php-language-features/package.i18n.json b/i18n/chs/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..0871582ebd7 --- /dev/null +++ b/i18n/chs/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "如果已启用内置 PHP 语言建议,则进行配置。此支持建议 PHP 全局变量和变量。", + "configuration.validate.enable": "启用/禁用内置的 PHP 验证。", + "configuration.validate.executablePath": "指向 PHP 可执行文件。", + "configuration.validate.run": "决定 linter 是在保存时还是输入时运行。", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "禁止 PHP 验证程序(定义为工作区设置)", + "displayName": "PHP 语言功能", + "description": "为 PHP 文件提供丰富的语言支持。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/php/package.i18n.json b/i18n/chs/extensions/php/package.i18n.json index 8385016844b..4de84845dc2 100644 --- a/i18n/chs/extensions/php/package.i18n.json +++ b/i18n/chs/extensions/php/package.i18n.json @@ -6,13 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "如果已启用内置 PHP 语言建议,则进行配置。此支持建议 PHP 全局变量和变量。", - "configuration.validate.enable": "启用/禁用内置的 PHP 验证。", - "configuration.validate.executablePath": "指向 PHP 可执行文件。", - "configuration.validate.run": "决定 linter 是在保存时还是输入时运行。", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "禁止 PHP 验证程序(定义为工作区设置)", "displayName": "PHP 语言功能", - "description": "为 PHP 文件提供 IntelliSense、lint 和语言基础功能。" + "description": "为 PHP 文件提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 7980ba2eb43..1be236770c9 100644 --- a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "未找到结果", "settingsSearchIssue": "设置搜索的问题", "bugReporter": "问题报告", - "performanceIssue": "性能问题", "featureRequest": "功能请求", + "performanceIssue": "性能问题", "stepsToReproduce": "重现步骤", "bugDescription": "请分享能稳定重现此问题的必要步骤,并包含实际和预期的结果。我们支持 GitHub 版的 Markdown。您将能在 GitHub 上预览时编辑这个问题并添加截图。", "performanceIssueDesciption": "这个性能问题是在什么时候发生的? 是在启动时,还是在一系列特定的操作之后? 我们支持 GitHub 版的 Markdown。您将能在 GitHub 上预览时编辑这个问题并添加截图。", diff --git a/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json index 60f9a85b4bf..3a1ef19744b 100644 --- a/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -57,7 +57,7 @@ "formatOnPaste": "控制编辑器是否应自动设置粘贴内容的格式。格式化程序必须可用并且能设置文档中某一范围的格式。", "autoIndent": "控制编辑器是否在用户键入、粘贴或移动行时自动调整缩进。语言的缩进规则必须可用。", "suggestOnTriggerCharacters": "控制键入触发器字符时是否应自动显示建议", - "acceptSuggestionOnEnter": "控制按“Enter”键是否像按“Tab”键一样接受建议。这能帮助避免“插入新行”和“接受建议”之间的歧义。值为“smart”时表示,仅当文字改变时,按“Enter”键才能接受建议", + "acceptSuggestionOnEnter": "控制按下 \"Enter\" 键是否像 \"Tab\" 键一样接受建议。这能减少“插入新行”和“接受建议”命令之间的歧义。若此项的值为 \"smart\",则仅在文字改变时,\"Enter\" 键才能接受建议", "acceptSuggestionOnCommitCharacter": "控制是否应在遇到提交字符时接受建议。例如,在 JavaScript 中,分号(\";\")可以为提交字符,可接受建议并键入该字符。", "snippetSuggestions.top": "在其他建议上方显示代码片段建议。", "snippetSuggestions.bottom": "在其他建议下方显示代码片段建议。", diff --git a/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json index 522811eea83..30bc289af02 100644 --- a/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,9 @@ "warningBorder": "编辑器中警告波浪线的边框颜色。", "infoForeground": "编辑器中信息波浪线的前景色。", "infoBorder": "编辑器中信息波浪线的边框颜色。", - "overviewRulerRangeHighlight": "概述范围突出显示的标尺标记颜色。", + "hintForeground": "编辑器中提示波浪线的前景色。", + "hintBorder": "编辑器中提示波浪线的边框颜色。", + "overviewRulerRangeHighlight": "概览标尺中高亮范围的标记颜色。颜色必须透明,使其不会挡住下方的其他元素。", "overviewRuleError": "概述错误的标尺标记颜色。", "overviewRuleWarning": "概述警告的标尺标记颜色。", "overviewRuleInfo": "概述信息的标尺标记颜色。" diff --git a/i18n/chs/src/vs/editor/contrib/find/findWidget.i18n.json b/i18n/chs/src/vs/editor/contrib/find/findWidget.i18n.json index 9e2c4fd733b..11f63183173 100644 --- a/i18n/chs/src/vs/editor/contrib/find/findWidget.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/find/findWidget.i18n.json @@ -18,6 +18,6 @@ "label.replaceAllButton": "全部替换", "label.toggleReplaceButton": "切换替换模式", "title.matchesCountLimit": "仅高亮了前 {0} 个结果,但所有查找操作均针对全文。", - "label.matchesLocation": "第 {0} 个(共 {1} 个)", + "label.matchesLocation": "{0} / {1}", "label.noResults": "无结果" } \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/chs/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 8cd97dfccb1..52c19604c8e 100644 --- a/i18n/chs/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "转到下一个问题 (错误、警告、信息)", - "markerAction.previous.label": "转到上一个问题 (错误、警告、信息)", - "editorMarkerNavigationError": "编辑器标记导航小组件错误颜色。", - "editorMarkerNavigationWarning": "编辑器标记导航小组件警告颜色。", - "editorMarkerNavigationInfo": "编辑器标记导航小组件信息颜色。", - "editorMarkerNavigationBackground": "编辑器标记导航小组件背景色。" + "markerAction.previous.label": "转到上一个问题 (错误、警告、信息)" } \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/chs/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..321c1e11989 --- /dev/null +++ b/i18n/chs/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "编辑器标记导航小组件错误颜色。", + "editorMarkerNavigationWarning": "编辑器标记导航小组件警告颜色。", + "editorMarkerNavigationInfo": "编辑器标记导航小组件信息颜色。", + "editorMarkerNavigationBackground": "编辑器标记导航小组件背景色。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/chs/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..4729c703440 --- /dev/null +++ b/i18n/chs/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,47 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "星期日", + "Monday": "星期一", + "Tuesday": "星期二", + "Wednesday": "星期三", + "Thursday": "星期四", + "Friday": "星期五", + "Saturday": "星期六", + "SundayShort": "周日", + "MondayShort": "周一", + "TuesdayShort": "周二", + "WednesdayShort": "周三", + "ThursdayShort": "周四", + "FridayShort": "周五", + "SaturdayShort": "周六", + "January": "一月", + "February": "二月", + "March": "三月", + "April": "四月", + "May": "五月", + "June": "六月", + "July": "七月", + "August": "八月", + "September": "九月", + "October": "十月", + "November": "十一月", + "December": "十二月", + "JanuaryShort": "1月", + "FebruaryShort": "2月", + "MarchShort": "3月", + "AprilShort": "4月", + "MayShort": "5月", + "JuneShort": "6月", + "JulyShort": "7月", + "AugustShort": "8月", + "SeptemberShort": "9月", + "OctoberShort": "10月", + "NovemberShort": "11月", + "DecemberShort": "12月" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/chs/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 9b8693d941b..1340c8a0009 100644 --- a/i18n/chs/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,8 @@ "wordHighlightStrong": "符号在进行写入访问操作时的背景颜色,例如写入变量时。颜色必须透明,使其不会挡住下方的其他元素。", "wordHighlightBorder": "符号在进行读取访问操作时的边框颜色,例如读取变量。", "wordHighlightStrongBorder": "符号在进行写入访问操作时的边框颜色,例如写入变量。", - "overviewRulerWordHighlightForeground": "概述符号突出显示的标尺标记颜色。", - "overviewRulerWordHighlightStrongForeground": "概述写访问符号突出显示的标尺标记颜色。", + "overviewRulerWordHighlightForeground": "概览标尺中符号高亮的标记颜色。颜色必须透明,使其不会挡住下方的其他元素。", + "overviewRulerWordHighlightStrongForeground": "概览标尺中写入访问符号高亮的标记颜色。颜色必须透明,使其不会挡住下方的其他元素。", "wordHighlight.next.label": "转到下一个突出显示的符号", "wordHighlight.previous.label": "转到上一个突出显示的符号" } \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/chs/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..d31cf13c73b --- /dev/null +++ b/i18n/chs/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 个其他文件未显示", + "moreFiles": "...{0} 个其他文件未显示" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/chs/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..7667b941599 --- /dev/null +++ b/i18n/chs/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "取消" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index f27f13cb3e4..4405f580f16 100644 --- a/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,15 @@ "errorInstallingDependencies": "安装依赖项时出错。{0}", "MarketPlaceDisabled": "商店未启用", "removeError": "删除扩展时出错: {0}。请重启 VS Code,然后重试。", - "Not Market place extension": "只能重新安装商店中的扩展", + "Not a Marketplace extension": "只能重新安装商店中的扩展", "notFoundCompatible": "无法安装“{0}”;没有可用的版本与 VS Code “{1}”兼容。", "malicious extension": "无法安装此扩展,它被报告存在问题。", "notFoundCompatibleDependency": "无法安装。找不到与 VS Code 当前版本 ({1}) 兼容的依赖扩展“{0}”。", "quitCode": "无法安装扩展。请在重启 VS Code 后重新安装。", "exitCode": "无法安装扩展。请在重启 VS Code 后重新安装。", "uninstallDependeciesConfirmation": "要仅卸载“{0}”或者其依赖项也一起卸载?", - "uninstallOnly": "仅", - "uninstallAll": "全部", + "uninstallOnly": "仅此扩展", + "uninstallAll": "全部卸载", "uninstallConfirmation": "是否确定要卸载“{0}”?", "ok": "确定", "singleDependentError": "无法卸载扩展程序“{0}”。扩展程序“{1}”依赖于此。", diff --git a/i18n/chs/src/vs/platform/list/browser/listService.i18n.json b/i18n/chs/src/vs/platform/list/browser/listService.i18n.json index 9131b6edaea..eaaf335f684 100644 --- a/i18n/chs/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/chs/src/vs/platform/list/browser/listService.i18n.json @@ -9,8 +9,9 @@ "workbenchConfigurationTitle": "工作台", "multiSelectModifier.ctrlCmd": "映射为 \"Ctrl\" (Windows 和 Linux) 或 \"Command\" (macOS)", "multiSelectModifier.alt": "映射为 \"Alt\" (Windows 和 Linux) 或 \"Option\" (macOS)", - "multiSelectModifier": "在通过鼠标多选树和列表条目时使用的修改键 (例如资资源管理器、打开的编辑器和源代码管理视图)。\"ctrlCmd\" 会映射为 \"Ctrl\" (Windows 和 Linux) 或 \"Command\" (macOS)。“打开到侧边”功能所需的鼠标动作 (若可用) 将会相应调整,不与多选修改键冲突。", + "multiSelectModifier": "在通过鼠标多选树和列表条目时使用的修改键 (例如资资源管理器、打开的编辑器和源代码管理视图)。\"ctrlCmd\" 会映射为 \"Ctrl\" (Windows 和 Linux) 或 \"Command\" (macOS)。“在侧边打开”功能所需的鼠标动作 (若可用) 将会相应调整,不与多选修改键冲突。", "openMode.singleClick": "在鼠标单击时打开项目。", "openMode.doubleClick": "在鼠标双击时打开项目。", - "openModeModifier": "控制如何在受支持的树和列表中使用鼠标来打开项目。设置为 \"singleClick\" 可单击打开项目,\"doubleClick\" 仅可双击打开项目。对于树中含子节点的节点,此设置将控制使用单击还是双击来展开他们。注意,某些不适用此项的树或列表可能会忽略此设置。" + "openModeModifier": "控制如何在受支持的树和列表中使用鼠标来打开项目。设置为 \"singleClick\" 可单击打开项目,\"doubleClick\" 仅可双击打开项目。对于树中含子节点的节点,此设置将控制使用单击还是双击来展开他们。注意,某些不适用此项的树或列表可能会忽略此设置。", + "horizontalScrolling setting": "控制工作台中的树控件是否支持水平滚动。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/markers/common/markers.i18n.json b/i18n/chs/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..3112dd48a98 --- /dev/null +++ b/i18n/chs/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "错误", + "sev.warning": "警告", + "sev.info": "信息" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/chs/src/vs/platform/theme/common/colorRegistry.i18n.json index 598112affdf..c7001f8f909 100644 --- a/i18n/chs/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/chs/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -93,6 +93,6 @@ "overviewRulerCurrentContentForeground": "内联合并冲突中当前版本区域的概览标尺前景色。", "overviewRulerIncomingContentForeground": "内联合并冲突中传入的版本区域的概览标尺前景色。", "overviewRulerCommonContentForeground": "内联合并冲突中共同祖先区域的概览标尺前景色。", - "overviewRulerFindMatchForeground": "概述查找匹配项的标尺标记颜色。", - "overviewRulerSelectionHighlightForeground": "概述选择突出显示的标尺标记颜色。" + "overviewRulerFindMatchForeground": "概览标尺中查找匹配项的标记颜色。颜色必须透明,使其不会挡住下方的其他元素。", + "overviewRulerSelectionHighlightForeground": "概览标尺中选择高亮的标记颜色。颜色必须透明,使其不会挡住下方的其他元素。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index f32f968237d..7481ffd0270 100644 --- a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "在 {0}ms 后终止了保存时进行的格式设置", + "timeout.onWillSave": "在 1750ms 后终止了 onWillSaveTextDocument 事件", "saveParticipants": "正在运行保存参与程序..." } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/chs/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..07256b420b4 --- /dev/null +++ b/i18n/chs/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (扩展)" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 1a0a450a870..d88886a3538 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "聚焦于下一个组", "openToSide": "打开到侧边", "closeEditor": "关闭编辑器", + "closeOneEditor": "关闭", "revertAndCloseActiveEditor": "还原并关闭编辑器", "closeEditorsToTheLeft": "关闭左侧编辑器", "closeAllEditors": "关闭所有编辑器", diff --git a/i18n/chs/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 6d4f38ad836..928aff21e49 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "关闭", "araLabelEditorActions": "编辑器操作" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 5a636ad8868..de6818efc1d 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "没有新通知", "notifications": "通知", "notificationsToolbar": "通知中心操作", "notificationsList": "通知列表" diff --git a/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json index 7644ead4a4b..a50946c2cfc 100644 --- a/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,17 @@ "windowConfigurationTitle": "窗口", "window.openFilesInNewWindow.on": "文件将在新窗口中打开", "window.openFilesInNewWindow.off": "文件将在该文件的文件夹打开的窗口中打开,或在上一个活动窗口中打开", - "window.openFilesInNewWindow.default": "文件将在该文件的文件夹打开的窗口中打开,或在上一个活动窗口中打开,除非通过平台或从查找程序(仅限 macOS)打开", - "openFilesInNewWindow": "控制是否应在新窗口中打开文件。\n- default: 文件将在该文件的文件夹打开的窗口中打开,或在上一个活动窗口中打开,除非该文件通过平台或从查找程序(仅限 macOS)打开\n- on: 文件将在新窗口中打开\n- off: 文件将在该文件的文件夹打开的窗口中打开,或在上一个活动窗口中打开\n注意,可能仍会存在忽略此设置的情况(例如当使用 -new-window 或 -reuse-window 命令行选项时)。", + "window.openFilesInNewWindow.defaultMac": "在不通过“程序坞”(Dock) 或“访达”(Finder) 打开的情况下,文件将在其所在文件夹的已有窗口中打开,或在上一个活动窗口中打开", + "window.openFilesInNewWindow.default": "除了从软件内部选择的文件 (如,从“文件”菜单选择),其他所有文件都将在新窗口中打开", + "openFilesInNewWindowMac": "控制是否在新窗口中打开文件。\n- default: 在不通过“程序坞”(Dock) 或“访达”(Finder) 打开的情况下,文件将在其所在文件夹的已有窗口中打开,或在上一个活动窗口中打开\n- on: 文件将在新窗口中打开\n- off: 文件将在其所在文件夹的已有窗口中打开,或在上一个活动窗口中打开\n注意,此设置可能会被忽略 (例如,在使用 -new-window 或 -reuse-window 命令行选项时)。", + "openFilesInNewWindow": "控制是否在新窗口中打开文件。\n- default: 除了从软件内部选择的文件 (如,从“文件”菜单选择),其他所有文件都将在新窗口中打开\n- on: 文件将在新窗口中打开\n- off: 文件将在其所在文件夹的已有窗口中打开,或在上一个活动窗口中打开\n注意,此设置可能会被忽略 (例如,在使用 -new-window 或 -reuse-window 命令行选项时)。", "window.openFoldersInNewWindow.on": "文件夹将在新窗口中打开", "window.openFoldersInNewWindow.off": "文件夹将替换上一个活动窗口", "window.openFoldersInNewWindow.default": "文件夹在新窗口中打开,除非从应用程序内选取一个文件夹(例如,通过“文件”菜单)", "openFoldersInNewWindow": "控制文件夹应在新窗口中打开还是替换上一活动窗口。\n- default: 文件夹将在新窗口中打开,除非文件是从应用程序内选取的(例如通过“文件”菜单)\n- on: 文件夹将在新窗口中打开\n- off: 文件夹将替换上一活动窗口\n注意,可能仍会存在忽略此设置的情况(例如当使用 -new-window 或 -reuse-window 命令行选项时)。", + "window.openWithoutArgumentsInNewWindow.on": "打开一个新的空窗口", + "window.openWithoutArgumentsInNewWindow.off": "聚焦于最后活动的运行实例", + "openWithoutArgumentsInNewWindow": "控制在另一实例无参启动时打开新的空窗口或是聚焦到最后运行的实例\n- on: 打开新的空窗口\n- off: 最后活动的运行实例将获得焦点\n注意,此设置可能会被忽略 (例如,在使用 -new-window 或 -reuse-window 命令行选项时)。", "window.reopenFolders.all": "重新打开所有窗口。", "window.reopenFolders.folders": "重新打开所有文件夹。空工作区将不会被恢复。", "window.reopenFolders.one": "重新打开上一个活动窗口。", @@ -58,7 +63,7 @@ "restoreWindows": "控制重启后重新打开窗口的方式。选择 \"none\" 则永远在启动时打开一个空工作区,\"one\" 则重新打开最后使用的窗口,\"folders\" 则重新打开所有含有文件夹的窗口,\"all\" 则重新打开上次会话的所有窗口。", "restoreFullscreen": "如果窗口已退出全屏模式,控制其是否应还原为全屏模式。", "zoomLevel": "调整窗口的缩放级别。原始大小是 0,每次递增(例如 1)或递减(例如 -1)表示放大或缩小 20%。也可以输入小数以便以更精细的粒度调整缩放级别。", - "title": "根据活动编辑器控制窗口标题。变量基于上下文进行替换:\n${activeEditorShort}: 文件名 (如 myFile.txt)\n${activeEditorMedium}: 相对于工作区文件夹的文件路径 (如 myFolder/myFile.txt)\n${activeEditorLong}: 文件的完整路径 (如 /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 文件所在工作区文件夹名称 (如 myFolder)\n${folderPath}: 文件所在工作区文件夹路径 (如 /Users/Development/myFolder)\n${rootName}: 工作区名称 (如 myFolder 或 myWorkspace)\n${rootPath}: 工作区路径 (如 /Users/Development/myWorkspace)\n${appName}: 如 VS Code\n${dirty}: 活动编辑器有更新时显示的更新指示器\n${separator}: 仅在被有值变量包围时显示的分隔符 (\" - \")", + "title": "根据活动编辑器控制窗口标题。变量基于上下文进行替换:\n${activeEditorShort}: 文件名 (如 myFile.txt)\n${activeEditorMedium}: 相对于工作区文件夹的文件路径 (如 myFolder/myFile.txt)\n${activeEditorLong}: 文件的完整路径 (如 /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 文件所在工作区文件夹名称 (如 myFolder)\n${folderPath}: 文件所在工作区文件夹路径 (如 /Users/Development/myFolder)\n${rootName}: 工作区名称 (如 myFolder 或 myWorkspace)\n${rootPath}: 工作区路径 (如 /Users/Development/myWorkspace)\n${appName}: 如 VS Code\n${dirty}: 活动编辑器有更新时显示的更新指示器\n${separator}: 仅在被有值变量或静态文本包围时显示的分隔符 (\" - \")", "window.newWindowDimensions.default": "在屏幕中心打开新窗口。", "window.newWindowDimensions.inherit": "以与上一个活动窗口相同的尺寸打开新窗口。", "window.newWindowDimensions.maximized": "打开最大化的新窗口。", @@ -74,6 +79,7 @@ "autoDetectHighContrast": "如果已启用,将自动更改为高对比度主题;如果 Windows 正在使用高对比度主题,则当离开 Windows 高对比度主题时会更改为深色主题。", "titleBarStyle": "调整窗口标题栏的外观。更改需要在完全重启后才能应用。", "window.nativeTabs": "\n启用macOS Sierra窗口选项卡。请注意,更改需要完全重新启动程序才能生效。如果配置此选项,本机选项卡将禁用自定义标题栏样式。", + "window.smoothScrollingWorkaround": "启用解决方案来修复还原最小化的 VS Code 窗口后平滑滚动消失的问题。这个滚动的卡顿问题出现在拥有精确式触控板的设备上,比如来自 Microsoft 的 Surface 设备(https://github.com/Microsoft/vscode/issues/13612)。如果启用这个解决方案,窗口布局可能会在从最小化状态中还原后有些许闪烁,其他方面则无大碍。", "zenModeConfigurationTitle": "Zen 模式", "zenMode.fullScreen": "控制打开 Zen Mode 是否也会将工作台置于全屏模式。", "zenMode.centerLayout": "控制是否在 Zen 模式中启用居中布局", diff --git a/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 1ea6ff1c848..934cfe0c69a 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "未验证的断点", "functionBreakpointUnsupported": "不受此调试类型支持的函数断点", "breakpointDirtydHover": "未验证的断点。对文件进行了修改,请重启调试会话。", + "logBreakpointUnsupported": "不受此调试类型支持的记录点", "conditionalBreakpointUnsupported": "不受此调试类型支持的条件断点", "hitBreakpointUnsupported": "命中不受此调试类型支持的条件断点" } \ 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 02039decac5..13779c68478 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 @@ -24,16 +24,12 @@ "restartFrame": "重新启动框架", "removeBreakpoint": "删除断点", "removeAllBreakpoints": "删除所有断点", - "enableBreakpoint": "启用断点", - "disableBreakpoint": "禁用断点", "enableAllBreakpoints": "启用所有断点", "disableAllBreakpoints": "禁用所有断点", "activateBreakpoints": "激活断点", "deactivateBreakpoints": "停用断点", "reapplyAllBreakpoints": "重新应用所有断点", "addFunctionBreakpoint": "添加函数断点", - "addConditionalBreakpoint": "添加条件断点...", - "editConditionalBreakpoint": "编辑断点...", "setValue": "设置值", "addWatchExpression": "添加表达式", "editWatchExpression": "编辑表达式", diff --git a/i18n/chs/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 7d2c3c69973..0502fc22efb 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "调试: 切换断点", "conditionalBreakpointEditorAction": "调试: 添加条件断点...", + "logPointEditorAction": "调试: 添加记录点...", "runToCursor": "运行到光标处", "debugEvaluate": "调试: 求值", "debugAddToWatch": "调试: 添加到监视", diff --git a/i18n/chs/src/vs/workbench/parts/debug/browser/linkDetector.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/browser/linkDetector.i18n.json index 49488144659..710d5957387 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/browser/linkDetector.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/browser/linkDetector.i18n.json @@ -6,6 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "fileLinkMac": "点击以跟进(Cmd + 点击打开到侧边)", - "fileLink": "点击以跟进(Ctrl + 点击打开到侧边))" + "fileLinkMac": "单击打开 (按住 Cmd 键并单击在侧边打开)", + "fileLink": "单击打开 (按住 Ctrl 键并单击在侧边打开)" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..dd2cc47ea67 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetLogMessagePlaceholder": "断点命中时记录的消息。“Enter”键确认,“Esc”键取消。", + "breakpointWidgetHitCountPlaceholder": "在满足命中次数条件时中断。按 \"Enter\" 表示接受,\"Esc\" 表示取消。", + "breakpointWidgetExpressionPlaceholder": "在表达式计算结果为 true 时中断。按 \"Enter\" 表示接受,\"Esc\" 表示取消。", + "breakpointWidgetLogMessageAriaLabel": "程序将在每次命中此断点时记录这条消息。按 Enter 键接受或按 Esc 键取消。", + "breakpointWidgetHitCountAriaLabel": "如果达到命中次数,程序仅会在此处停止。按 Enter 接受或按 Esc 取消。", + "breakpointWidgetAriaLabel": "如果此条件为 true,程序仅会在此处停止。按 Enter 接受或按 Esc 取消。", + "expression": "表达式", + "hitCount": "命中次数", + "logMessage": "记录消息" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 62dad9c4bce..aaeabd5e279 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "编辑断点...", + "disableBreakpoint": "禁用断点", + "enableBreakpoint": "启用断点", "removeBreakpoints": "删除断点", "removeBreakpointOnColumn": "在列 {0} 上删除断点", "removeLineBreakpoint": "删除行断点", @@ -18,5 +21,7 @@ "enableBreakpoints": "在列 {0} 上启用断点", "enableBreakpointOnLine": "启用行断点", "addBreakpoint": "添加断点", + "conditionalBreakpoint": "添加条件断点...", + "addLogPoint": "添加记录点...", "addConfiguration": "添加配置..." } \ No newline at end of file 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 5b3c6a5614e..d713b18f9f7 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 @@ -29,6 +29,6 @@ "showErrors": "显示错误", "noFolderWorkspaceDebugError": "无法调试活动文件。请确保它保存在磁盘上,并确保已为该文件类型安装了调试扩展。", "cancel": "取消", - "DebugTaskNotFound": "找不到 preLaunchTask“{0}”。", - "taskNotTracked": "无法跟踪 preLaunchTask “{0}”。" + "DebugTaskNotFound": "找不到任务“{0}”。", + "taskNotTracked": "无法跟踪任务“{0}”。" } \ No newline at end of file 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 c5cb1601362..8348a07cd0e 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 @@ -18,6 +18,7 @@ "debugRequest": "请求配置类型。可以是“启动”或“附加”。", "debugServer": "仅用于调试扩展开发: 如果已指定端口,VS 代码会尝试连接到在服务器模式中运行的调试适配器", "debugPrelaunchTask": "调试会话开始前要运行的任务。", + "debugPostDebugTask": "调试会话结束后运行的任务。", "debugWindowsConfiguration": "特定于 Windows 的启动配置属性。", "debugOSXConfiguration": "特定于 OS X 的启动配置属性。", "debugLinuxConfiguration": "特定于 Linux 的启动配置属性。", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 383bbbf1ba0..2a4e9d7f43f 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "配置建议的扩展(工作区文件夹)", "malicious tooltip": "此扩展被报告存在问题。", "malicious": "恶意扩展", + "disabled": "已禁用", + "disabled globally": "已禁用", + "disabled workspace": "已在此工作区禁用", "disableAll": "禁用所有已安装的扩展", "disableAllWorkspace": "禁用此工作区的所有已安装的扩展", "enableAll": "启用所有扩展", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..8c7037df74f --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,61 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "扩展名", + "extension id": "扩展标识符", + "preview": "预览版", + "builtin": "内置", + "publisher": "发布服务器名称", + "install count": "安装计数", + "rating": "评级", + "repository": "存储库", + "license": "许可证", + "details": "详细信息", + "contributions": "发布内容", + "changelog": "更改日志", + "dependencies": "依赖项", + "noReadme": "无可用自述文件。", + "noChangelog": "无可用的更改日志。", + "noContributions": "没有发布内容", + "noDependencies": "没有依赖项", + "settings": "设置({0})", + "setting name": "名称", + "description": "描述", + "default": "默认", + "debuggers": "调试程序({0})", + "debugger name": "名称", + "debugger type": "类型", + "views": "视图 ({0})", + "view id": "ID", + "view name": "名称", + "view location": "位置", + "localizations": "本地化 ({0})", + "localizations language id": "语言 ID", + "localizations language name": "语言名称", + "localizations localized language name": "语言的本地名称", + "colorThemes": "颜色主题 ({0})", + "iconThemes": "图标主题 ({0})", + "colors": "颜色 ({0})", + "colorId": "ID", + "defaultDark": "深色默认", + "defaultLight": "浅色默认", + "defaultHC": "高对比度默认", + "JSON Validation": "JSON 验证({0})", + "fileMatch": "匹配文件", + "schema": "结构", + "commands": "命令({0})", + "command name": "名称", + "keyboard shortcuts": "键盘快捷方式", + "menuContexts": "菜单上下文", + "languages": "语言({0})", + "language id": "ID", + "language name": "名称", + "file extensions": "文件扩展名", + "grammar": "语法", + "snippets": "代码片段" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 35b4eb3a0e8..d16ee08c77d 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "neverShowAgain": "不再显示", - "searchMarketplace": "搜索应用商店", + "searchMarketplace": "搜索商店", "showLanguagePackExtensions": "商店中有可以将 VS Code 本地化为“{0}”语言的扩展。", "dynamicWorkspaceRecommendation": "您可能会对这个扩展感兴趣,它在 {0} 存储库的用户间流行。", "exeBasedRecommendation": "根据你安装的 {0},向你推荐此扩展。", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 186eff5c175..292dde16d60 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,9 @@ "recommendedExtensions": "推荐", "otherRecommendedExtensions": "其他推荐", "workspaceRecommendedExtensions": "工作区推荐", - "builtInExtensions": "内置", + "builtInExtensions": "功能", + "builtInThemesExtensions": "主题", + "builtInBasicsExtensions": "语言", "searchExtensions": "在商店中搜索扩展", "sort by installs": "排序依据: 安装计数", "sort by rating": "排序依据: 分级", diff --git a/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 0eaa7947445..1b8f196bc9e 100644 --- a/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,6 +8,8 @@ ], "textFileEditor": "文本文件编辑器", "createFile": "创建文件", + "relaunchWithIncreasedMemoryLimit": "重新启动", + "configureMemoryLimit": "配置", "fileEditorWithInputAriaLabel": "{0}。文本文件编辑器。", "fileEditorAriaLabel": "文本文件编辑器。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index a7491087b48..f82464e4491 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -17,7 +17,7 @@ "compareActiveWithSaved": "比较活动与已保存的文件", "closeEditor": "关闭编辑器", "view": "查看", - "openToSide": "打开到侧边", + "openToSide": "在侧边打开", "revealInWindows": "在资源管理器中显示", "revealInMac": "在 Finder 中显示", "openContainer": "打开所在的文件夹", diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index b5a25dbf287..aef6c2652d0 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -34,8 +34,10 @@ "confirmDeleteMessageFolder": "是否确定要永久删除“{0}”及其内容?", "confirmDeleteMessageFile": "是否确定要永久删除“{0}”?", "irreversible": "此操作不可逆!", - "cancel": "取消", - "permDelete": "永久删除", + "binFailed": "无法删除到回收站。是否永久删除?", + "trashFailed": "无法删除到废纸篓。是否永久删除?", + "deletePermanentlyButtonLabel": "永久删除(&&D)", + "retryButtonLabel": "重试(&&R)", "importFiles": "导入文件", "confirmOverwrite": "目标文件夹中已存在具有相同名称的文件或文件夹。是否要替换它?", "replaceButtonLabel": "替换(&&R)", diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 341096873d5..15d0a742680 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,8 +35,10 @@ "hotExit": "控制是否在会话间记住未保存的文件,以允许在退出编辑器时跳过保存提示。", "useExperimentalFileWatcher": "使用新的试验文件观察程序。", "defaultLanguage": "分配给新文件的默认语言模式。", + "maxMemoryForLargeFilesMB": "在尝试打开大型文件时,重新启动程序后应用的新的内存限制 (MB)。如果您希望以较高的限制启动,可以在命令行启动时添加参数 \"--max-memory=新的大小\" 。", "editorConfigurationTitle": "编辑器", "formatOnSave": "保存时设置文件的格式。格式化程序必须可用,不能自动保存文件,并且不能关闭编辑器。", + "formatOnSaveTimeout": "在保存时格式化操作的超时时间。为 formatOnSave 命令指定时间限制 (单位: 毫秒)。运行超过设定时间的命令将被取消。", "explorerConfigurationTitle": "文件资源管理器", "openEditorsVisible": "在“打开的编辑器”窗格中显示的编辑器数量。", "autoReveal": "控制资源管理器是否应在打开文件时自动显示并选择它们。", diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index a9f0a0ac95a..50c7a30328b 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -13,7 +13,9 @@ "dropFolder": "你是否要将文件夹添加到工作区?", "addFolders": "添加文件夹(&&A)", "addFolder": "添加文件夹(&&A)", + "confirmRootsMove": "是否确定要更改工作区中多个根文件夹的顺序?", "confirmMultiMove": "是否确定要移动以下 {0} 个文件?", + "confirmRootMove": "是否确定要更改工作区中根文件夹“{0}”的顺序?", "confirmMove": "是否确实要移动“{0}”?", "doNotAskAgain": "不再询问", "moveButtonLabel": "移动(&&M)", diff --git a/i18n/chs/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..f094961018a --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "HTML 预览" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..2d7ab40f3c9 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "无效的编辑器输入。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..4602f031212 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "开发者" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/chs/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..bad27cc286a --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "打开 Webview 开发工具", + "refreshWebviewLabel": "重新加载 Webview" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 42ca809e58b..2bc538eaf9f 100644 --- a/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "是否将 VS Code 的界面语言更换为 {0} 并重新启动?", + "yes": "是", + "no": "否", + "doNotAskAgain": "不再询问", "JsonSchema.locale": "要使用的 UI 语言。", "vscode.extension.contributes.localizations": "向编辑器提供本地化内容", "vscode.extension.contributes.localizations.languageId": "显示字符串翻译的目标语言 ID。", diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..7cf34baa098 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "复制", + "copyMarkerMessage": "复制消息" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..158b3a24233 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "总计 {0} 个问题", + "filteredProblems": "显示 {0} 个 (共 {1} 个) 问题" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..f4c0a38ab65 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "问题", + "tooltip.1": "此文件存在 1 个问题", + "tooltip.N": "此文件存在 {0} 个问题", + "markers.showOnFile": "显示关于文件与文件夹的错误与警告。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..9e91dc0ee53 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,44 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "查看", + "problems.view.toggle.label": "切换问题 (错误、警告、信息) 视图", + "problems.view.focus.label": "聚焦于问题 (错误、警告、信息) 视图", + "problems.panel.configuration.title": "问题预览", + "problems.panel.configuration.autoreveal": "控制问题预览是否应在打开文件时自动显示它们。", + "markers.panel.title.problems": "问题", + "markers.panel.aria.label.problems.tree": "按文件分组的问题", + "markers.panel.no.problems.build": "目前尚未在工作区检测到问题。", + "markers.panel.no.problems.filters": "使用提供的筛选条件未找到结果", + "markers.panel.action.filter": "筛选器问题", + "markers.panel.filter.placeholder": "按类型或文本进行筛选", + "markers.panel.filter.errors": "错误", + "markers.panel.filter.warnings": "警告", + "markers.panel.filter.infos": "信息", + "markers.panel.single.error.label": "1 个错误", + "markers.panel.multiple.errors.label": "{0} 个错误", + "markers.panel.single.warning.label": "1 条警告", + "markers.panel.multiple.warnings.label": "{0} 条警告", + "markers.panel.single.info.label": "1 条信息", + "markers.panel.multiple.infos.label": "{0} 条信息", + "markers.panel.single.unknown.label": "1 个未知", + "markers.panel.multiple.unknowns.label": "{0} 个未知", + "markers.panel.at.ln.col.number": "({0},{1})", + "problems.tree.aria.label.resource": "含有 {1} 问题的 {0}", + "problems.tree.aria.label.marker.relatedInformation": "此问题包含对 {0} 个位置的引用。", + "problems.tree.aria.label.error.marker": "{0} 生成的错误: {2} 行 {3} 列,{1}。{4}", + "problems.tree.aria.label.error.marker.nosource": "错误: {1} 行 {2} 列,{0}。{3}", + "problems.tree.aria.label.warning.marker": "{0} 生成的警告: {2} 行 {3} 列,{1}。{4}", + "problems.tree.aria.label.warning.marker.nosource": "警告: {1} 行 {2} 列,{0}。{3}", + "problems.tree.aria.label.info.marker": "{0} 生成的信息: {2} 行 {3} 列,{1}。{4}", + "problems.tree.aria.label.info.marker.nosource": "信息: {1} 行 {2} 列,{0}。{3}", + "problems.tree.aria.label.marker": "{0} 生成的问题: {2} 行 {3} 列,{1}。{4}", + "problems.tree.aria.label.marker.nosource": "问题: {1} 行 {2} 列,{0}。{3}", + "problems.tree.aria.label.relatedinfo.message": "{3} 的 {1} 行 {2} 列,{0}", + "errors.warnings.show.label": "显示错误和警告" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/chs/src/vs/workbench/parts/output/browser/outputActions.i18n.json index bd4378d469a..d1ae5895425 100644 --- a/i18n/chs/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "切换输出", "clearOutput": "清除输出", "toggleOutputScrollLock": "切换输出 Scroll Lock", - "switchToOutput.label": "切换到输出" + "switchToOutput.label": "切换到输出", + "openInLogViewer": "打开日志文件" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index 13510a5cdd7..3a4c87eda4f 100644 --- a/i18n/chs/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "输出", "logViewer": "日志查看器", "viewCategory": "查看", - "clearOutput.label": "清除输出" + "clearOutput.label": "清除输出", + "openActiveLogOutputFile": "查看: 打开活动日志输出文件" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index c1ce0fdc7a2..c40f2b67618 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -7,6 +7,8 @@ "Do not edit this file. It is machine generated." ], "keybindingsInputName": "键盘快捷方式", + "showDefaultKeybindings": "显示默认键绑定", + "showUserKeybindings": "显示用户键绑定", "SearchKeybindings.AriaLabel": "搜索键绑定", "SearchKeybindings.Placeholder": "搜索键绑定", "sortByPrecedene": "按优先级排序", diff --git a/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 8f8fcaf653e..4fc9ae1d616 100644 --- a/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "显示下一个搜索包含模式", "previousSearchIncludePattern": "显示上一个搜索包含模式", - "nextSearchExcludePattern": "显示下一个搜索排除模式", - "previousSearchExcludePattern": "显示上一个搜索排除模式", "nextSearchTerm": "显示下一个搜索词", "previousSearchTerm": "显示上一个搜索词", "showSearchViewlet": "显示搜索", diff --git a/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json index e6d06592621..101ca4d9984 100644 --- a/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,9 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "切换搜索详细信息", - "searchScope.includes": "要包含的文件", - "label.includes": "搜索包含模式", - "searchScope.excludes": "要排除的文件", - "label.excludes": "搜索排除模式", + "searchIncludeExclude.label": "包含或排除的文件", + "searchIncludeExclude.ariaLabel": "搜索中包含或排除项的模式", + "searchIncludeExclude.placeholder": "例: src, !*.ts, test/**/*.log", "replaceAll.confirmation.title": "全部替换", "replaceAll.confirm.button": "替换(&&R)", "replaceAll.occurrence.file.message": "已将 {1} 文件中出现的 {0} 替换为“{2}”。", diff --git a/i18n/chs/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/chs/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index a87c2006c20..ba6cda60d7e 100644 --- a/i18n/chs/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "问题模式或者所提供或预定义问题模式的名称。如果已指定基准,则可以省略。", "ProblemMatcherSchema.base": "要使用的基问题匹配程序的名称。", "ProblemMatcherSchema.owner": "代码内问题的所有者。如果指定了基准,则可省略。如果省略,并且未指定基准,则默认值为“外部”。", + "ProblemMatcherSchema.source": "描述此诊断信息来源的人类可读字符串。如,\"typescript\" 或 \"super lint\"。", "ProblemMatcherSchema.severity": "捕获问题的默认严重性。如果模式未定义严重性的匹配组,则使用。", "ProblemMatcherSchema.applyTo": "控制文本文档上报告的问题是否仅应用于打开、关闭或所有文档。", "ProblemMatcherSchema.fileLocation": "定义应如何解释问题模式中报告的文件名。", diff --git a/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index f4a7949ce43..bb8dcf133ba 100644 --- a/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,15 @@ "JsonSchema.tasks.group.none": "将任务分配为没有组", "JsonSchema.tasks.group": "定义此任务属于的执行组。它支持 \"build\" 以将其添加到生成组,也支持 \"test\" 以将其添加到测试组。", "JsonSchema.tasks.type": "定义任务是被作为进程运行还是在 shell 中作为命令运行。", + "JsonSchema.command.quotedString.value": "实际命令值", + "JsonSchema.tasks.quoting.escape": "使用 Shell 的转义字符来转义文本 (如,PowerShell 下的 ` 和 bash 下的 \\ )", + "JsonSchema.tasks.quoting.strong": "使用 Shell 的强引用字符来引用参数 (如,在 PowerShell 和 bash 下的 \" )。", + "JsonSchema.tasks.quoting.weak": "使用 Shell 的弱引用字符来引用参数 (如,在 PowerShell 和 bash 下的 ' )。", + "JsonSchema.command.quotesString.quote": "如何引用命令值。", + "JsonSchema.command": "要执行的命令。可以是外部程序或 shell 命令。", + "JsonSchema.args.quotedString.value": "实际参数值", + "JsonSchema.args.quotesString.quote": "如何引用参数值。", + "JsonSchema.tasks.args": "在调用此任务时传递给命令的参数。", "JsonSchema.tasks.label": "任务的用户界面标签", "JsonSchema.version": "配置的版本号。", "JsonSchema.tasks.identifier": "用于在 launch.json 或 dependsOn 子句中引用任务的用户定义标识符。", 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 9a6438ad8f5..b4c4b3ab561 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 @@ -8,9 +8,11 @@ ], "tasksCategory": "任务", "ConfigureTaskRunnerAction.label": "配置任务", - "problems": "问题", + "totalErrors": "{0} 个错误", + "totalWarnings": "{0} 条警告", + "totalInfos": "{0} 条信息", "building": "正在生成...", - "manyMarkers": "99+", + "manyProblems": "1万+", "runningTasks": "显示运行中的任务", "tasks": "任务", "TaskSystem.noHotSwap": "在有活动任务运行时更换任务执行引擎需要重新加载窗口", @@ -46,8 +48,8 @@ "recentlyUsed": "最近使用的任务", "configured": "已配置的任务", "detected": "检测到的任务", - "TaskService.ignoredFolder": "由于使用任务版本 0.1.0,以下工作区文件夹将被忽略: {0}", "TaskService.notAgain": "不再显示", + "TaskService.ignoredFolder": "由于使用任务版本 0.1.0,以下工作区文件夹将被忽略: {0}", "TaskService.pickRunTask": "选择要运行的任务", "TaslService.noEntryToRun": "没有找到要运行的任务。配置任务...", "TaskService.fetchingBuildTasks": "正在获取生成任务...", diff --git a/i18n/chs/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/chs/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index e9405d899ae..eff1b3e65f3 100644 --- a/i18n/chs/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "警告: options.cwd 必须属于字符串类型。正在忽略值 {0}\n", + "ConfigurationParser.inValidArg": "错误: 命令参数必须是字符串或有效引用的字符串。提供的值为: {0}", "ConfigurationParser.noargs": "错误: 命令参数必须是字符串数组。提供的值为:\n{0}", "ConfigurationParser.noShell": "警告: 仅当在终端中执行任务时支持 shell 配置。", "ConfigurationParser.noName": "错误: 声明范围内的问题匹配程序必须具有名称:\n{0}\n", @@ -17,7 +18,6 @@ "ConfigurationParser.missingRequiredProperty": "错误: 任务配置“{0}”缺失必要属性“{1}”。将忽略该任务。", "ConfigurationParser.notCustom": "错误: 任务未声明为自定义任务。将忽略配置。\n{0}\n", "ConfigurationParser.noTaskName": "错误: 任务必须提供 label 属性。将忽略该任务。\n{0}\n", - "taskConfiguration.shellArgs": "警告: 任务“{0}”是 shell 命令,而且其中一个参数可能含有未转义的空格。若要确保命令行引用正确,请将参数合并到该命令。", "taskConfiguration.noCommandOrDependsOn": "错误:任务“{0}”既不指定命令,也不指定 dependsOn 属性。将忽略该任务。其定义为:\n{1}", "taskConfiguration.noCommand": "错误: 任务“{0}”未定义命令。将忽略该任务。其定义为:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "任务版本 2.0.0 不支持全局操作系统特定任务。请将他们转换为含有操作系统特定命令的任务。受影响的任务有:\n{0}" diff --git a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 89fbf231d71..66844979174 100644 --- a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,9 @@ "workbench.action.terminal.hideFindWidget": "隐藏查找小组件", "nextTerminalFindTerm": "显示下一个搜索结果", "previousTerminalFindTerm": "显示上一个搜索结果", - "quickOpenTerm": "切换活动终端" + "quickOpenTerm": "切换活动终端", + "workbench.action.terminal.focusPreviousCommand": "聚焦于上一条命令", + "workbench.action.terminal.focusNextCommand": "聚焦于下一条命令", + "workbench.action.terminal.selectToPreviousCommand": "选择上一条命令所有内容", + "workbench.action.terminal.selectToNextCommand": "选择下一条命令所有内容" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 243d3f06aeb..074d8bdd681 100644 --- a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "复制", + "split": "拆分", "paste": "粘贴", "selectAll": "全选", - "clear": "清除", - "split": "拆分" + "clear": "清除" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..7f372029862 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "发行说明: {0}", + "unassigned": "未分配" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 9dda0b0a236..1fcb4a17477 100644 --- a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "稍后", - "unassigned": "未分配", "releaseNotes": "发行说明", "showReleaseNotes": "显示发行说明", "read the release notes": "欢迎使用 {0} v{1}! 是否要阅读发布说明?", diff --git a/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..de275d5e951 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "webview 编辑器" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/chs/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..4230b0cfc3a --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.optOutNotice": "帮助改善 VS Code,允许 Microsoft 收集使用数据。请阅读我们的[隐私声明]({0})并了解如何[选择退出]({1})。", + "telemetryOptOut.optInNotice": "帮助改善 VS Code,允许 Microsoft 收集使用数据。请阅读我们的[隐私声明]({0})并了解如何[选择加入]({1})。", + "telemetryOptOut.readMore": "了解详细信息" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..e28b73aabd5 --- /dev/null +++ b/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,21 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolderMultiRoot": "无法在多文件夹工作区中解析 ${workspaceFolder}。使用 : 和文件夹名称来限定此变量的作用域。", + "canNotResolveWorkspaceFolder": "无法解析 ${workspaceFolder}。请打开一个文件夹。", + "canNotResolveFolderBasenameMultiRoot": "无法在多文件夹工作区中解析 ${workspaceFolderBasename}。使用 : 和文件夹名称来限定此变量的作用域。", + "canNotResolveFolderBasename": "无法解析 ${workspaceFolderBasename}。请打开一个文件夹。", + "canNotResolveLineNumber": "无法解析 ${lineNumber}。请打开一个编辑器。", + "canNotResolveSelectedText": "无法解析 ${selectedText}。请打开一个编辑器。", + "canNotResolveFile": "无法解析 ${file}。请打开一个编辑器。", + "canNotResolveRelativeFile": "无法解析 ${relativeFile}。请打开一个编辑器。", + "canNotResolveFileDirname": "无法解析 ${fileDirname}。请打开一个编辑器。", + "canNotResolveFileExtname": "无法解析 ${fileExtname}。请打开一个编辑器。", + "canNotResolveFileBasename": "无法解析 ${fileBasename}。请打开一个编辑器。", + "canNotResolveFileBasenameNoExtension": "无法解析 ${fileBasenameNoExtension}。请打开一个编辑器。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/chs/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..e3294fd3329 --- /dev/null +++ b/i18n/chs/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "是(&&Y)", + "cancelButton": "取消" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 9ffcc94311f..1dd9885b81f 100644 --- a/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,7 @@ "neverShowAgain": "不再显示", "netVersionError": "需要 Microsoft .NET Framework 4.5。请访问链接安装它。", "learnMore": "说明", - "enospcError": "{0} 的文件句柄已用完。 请按照说明解决此问题。", + "enospcError": "{0} 无法监视这个大型工作区的文件变化。请访问说明链接解决此问题。", "binFailed": "未能将“{0}”移动到回收站", "trashFailed": "未能将“{0}”移动到废纸篓" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/chs/src/vs/workbench/services/files/node/fileService.i18n.json index 2f1e460ba31..c2cd87e923e 100644 --- a/i18n/chs/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,7 @@ "fileInvalidPath": "无效的文件资源({0})", "fileIsDirectoryError": "文件是目录", "fileNotModifiedError": "自以下时间未修改的文件:", - "fileTooLargeForHeapError": "文件大小超过窗口内存限制,请尝试运行 code --max-memory=[新的大小]", + "fileTooLargeForHeapError": "文件大小超过默认内存限制。您可以使用更高的限制重新启动,当前限制为 {0}MB", "fileTooLargeError": "文件太大,无法打开", "fileNotFoundError": "找不到文件({0})", "fileBinaryError": "文件似乎是二进制文件,无法作为文档打开", diff --git a/i18n/chs/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/chs/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..2ac63294841 100644 --- a/i18n/chs/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/chs/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "取消" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 4a5227e1f24..b3351c5e331 100644 --- a/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "tmLanguage 文件所用的 textmate 范围名称。", "vscode.extension.contributes.grammars.path": "tmLanguage 文件的路径。该路径是相对于扩展文件夹,通常以 \"./syntaxes/\" 开头。", "vscode.extension.contributes.grammars.embeddedLanguages": "如果此语法包含嵌入式语言,则为作用域名称到语言 ID 的映射。", + "vscode.extension.contributes.grammars.tokenTypes": "从作用域名到标记类型的映射。", "vscode.extension.contributes.grammars.injectTo": "此语法注入到的语言范围名称列表。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 8d7273e1ad7..47ffc41e0ba 100644 --- a/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/chs/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "“contributes.{0}.path”中应为字符串。提供的值: {1}", "invalid.injectTo": "\"contributes.{0}.injectTo\" 中的值无效。必须为语言范围名称数组。提供的值: {1}", "invalid.embeddedLanguages": "\"contributes.{0}.embeddedLanguages\" 中的值无效。必须为从作用域名称到语言的对象映射。提供的值: {1}", + "invalid.tokenTypes": "“contributes.{0}.tokenTypes”的值无效。其必须为从作用域名到标记类型的对象映射。当前值: {1}", "invalid.path.1": "“contributes.{0}.path”({1})应包含在扩展的文件夹({2})内。这可能会使扩展不可移植。", "no-tm-grammar": "没有注册这种语言的 TM 语法。" } \ No newline at end of file diff --git a/i18n/cht/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/cht/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..8d5e76dfac0 --- /dev/null +++ b/i18n/cht/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS 語言伺服器", + "folding.start": "摺疊區域開始", + "folding.end": "摺疊區域結束" +} \ No newline at end of file diff --git a/i18n/cht/extensions/css-language-features/package.i18n.json b/i18n/cht/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..d40f448f342 --- /dev/null +++ b/i18n/cht/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS 語言功能", + "description": "為 CSS, LESS 和 SCSS 檔案提供豐富的語言支援 ", + "css.title": "CSS", + "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.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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", + "css.lint.importStatement.desc": "匯入陳述式不會平行載入", + "css.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 '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.trace.server.desc": "追蹤 VS Code 與 CSS 語言伺服器之間的通訊。", + "css.validate.title": "控制 CSS 驗證與問題嚴重性。", + "css.validate.desc": "啟用或停用所有驗證", + "less.title": "LESS", + "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 脆弱,在版面配置的任一層面改變時容易中斷。", + "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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", + "less.lint.importStatement.desc": "匯入陳述式不會平行載入", + "less.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 '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.title": "控制 LESS 驗證與問題嚴重性。", + "less.validate.desc": "啟用或停用所有驗證", + "scss.title": "SCSS (Sass)", + "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 脆弱,在版面配置的任一層面改變時容易中斷。", + "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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", + "scss.lint.importStatement.desc": "匯入陳述式不會平行載入", + "scss.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 'display: inline',則 width、height、margin-top、margin-bottom 以及 float 屬性就不會有任何作用。", + "scss.lint.universalSelector.desc": "已知通用選取器 (*) 速度緩慢", + "scss.lint.unknownProperties.desc": "未知的屬性。", + "scss.lint.unknownVendorSpecificProperties.desc": "未知的廠商特定屬性。", + "scss.lint.vendorPrefix.desc": "在使用廠商專屬的前置詞時,也包括標準屬性。", + "scss.lint.zeroUnits.desc": "零不需要任何單位", + "scss.validate.title": "控制 SCSS 驗證與問題嚴重性。", + "scss.validate.desc": "啟用或停用所有驗證", + "less.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", + "scss.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", + "css.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", + "css.colorDecorators.enable.deprecationMessage": "設定 `css.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。", + "scss.colorDecorators.enable.deprecationMessage": "設定 `scss.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。", + "less.colorDecorators.enable.deprecationMessage": "設定 `less.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/css/package.i18n.json b/i18n/cht/extensions/css/package.i18n.json index d40f448f342..35229bd6699 100644 --- a/i18n/cht/extensions/css/package.i18n.json +++ b/i18n/cht/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "CSS 語言功能", - "description": "為 CSS, LESS 和 SCSS 檔案提供豐富的語言支援 ", - "css.title": "CSS", - "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.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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", - "css.lint.importStatement.desc": "匯入陳述式不會平行載入", - "css.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 '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.trace.server.desc": "追蹤 VS Code 與 CSS 語言伺服器之間的通訊。", - "css.validate.title": "控制 CSS 驗證與問題嚴重性。", - "css.validate.desc": "啟用或停用所有驗證", - "less.title": "LESS", - "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 脆弱,在版面配置的任一層面改變時容易中斷。", - "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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", - "less.lint.importStatement.desc": "匯入陳述式不會平行載入", - "less.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 '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.title": "控制 LESS 驗證與問題嚴重性。", - "less.validate.desc": "啟用或停用所有驗證", - "scss.title": "SCSS (Sass)", - "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 脆弱,在版面配置的任一層面改變時容易中斷。", - "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.important.desc": "避免使用 !important。這表示整個 CSS 的明確性皆失控,需要重構。", - "scss.lint.importStatement.desc": "匯入陳述式不會平行載入", - "scss.lint.propertyIgnoredDueToDisplay.desc": "屬性因顯示而忽略。例如,若為 'display: inline',則 width、height、margin-top、margin-bottom 以及 float 屬性就不會有任何作用。", - "scss.lint.universalSelector.desc": "已知通用選取器 (*) 速度緩慢", - "scss.lint.unknownProperties.desc": "未知的屬性。", - "scss.lint.unknownVendorSpecificProperties.desc": "未知的廠商特定屬性。", - "scss.lint.vendorPrefix.desc": "在使用廠商專屬的前置詞時,也包括標準屬性。", - "scss.lint.zeroUnits.desc": "零不需要任何單位", - "scss.validate.title": "控制 SCSS 驗證與問題嚴重性。", - "scss.validate.desc": "啟用或停用所有驗證", - "less.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", - "scss.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", - "css.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", - "css.colorDecorators.enable.deprecationMessage": "設定 `css.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。", - "scss.colorDecorators.enable.deprecationMessage": "設定 `scss.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。", - "less.colorDecorators.enable.deprecationMessage": "設定 `less.colorDecorators.enable` 已淘汰,改為 `editor.colorDecorators`。" + ] } \ No newline at end of file diff --git a/i18n/cht/extensions/emmet/package.i18n.json b/i18n/cht/extensions/emmet/package.i18n.json index 660a269c068..b356553fff9 100644 --- a/i18n/cht/extensions/emmet/package.i18n.json +++ b/i18n/cht/extensions/emmet/package.i18n.json @@ -59,5 +59,6 @@ "emmetPreferencesCssWebkitProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'webkit' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'webkit' 前綴。", "emmetPreferencesCssMozProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'moz' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'moz' 前綴。", "emmetPreferencesCssOProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'o' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'o' 前綴。", - "emmetPreferencesCssMsProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'ms' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'ms' 前綴。" + "emmetPreferencesCssMsProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'ms' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'ms' 前綴。", + "emmetPreferencesCssFuzzySearchMinScore": "模糊比對的縮寫應該達到最低分數(從 0 到 1)。較低數值可能產生錯誤的比對,較高的數值可能會降低可能的比對。" } \ No newline at end of file diff --git a/i18n/cht/extensions/git/out/commands.i18n.json b/i18n/cht/extensions/git/out/commands.i18n.json index e25ea2cf781..b7d543af3f2 100644 --- a/i18n/cht/extensions/git/out/commands.i18n.json +++ b/i18n/cht/extensions/git/out/commands.i18n.json @@ -75,7 +75,7 @@ "ok": "確定", "push with tags success": "已成功使用標籤推送。", "pick remote": "挑選要發行分支 '{0}' 的目標遠端:", - "sync is unpredictable": "此動作會將認可發送至 '{0}' 及從中提取認可。", + "sync is unpredictable": "此動作會推送認可至`{0}/{1}`並從中提取認可。", "never again": "確定,不要再顯示", "no remotes to publish": "您的儲存庫未設定要發行的遠端目標。", "no changes stash": "沒有變更可供隱藏。", diff --git a/i18n/cht/extensions/git/package.i18n.json b/i18n/cht/extensions/git/package.i18n.json index 044a69ec71a..bc042cb15d8 100644 --- a/i18n/cht/extensions/git/package.i18n.json +++ b/i18n/cht/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "控制是否在Git變更列表中的檔名旁顯示“開啟檔案”的動作按鈕。", "config.inputValidation": "控制何時顯示認可訊息輸入驗證。", "config.detectSubmodules": "控制是否自動偵測 Git 子模組。", + "config.detectSubmodulesLimit": "控制 Git 子模組的偵測限制", "colors.modified": "修改資源的顏色。", "colors.deleted": "刪除資源的顏色", "colors.untracked": "未追蹤資源的顏色。", diff --git a/i18n/cht/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/cht/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..0c001145a7a --- /dev/null +++ b/i18n/cht/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML 語言伺服器", + "folding.start": "摺疊區域開始", + "folding.end": "摺疊區域結束" +} \ No newline at end of file diff --git a/i18n/cht/extensions/html-language-features/package.i18n.json b/i18n/cht/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..d83d91cc72a --- /dev/null +++ b/i18n/cht/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML 語言功能", + "description": "為 HTML、Razor 及 Handlebars 檔案提供豐富的語言支援。", + "html.format.enable.desc": "啟用/停用預設 HTML 格式器", + "html.format.wrapLineLength.desc": "每行的字元數上限 (0 = 停用)。", + "html.format.unformatted.desc": "不應重新格式化的逗號分隔標記清單。'null' 預設為 https://www.w3.org/TR/html5/dom.html#phrasing-content 中列出的所有標記。", + "html.format.contentUnformatted.desc": "逗點分隔的標記清單,其中內容的格式不應重新設定。'null' 預設為 'pre' 標記。", + "html.format.indentInnerHtml.desc": "縮排 及 區段。", + "html.format.preserveNewLines.desc": "是否應保留項目前方現有的分行符號。僅適用於項目前方,而不適用於標記內或文字。", + "html.format.maxPreserveNewLines.desc": "一個區塊要保留的最大分行符號數。使用 'null' 表示無限制。", + "html.format.indentHandlebars.desc": "格式化並縮排 {{#foo}} 及 {{/foo}}。", + "html.format.endWithNewline.desc": "以新行字元結尾。", + "html.format.extraLiners.desc": "前方應有額外新行字元的標記清單,須以逗號分隔。'null' 的預設值為 \"head, body, /html\"。", + "html.format.wrapAttributes.desc": "將屬性換行。", + "html.format.wrapAttributes.auto": "只在超過行的長度時將屬性換行。", + "html.format.wrapAttributes.force": "將第一個以外的每個屬性換行。", + "html.format.wrapAttributes.forcealign": "將第一個以外的每個屬性換行,並保持對齊。", + "html.format.wrapAttributes.forcemultiline": "將每個屬性換行。", + "html.suggest.angular1.desc": "設定內建 HTML 語言支援是否建議 Angular V1 標記和屬性。", + "html.suggest.ionic.desc": "設定內建 HTML 語言支援是否建議 Ionic 標記、屬性和值。", + "html.suggest.html5.desc": "設定內建 HTML 語言支援是否建議 HTML5 標記、屬性和值。", + "html.trace.server.desc": "追蹤 VS Code 與 HTML 語言伺服器之間的通訊。", + "html.validate.scripts": "設定內建 HTML 語言支援是否會驗證內嵌指定碼。", + "html.validate.styles": "設定內建 HTML 語言支援是否會驗證內嵌樣式。", + "html.autoClosingTags": "啟用/停用 HTML 標籤的自動關閉功能。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/html/package.i18n.json b/i18n/cht/extensions/html/package.i18n.json index d120f92d827..35229bd6699 100644 --- a/i18n/cht/extensions/html/package.i18n.json +++ b/i18n/cht/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "HTML 語言功能", - "description": "為 HTML、Razor 及 Handlebars 檔案提供豐富的語言支援。", - "html.format.enable.desc": "啟用/停用預設 HTML 格式器", - "html.format.wrapLineLength.desc": "每行的字元數上限 (0 = 停用)。", - "html.format.unformatted.desc": "不應重新格式化的逗號分隔標記清單。'null' 預設為 https://www.w3.org/TR/html5/dom.html#phrasing-content 中列出的所有標記。", - "html.format.contentUnformatted.desc": "逗點分隔的標記清單,其中內容的格式不應重新設定。'null' 預設為 'pre' 標記。", - "html.format.indentInnerHtml.desc": "縮排 及 區段。", - "html.format.preserveNewLines.desc": "是否應保留項目前方現有的分行符號。僅適用於項目前方,而不適用於標記內或文字。", - "html.format.maxPreserveNewLines.desc": "一個區塊要保留的最大分行符號數。使用 'null' 表示無限制。", - "html.format.indentHandlebars.desc": "格式化並縮排 {{#foo}} 及 {{/foo}}。", - "html.format.endWithNewline.desc": "以新行字元結尾。", - "html.format.extraLiners.desc": "前方應有額外新行字元的標記清單,須以逗號分隔。'null' 的預設值為 \"head, body, /html\"。", - "html.format.wrapAttributes.desc": "將屬性換行。", - "html.format.wrapAttributes.auto": "只在超過行的長度時將屬性換行。", - "html.format.wrapAttributes.force": "將第一個以外的每個屬性換行。", - "html.format.wrapAttributes.forcealign": "將第一個以外的每個屬性換行,並保持對齊。", - "html.format.wrapAttributes.forcemultiline": "將每個屬性換行。", - "html.suggest.angular1.desc": "設定內建 HTML 語言支援是否建議 Angular V1 標記和屬性。", - "html.suggest.ionic.desc": "設定內建 HTML 語言支援是否建議 Ionic 標記、屬性和值。", - "html.suggest.html5.desc": "設定內建 HTML 語言支援是否建議 HTML5 標記、屬性和值。", - "html.trace.server.desc": "追蹤 VS Code 與 HTML 語言伺服器之間的通訊。", - "html.validate.scripts": "設定內建 HTML 語言支援是否會驗證內嵌指定碼。", - "html.validate.styles": "設定內建 HTML 語言支援是否會驗證內嵌樣式。", - "html.experimental.syntaxFolding": "啟用/停用語法感知摺疊標記。", - "html.autoClosingTags": "啟用/停用 HTML 標籤的自動關閉功能。" + ] } \ No newline at end of file diff --git a/i18n/cht/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/cht/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..275d7ba3cb0 --- /dev/null +++ b/i18n/cht/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON 語言伺服器" +} \ No newline at end of file diff --git a/i18n/cht/extensions/json-language-features/package.i18n.json b/i18n/cht/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..15eaaf64aef --- /dev/null +++ b/i18n/cht/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON 語言功能", + "description": "為 JSON 檔案提供豐富的語言支援", + "json.schemas.desc": "在結構描述與目前專案的 JSON 檔案之間建立關聯", + "json.schemas.url.desc": "目前目錄中的結構描述 URL 或結構描述相對路徑", + "json.schemas.fileMatch.desc": "檔案模式陣列,在將 JSON 檔案解析成結構描述時的比對對象。", + "json.schemas.fileMatch.item.desc": "可包含 '*' 的檔案模式,在將 JSON 檔案解析成結構描述時的比對對象。", + "json.schemas.schema.desc": "指定 URL 的結構描述定義。只須提供結構描述以避免存取結構描述 URL。", + "json.format.enable.desc": "啟用/停用預設 JSON 格式器 (需要重新啟動)", + "json.tracing.desc": "追蹤 VS Code 與 JSON 語言伺服器之間的通訊。", + "json.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", + "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` 已淘汰,將改為 `editor.colorDecorators`。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/json/package.i18n.json b/i18n/cht/extensions/json/package.i18n.json index b0012a5af6c..35229bd6699 100644 --- a/i18n/cht/extensions/json/package.i18n.json +++ b/i18n/cht/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "JSON 語言功能", - "description": "為 JSON 檔案提供豐富的語言支援", - "json.schemas.desc": "在結構描述與目前專案的 JSON 檔案之間建立關聯", - "json.schemas.url.desc": "目前目錄中的結構描述 URL 或結構描述相對路徑", - "json.schemas.fileMatch.desc": "檔案模式陣列,在將 JSON 檔案解析成結構描述時的比對對象。", - "json.schemas.fileMatch.item.desc": "可包含 '*' 的檔案模式,在將 JSON 檔案解析成結構描述時的比對對象。", - "json.schemas.schema.desc": "指定 URL 的結構描述定義。只須提供結構描述以避免存取結構描述 URL。", - "json.format.enable.desc": "啟用/停用預設 JSON 格式器 (需要重新啟動)", - "json.tracing.desc": "追蹤 VS Code 與 JSON 語言伺服器之間的通訊。", - "json.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", - "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` 已淘汰,將改為 `editor.colorDecorators`。", - "json.experimental.syntaxFolding": "啟用/停用語法感知折疊標記。" + ] } \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/cht/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..2f489d0fef5 --- /dev/null +++ b/i18n/cht/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "無法載入 ‘markdown.style' 樣式:{0}" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/cht/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..74c6cf18168 --- /dev/null +++ b/i18n/cht/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[預覽] {0}", + "previewTitle": "預覽 [0]" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/cht/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..fe1f5c5a4e5 --- /dev/null +++ b/i18n/cht/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "此文件中的部分內容已停用", + "preview.securityMessage.title": "Markdown 預覽中已停用可能不安全或不安全的內容。請將 Markdown 預覽的安全性設定變更為允許不安全內容,或啟用指令碼", + "preview.securityMessage.label": "內容已停用安全性警告" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/out/security.i18n.json b/i18n/cht/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..cc4260be39f --- /dev/null +++ b/i18n/cht/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "嚴謹", + "strict.description": "僅載入安全內容", + "insecureContent.title": "允許不安全的內容", + "insecureContent.description": "啟用 http 載入內容", + "disable.title": "停用", + "disable.description": "允許所有內容與指令碼執行。不建議", + "moreInfo.title": "詳細資訊", + "enableSecurityWarning.title": "允許此工作區預覽安全性警告", + "disableSecurityWarning.title": "不允許此工作區預覽安全性警告", + "toggleSecurityWarning.description": "不影響內容安全性層級", + "preview.showPreviewSecuritySelector.title": "選擇此工作區 Markdown 預覽的安全性設定" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/package.i18n.json b/i18n/cht/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..d27fa896c2a --- /dev/null +++ b/i18n/cht/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 語言功能", + "description": "為 Markdown 提供豐富的語言支援。", + "markdown.preview.breaks.desc": "設定在 Markdown 預覽中如何顯示分行符號。設為 'trure' 為每個新行建立
", + "markdown.preview.linkify": "啟用或停用在 Markdown 預覽中將類似 URL 的文字轉換為連結。", + "markdown.preview.doubleClickToSwitchToEditor.desc": "在 Markdown 預覽中按兩下會切換到編輯器。", + "markdown.preview.fontFamily.desc": "控制 Markdown 預覽中使用的字型家族。", + "markdown.preview.fontSize.desc": "控制 Markdown 預覽中使用的字型大小 (以像素為單位)。", + "markdown.preview.lineHeight.desc": "控制 Markdown 預覽中使用的行高。此數字相對於字型大小。", + "markdown.preview.markEditorSelection.desc": "在 Markdown 預覽中標記目前的編輯器選取範圍。", + "markdown.preview.scrollEditorWithPreview.desc": "在捲動 Markdown 預覽時更新編輯器的檢視。", + "markdown.preview.scrollPreviewWithEditor.desc": "在捲動 Markdown 編輯器時更新預覽的檢視。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[已淘汰] 捲動 Markdown 預覽,以從編輯器顯示目前選取的程式行。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "此設定已由 'markdown.preview.scrollPreviewWithEditor' 取代,不再具有任何效果。", + "markdown.preview.title": "開啟預覽", + "markdown.previewFrontMatter.dec": "設定 YAML 前端在 Markdown 預覽中呈現的方式。[隱藏] 會移除前端。否則,前端會視為 Markdown 內容。", + "markdown.previewSide.title": "在一側開啟預覽", + "markdown.showLockedPreviewToSide.title": "在側面開啟鎖定的預覽", + "markdown.showSource.title": "顯示來源", + "markdown.styles.dec": "可從 Markdown 預覽使用之 CSS 樣式表的 URL 或本機路徑清單。相對路徑是相對於在總管中開啟的資料夾來進行解釋。若沒有開啟資料夾,路徑則是相對於 Markdown 檔案的位置來進行解釋。所有 '\\' 都必須寫成 '\\\\'。", + "markdown.showPreviewSecuritySelector.title": "變更預覽的安全性設定", + "markdown.trace.desc": "允許 Markdown 延伸模組進行偵錯記錄。", + "markdown.preview.refresh.title": "重新整理預覽", + "markdown.preview.toggleLock.title": "切換預覽鎖定" +} \ No newline at end of file diff --git a/i18n/cht/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/cht/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..62153a9c2da --- /dev/null +++ b/i18n/cht/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "要允許 {0} (定義為工作區設定) 執行,以使用 lint 標記 PHP 檔案嗎?", + "php.yes": "允許", + "php.no": "不允許", + "wrongExecutable": "因為 {0} 不是有效的 PHP 可執行檔,所以無法驗證。您可以使用設定 'php.validate.executablePath' 設定 PHP 可執行檔。", + "noExecutable": "因為未設定任何 PHP 可執行檔,所以無法驗證。您可以使用 'php.validate.executablePath' 設定可執行檔。", + "unknownReason": "無法使用路徑 {0} 執行 PHP。原因不明。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/php-language-features/package.i18n.json b/i18n/cht/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..abe5dfe9ea4 --- /dev/null +++ b/i18n/cht/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "設定是否啟用內建 PHP 語言建議。此支援會建議 PHP 全域和變數。", + "configuration.validate.enable": "啟用/停用內建 PHP 驗證。", + "configuration.validate.executablePath": "指向 PHP 可執行檔。", + "configuration.validate.run": "是否在儲存或輸入時執行 linter。", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "禁止 PHP 驗證可執行檔 (定義為工作區設定)", + "displayName": "PHP 語言功能", + "description": "為 PHP 檔案提供豐富的語言支援。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/php/package.i18n.json b/i18n/cht/extensions/php/package.i18n.json index 397c38b737e..0b1d70297e1 100644 --- a/i18n/cht/extensions/php/package.i18n.json +++ b/i18n/cht/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "設定是否啟用內建 PHP 語言建議。此支援會建議 PHP 全域和變數。", - "configuration.validate.enable": "啟用/停用內建 PHP 驗證。", - "configuration.validate.executablePath": "指向 PHP 可執行檔。", - "configuration.validate.run": "是否在儲存或輸入時執行 linter。", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "禁止 PHP 驗證可執行檔 (定義為工作區設定)", - "displayName": "PHP 語言功能", - "description": "為 PHP 檔案提供 IntelliSense、Lint 支援及語言基礎知識。" + "displayName": "PHP 語言功能" } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 04261af3234..a2daae312b9 100644 --- a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "找不到結果", "settingsSearchIssue": "設定值搜尋問題", "bugReporter": "臭蟲回報", - "performanceIssue": "效能問題", "featureRequest": "功能要求", + "performanceIssue": "效能問題", "stepsToReproduce": "重現的步驟", "bugDescription": "請共用必要步驟以確實複製問題。請包含實際與預期的結果。我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", "performanceIssueDesciption": "效能問題的發生時間點為何? 問題是在啟動或經過一組特定動作後發生的? 我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 上進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", diff --git a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json index 67c4e506a0f..0dd95be0c2c 100644 --- a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "編輯器內警告提示線的邊框色彩.", "infoForeground": "編輯器內資訊提示線的前景色彩", "infoBorder": "編輯器內資訊提示線的邊框色彩", - "overviewRulerRangeHighlight": "範圍醒目提示的概觀尺規標記色彩。", "overviewRuleError": "錯誤的概觀尺規標記色彩。", "overviewRuleWarning": "警示的概觀尺規標記色彩。", "overviewRuleInfo": "資訊的概觀尺規標記色彩。" diff --git a/i18n/cht/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/cht/src/vs/editor/contrib/gotoError/gotoError.i18n.json index ad654fda54a..c7f226e111b 100644 --- a/i18n/cht/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "移至下一個問題 (錯誤, 警告, 資訊)", - "markerAction.previous.label": "移至上一個問題 (錯誤, 警告, 資訊)", - "editorMarkerNavigationError": "編輯器標記導覽小工具錯誤的色彩。", - "editorMarkerNavigationWarning": "編輯器標記導覽小工具警告的色彩。", - "editorMarkerNavigationInfo": "編輯器標記導覽小工具資訊的色彩", - "editorMarkerNavigationBackground": "編輯器標記導覽小工具的背景。" + "markerAction.previous.label": "移至上一個問題 (錯誤, 警告, 資訊)" } \ No newline at end of file diff --git a/i18n/cht/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/cht/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..11b5e18ff6c --- /dev/null +++ b/i18n/cht/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "編輯器標記導覽小工具錯誤的色彩。", + "editorMarkerNavigationWarning": "編輯器標記導覽小工具警告的色彩。", + "editorMarkerNavigationInfo": "編輯器標記導覽小工具資訊的色彩", + "editorMarkerNavigationBackground": "編輯器標記導覽小工具的背景。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..5fc5a3e66a6 --- /dev/null +++ b/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,40 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "星期日", + "Monday": "星期一", + "Tuesday": "星期二", + "Wednesday": "星期三", + "Thursday": "星期四", + "Friday": "星期五", + "Saturday": "星期六", + "January": "1月", + "February": "2月", + "March": "3月", + "April": "4月", + "May": "5月", + "June": "6月", + "July": "7月", + "August": "8月", + "September": "9月", + "October": "10月", + "November": "11月", + "December": "12月", + "JanuaryShort": "1月", + "FebruaryShort": "2月", + "MarchShort": "3月", + "AprilShort": "4月", + "MayShort": "5月", + "JuneShort": "6月", + "JulyShort": "7月", + "AugustShort": "8月", + "SeptemberShort": "9月", + "OctoberShort": "10月", + "NovemberShort": "11月", + "DecemberShort": "12月" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 1cee9b500bb..c903408c5fd 100644 --- a/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "寫入存取符號時的背景顏色,如寫入變數。不能使用非透明的顏色來隱藏底層的樣式。", "wordHighlightBorder": "讀取存取期間 (例如讀取變數時) 符號的邊框顏色。", "wordHighlightStrongBorder": "寫入存取期間 (例如寫入變數時) 符號的邊框顏色。 ", - "overviewRulerWordHighlightForeground": "符號醒目提示的概觀尺規標記色彩。", - "overviewRulerWordHighlightStrongForeground": "寫入權限符號醒目提示的概觀尺規標記色彩。", "wordHighlight.next.label": "移至下一個反白符號", "wordHighlight.previous.label": "移至上一個反白符號" } \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/cht/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..3b2a2f318b6 --- /dev/null +++ b/i18n/cht/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...另外 1 個檔案未顯示", + "moreFiles": "...另外 {0} 個檔案未顯示" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/cht/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..7667b941599 --- /dev/null +++ b/i18n/cht/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "取消" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 01f556d1f68..3faa343fdfd 100644 --- a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,14 @@ "errorInstallingDependencies": "安裝相依套件時發生錯誤。{0}", "MarketPlaceDisabled": "未啟用市集", "removeError": "移除擴充功能: {0} 時發生錯誤。重新嘗試前請離開並再次啟動 VS Code。", - "Not Market place extension": "只有市集擴充功能可以重新安裝", + "Not a Marketplace extension": "只有市集擴充功能可以重新安裝", "notFoundCompatible": "無法安裝 '{0}';沒有任何與 VS Code 相容的可用版本 '{1}'。", "malicious extension": "因為有使用者回報該延伸模組有問題,所以無法安裝延伸模組。", "notFoundCompatibleDependency": "無法安裝,因為找不到相容於 VS Code 目前版本 '{1}' 的相依擴充功能 '{0}'。", "quitCode": "無法安裝擴充功能。重新安裝以前請重啟 VS Code。", "exitCode": "無法安裝擴充功能。重新安裝以前請離開並再次啟動 VS Code。", "uninstallDependeciesConfirmation": "只要將 '{0}' 解除安裝,或要包含其相依性?", - "uninstallOnly": "只有", - "uninstallAll": "全部", + "uninstallAll": "全部解除安裝", "uninstallConfirmation": "確定要將 '{0}' 解除安裝嗎?", "ok": "確定", "singleDependentError": "無法將延伸模組 '{0}' 解除安裝。其為延伸模組 '{1}' 的相依對象。", diff --git a/i18n/cht/src/vs/platform/list/browser/listService.i18n.json b/i18n/cht/src/vs/platform/list/browser/listService.i18n.json index e9ebd5685ed..16ce88704c4 100644 --- a/i18n/cht/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/cht/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "透過滑鼠多選,用於在樹狀目錄與清單中新增項目的輔助按鍵 (例如在總管中開啟 [編輯器] 及 [SCM] 檢視)。在 Windows 及 Linux 上,`ctrlCmd` 對應 `Control`,在 macOS 上則對應 `Command`。[在側邊開啟] 滑鼠手勢 (若支援) 將會適應以避免和多選輔助按鍵衝突。", "openMode.singleClick": "以滑鼠按一下開啟項目。", "openMode.doubleClick": "以滑鼠按兩下開啟項目。", - "openModeModifier": "控制如何使用滑鼠在樹狀目錄與清單中開啟項目 (若有支援)。設為 `singleClick` 可以滑鼠按一下開啟物件,設為 `doubleClick` 則只能透過按兩下滑鼠開啟物件。對於樹狀目錄中具子系的父系而言,此設定會控制應以滑鼠按一下或按兩下展開父系。注意,某些樹狀目錄或清單若不適用此設定則會予以忽略。" + "openModeModifier": "控制如何使用滑鼠在樹狀目錄與清單中開啟項目 (若有支援)。設為 `singleClick` 可以滑鼠按一下開啟物件,設為 `doubleClick` 則只能透過按兩下滑鼠開啟物件。對於樹狀目錄中具子系的父系而言,此設定會控制應以滑鼠按一下或按兩下展開父系。注意,某些樹狀目錄或清單若不適用此設定則會予以忽略。", + "horizontalScrolling setting": "控制是否支援工作台中的水平滾動。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/markers/common/markers.i18n.json b/i18n/cht/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..cd4eb5c86cf --- /dev/null +++ b/i18n/cht/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "錯誤", + "sev.warning": "警告", + "sev.info": "資訊" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json index ba572d1fad3..7117ed7c722 100644 --- a/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "內嵌合併衝突中標頭及分隔器的邊界色彩。", "overviewRulerCurrentContentForeground": "目前內嵌合併衝突的概觀尺規前景。", "overviewRulerIncomingContentForeground": "傳入內嵌合併衝突的概觀尺規前景。", - "overviewRulerCommonContentForeground": "內嵌合併衝突中的共同上階概觀尺規前景。", - "overviewRulerFindMatchForeground": "尋找比對的概觀尺規標記色彩。", - "overviewRulerSelectionHighlightForeground": "選取項目醒目提示的概觀尺規標記色彩。" + "overviewRulerCommonContentForeground": "內嵌合併衝突中的共同上階概觀尺規前景。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/cht/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..950340ccaf2 --- /dev/null +++ b/i18n/cht/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (延伸模組)" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 01f9e8f017f..9af81e350d6 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "聚焦下一個群組", "openToSide": "開至側邊", "closeEditor": "關閉編輯器", + "closeOneEditor": "關閉", "revertAndCloseActiveEditor": "還原並關閉編輯器", "closeEditorsToTheLeft": "將編輯器關到左側", "closeAllEditors": "關閉所有編輯器", diff --git a/i18n/cht/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index bd46f839ef8..47f703cf2f9 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "關閉", "araLabelEditorActions": "編輯器動作" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 87b4e30eb9d..57cd7f56821 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "尚無新通知", "notifications": "通知", "notificationsToolbar": "通知中心動作", "notificationsList": "通知列表" diff --git a/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json index 7f571b29a98..f8343577d89 100644 --- a/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,12 @@ "windowConfigurationTitle": "視窗", "window.openFilesInNewWindow.on": "檔案會在新視窗中開啟", "window.openFilesInNewWindow.off": "檔案會在開啟了檔案資料夾的視窗,或在上一個使用中的視窗中開啟", - "window.openFilesInNewWindow.default": "除非從擴充座或 Finder 中開啟,否則檔案會在開啟了檔案資料夾的視窗,或在上一個使用中的視窗中開啟 (僅限 macOS)", - "openFilesInNewWindow": "控制檔案是否應在新視窗中開啟。\n- default: 檔案會在視窗中隨檔案的資料夾開啟或在上一個使用中視窗開啟,除非透過擴充座或從尋找工具開啟 (僅限 macOS)\n- on: 檔案會在新視窗開啟\n- off: 檔案會在視窗中隨檔案的資料夾開啟或在上一個使用中視窗開啟\n請注意,在某些情況下會略過此設定 (例如,使用了 -new-window 或 -reuse-window 命令列選項時)。", "window.openFoldersInNewWindow.on": "資料夾會在新視窗中開啟", "window.openFoldersInNewWindow.off": "資料夾會取代上一個使用中的視窗", "window.openFoldersInNewWindow.default": "除非已從應用程式內挑選了資料夾 (例如透過 [檔案] 功能表),否則資料夾會在新視窗中開啟", "openFoldersInNewWindow": "控制資料夾應在新視窗中開啟或取代上一個使用中的視窗。\n- default: 除非已從應用程式內挑選資料夾 (例如,透過 [檔案] 功能表),否則會在新視窗開啟\n- on: 資料夾會在新視窗開啟\n- off: 資料夾會取代上一個使用中視窗\n請注意,在某些情況下會略過此設定 (例如,使用了 -new-window 或 -reuse-window 命令列選項時)。", + "window.openWithoutArgumentsInNewWindow.on": "開啟新空白視窗", + "window.openWithoutArgumentsInNewWindow.off": "聚焦在上一個正在運行的執行個體", "window.reopenFolders.all": "重新開啟所有視窗。", "window.reopenFolders.folders": "重新開啟所有資料夾。空白工作區將不會還原。", "window.reopenFolders.one": "重新開啟上一個使用中的視窗。", @@ -58,7 +58,6 @@ "restoreWindows": "控制重新啟動後視窗重新開啟的方式。選取 [無] 一律以空白工作區開始、選取 [一] 從上一個編輯的視窗重新開啟、選取 [資料夾] 重新開啟所有資料夾曾經開啟的視窗,或選取 [全部] 重新開啟上一個工作階段的所有視窗。", "restoreFullscreen": "控制當視窗在全螢幕模式下結束後,下次是否仍以全螢幕模式開啟。", "zoomLevel": "調整視窗的縮放比例。原始大小為 0,而且每個向上增量 (例如 1) 或向下增量 (例如 -1) 代表放大或縮小 20%。您也可以輸入小數,更細微地調整縮放比例。", - "title": "依據使用中的編輯器控制視窗標題。變數會依據內容替換:\n${activeEditorShort}: 檔案名稱 (例如 myFile.txt)\n${activeEditorMedium}: 與工作區資料夾相關的檔案路徑 (例如 myFolder/myFile.txt)\n${activeEditorLong}: 完整的檔案路徑 (例如 /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 包含著資料夾之工作區資料夾的名稱 (例如 myFolder)\n${folderPath}: 包含著資料夾之工作區資料夾的檔案路徑 (例如 /Users/Development/myFolder)\n${rootName}: 工作區的名稱 (例如 myFolder 或 myWorkspace)\n${rootPath}: 工作區的檔案路徑 (例如 /Users/Development/myWorkspace)\n${appName}: 例如 VS Code\n${dirty}: 已變更指示 (若使用中編輯器已變更)\n${separator}: 僅在受具有值之變數括住時才顯示的條件式分隔符號 (\" - \")", "window.newWindowDimensions.default": "在螢幕中央開啟新視窗。", "window.newWindowDimensions.inherit": "以相同於上一個使用中之視窗的維度開啟新視窗。", "window.newWindowDimensions.maximized": "開啟並最大化新視窗。", 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 f2e740a82b9..0f2f7956622 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 @@ -24,16 +24,12 @@ "restartFrame": "重新啟動框架", "removeBreakpoint": "移除中斷點", "removeAllBreakpoints": "移除所有中斷點", - "enableBreakpoint": "啟用中斷點", - "disableBreakpoint": "停用中斷點", "enableAllBreakpoints": "啟用所有中斷點", "disableAllBreakpoints": "停用所有中斷點", "activateBreakpoints": "啟動中斷點", "deactivateBreakpoints": "停用中斷點", "reapplyAllBreakpoints": "重新套用所有中斷點", "addFunctionBreakpoint": "加入函式中斷點", - "addConditionalBreakpoint": "新增條件中斷點...", - "editConditionalBreakpoint": "編輯中斷點...", "setValue": "設定值", "addWatchExpression": "加入運算式", "editWatchExpression": "編輯運算式", diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..314e9cddf9c --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "符合叫用次數條件時中斷。按 'Enter' 鍵接受,按 'esc' 鍵取消。", + "breakpointWidgetExpressionPlaceholder": "在運算式評估為 true 時中斷。按 'Enter' 鍵接受,按 'esc' 鍵取消。", + "breakpointWidgetHitCountAriaLabel": "程式只會在符合叫用次數時於此處停止。按 Enter 鍵接受,或按 Escape 鍵取消。", + "breakpointWidgetAriaLabel": "程式只有在此條件為 true 時才會在此停止。請按 Enter 鍵接受,或按 Esc 鍵取消。", + "expression": "運算式", + "hitCount": "叫用次數" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 0eb51f5a0eb..21124f7d54b 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "編輯中斷點...", + "disableBreakpoint": "停用中斷點", + "enableBreakpoint": "啟用中斷點", "removeBreakpoints": "移除中斷點", "removeBreakpointOnColumn": "移除資料行 {0} 的中斷點", "removeLineBreakpoint": "移除行中斷點", @@ -18,5 +21,6 @@ "enableBreakpoints": "啟用資料行 {0} 的中斷點", "enableBreakpointOnLine": "啟用行中斷點", "addBreakpoint": "加入中斷點", + "conditionalBreakpoint": "新增條件中斷點...", "addConfiguration": "新增組態..." } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index b104866a55b..a922616389e 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,6 +29,6 @@ "showErrors": "顯示錯誤", "noFolderWorkspaceDebugError": "無法對使用中的檔案偵錯。請確認檔案已儲存在磁碟上,而且您已經為該檔案類型安裝偵錯延伸模組。", "cancel": "取消", - "DebugTaskNotFound": "找不到 preLaunchTask '{0}'。", - "taskNotTracked": "無法追蹤 preLaunchTask '{0}'。" + "DebugTaskNotFound": "找不到工作 \"{0}\"。", + "taskNotTracked": "無法追蹤工作 '{0}'。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index f678d3e4041..5709df0fdf0 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,7 @@ "configureWorkspaceFolderRecommendedExtensions": "設定建議的延伸模組 (工作區資料夾) ", "malicious tooltip": "這個延伸模組曾經被回報是有問題的。", "malicious": "惡意", + "disabled workspace": "在此工作區停用", "disableAll": "停用所有已安裝的延伸模組", "disableAllWorkspace": "停用此工作區的所有已安裝延伸模組", "enableAll": "啟用所有擴充功能", diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..0f0a8bc1904 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,61 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "延伸模組名稱", + "extension id": "延伸模組識別碼", + "preview": "預覽", + "builtin": "內建", + "publisher": "發行者名稱", + "install count": "安裝計數", + "rating": "評等", + "repository": "儲存庫", + "license": "授權", + "details": "詳細資料", + "contributions": "貢獻", + "changelog": "變更記錄", + "dependencies": "相依性", + "noReadme": "沒有可用的讀我檔案。", + "noChangelog": "沒有可用的 Changelog。", + "noContributions": "沒有比重", + "noDependencies": "沒有相依性", + "settings": "設定 ({0})", + "setting name": "名稱", + "description": "描述", + "default": "預設", + "debuggers": "偵錯工具 ({0})", + "debugger name": "名稱", + "debugger type": "型別", + "views": "瀏覽次數 ({0})", + "view id": "識別碼", + "view name": "名稱", + "view location": "位置", + "localizations": "當地語系化 ({0})", + "localizations language id": "語言識別碼", + "localizations language name": "語言名稱", + "localizations localized language name": "語言名稱 (在地化)", + "colorThemes": "色彩佈景主題 ({0})", + "iconThemes": "圖示佈景主題 ({0}) ", + "colors": "色彩 ({0})", + "colorId": "識別碼", + "defaultDark": "預設深色", + "defaultLight": "預設淺色", + "defaultHC": "預設高對比", + "JSON Validation": "JSON 驗證 ({0})", + "fileMatch": "檔案相符", + "schema": "結構描述", + "commands": "命令 ({0})", + "command name": "名稱", + "keyboard shortcuts": "鍵盤快速鍵(&&K)", + "menuContexts": "功能表內容", + "languages": "語言 ({0})", + "language id": "識別碼", + "language name": "名稱", + "file extensions": "副檔名", + "grammar": "文法", + "snippets": "程式碼片段" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 0893e280839..4bed8103f5e 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": " 推薦項目", "otherRecommendedExtensions": "其他建議", "workspaceRecommendedExtensions": "工作區建議", - "builtInExtensions": "內建", "searchExtensions": "在 Marketplace 中搜尋擴充功能", "sort by installs": "排序依據: 安裝計數", "sort by rating": "排序依據: 評等", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 8c93678ae26..313bfa047bc 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -34,8 +34,8 @@ "confirmDeleteMessageFolder": "您確定要永久刪除 '{0}' 和其中的內容嗎?", "confirmDeleteMessageFile": "您確定要永久刪除 '{0}' 嗎?", "irreversible": "此動作無法回復!", - "cancel": "取消", - "permDelete": "永久刪除", + "binFailed": "無法使用資源回收筒刪除。您要改為永久刪除嗎? ", + "trashFailed": "無法使用垃圾筒刪除。您要改為永久刪除嗎?", "importFiles": "匯入檔案", "confirmOverwrite": "目的資料夾中已有同名的檔案或資料夾。要取代它嗎?", "replaceButtonLabel": "取代(&&R)", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index b86d381ecd0..3f54e82bcea 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -14,6 +14,7 @@ "addFolders": "新增資料夾(&A)", "addFolder": "新增資料夾(&A)", "confirmMultiMove": "確定要移動以下 {0} 個文件嗎?", + "confirmRootMove": "您確定要變更工作區中根資料夾 '{0}' 的順序嗎? ", "confirmMove": "確定要移動 '{0}' 嗎?", "doNotAskAgain": "不要再詢問我", "moveButtonLabel": "移動(&&M)", diff --git a/i18n/cht/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..b4173cd7e58 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "HTML 預覽" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/cht/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..99f3827f916 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "編輯器輸入無效。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..8e9c4235dcd --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "開發人員" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/cht/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..da7857bbdcf --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "開啟 Webview Developer 工具", + "refreshWebviewLabel": "重新載入 Webviews" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 3a808520ab4..c79987737e6 100644 --- a/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "是", + "no": "否", + "doNotAskAgain": "不要再詢問我", "JsonSchema.locale": "要使用的 UI 語言。", "vscode.extension.contributes.localizations": "提供在地化服務給編輯者", "vscode.extension.contributes.localizations.languageId": "顯示已翻譯字串的語言 Id", diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..88fd157d4b8 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "複製", + "copyMarkerMessage": "複製訊息" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..8e9b2618050 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "共 {0} 項問題", + "filteredProblems": "顯示 {1} 的 {0} 問題" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..6a593deff2f --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "問題", + "tooltip.1": "此檔案發生 1 個問題", + "tooltip.N": "此檔案發生 {0} 個問題", + "markers.showOnFile": "在檔案和資料夾上顯示錯誤和警告。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..84c0330c5cb --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "檢視", + "problems.view.toggle.label": "切換至問題(錯誤, 警告, 資訊)", + "problems.view.focus.label": "聚焦於問題(錯誤, 警告, 資訊)", + "problems.panel.configuration.title": "[問題] 檢視", + "problems.panel.configuration.autoreveal": "控制 [問題] 檢視是否應自動在開啟檔案時加以顯示", + "markers.panel.title.problems": "問題", + "markers.panel.aria.label.problems.tree": "依檔案分組的問題", + "markers.panel.no.problems.build": "目前在工作區中未偵測到任何問題。", + "markers.panel.no.problems.filters": "使用提供的篩選準則找不到任何結果", + "markers.panel.action.filter": "篩選問題", + "markers.panel.filter.placeholder": "依類型或文字篩選", + "markers.panel.filter.errors": "錯誤", + "markers.panel.filter.warnings": "警告", + "markers.panel.filter.infos": "資訊", + "markers.panel.single.error.label": "1 個錯誤", + "markers.panel.multiple.errors.label": "{0} 個錯誤", + "markers.panel.single.warning.label": "1 個警告", + "markers.panel.multiple.warnings.label": "{0} 個警告", + "markers.panel.single.info.label": "1 個資訊", + "markers.panel.multiple.infos.label": "{0} 個資訊", + "markers.panel.single.unknown.label": "1 個未知", + "markers.panel.multiple.unknowns.label": "{0} 個未知", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "發生 {1} 個問題的 {0}", + "errors.warnings.show.label": "顯示錯誤和警告" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index fb9f954c81c..8134d240e08 100644 --- a/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -7,6 +7,8 @@ "Do not edit this file. It is machine generated." ], "keybindingsInputName": "鍵盤快速鍵(&&K)", + "showDefaultKeybindings": "顯示預設按鍵繫結", + "showUserKeybindings": "顯示使用者按鍵繫結", "SearchKeybindings.AriaLabel": "搜尋按鍵繫結關係", "SearchKeybindings.Placeholder": "搜尋按鍵繫結關係", "sortByPrecedene": "依優先順序排序", diff --git a/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 5b97663e3cf..41f5ce40bb7 100644 --- a/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "顯示下一個搜尋包含模式", "previousSearchIncludePattern": "顯示上一個搜尋包含模式", - "nextSearchExcludePattern": "顯示下一個搜尋排除模式", - "previousSearchExcludePattern": "顯示上一個搜尋排除模式", "nextSearchTerm": "顯示下一個搜尋字詞", "previousSearchTerm": "顯示上一個搜尋字詞", "showSearchViewlet": "顯示搜尋", diff --git a/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json index 4578dbafa9e..bbc143a1217 100644 --- a/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,9 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "切換搜尋詳細資料", - "searchScope.includes": "要包含的檔案", - "label.includes": "搜尋包含模式", - "searchScope.excludes": "要排除的檔案", - "label.excludes": "搜尋排除模式", + "searchIncludeExclude.label": "要包含/排除的檔案", + "searchIncludeExclude.ariaLabel": "搜索包含/排除模式 ", + "searchIncludeExclude.placeholder": "例如:src, !*.ts, test/**/*.log", "replaceAll.confirmation.title": "全部取代", "replaceAll.confirm.button": "取代(&&R)", "replaceAll.occurrence.file.message": "已將 {1} 個檔案中的 {0} 個相符項目取代為 '{2}'。", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 515b745aabc..02db571b804 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,12 @@ "JsonSchema.tasks.group.none": "指派工作到沒有群組", "JsonSchema.tasks.group": "定義工作屬於哪個執行群組。支援將 「組建」新增到組建群組,以及將「測試」新增到測試群組。", "JsonSchema.tasks.type": "定義工作在殼層中會作為處理序或命令來執行。", + "JsonSchema.command.quotedString.value": "實際命令值", + "JsonSchema.command.quotesString.quote": "如何引用命令值。", + "JsonSchema.command": "要執行的命令。可以是外部程式或殼層命令。", + "JsonSchema.args.quotedString.value": "實際參數值", + "JsonSchema.args.quotesString.quote": "如何引用參數值。", + "JsonSchema.tasks.args": "叫用此工作時,傳遞至命令的引數。", "JsonSchema.tasks.label": "工作的使用者介面標籤", "JsonSchema.version": "組態版本號碼", "JsonSchema.tasks.identifier": "用以參考在 launch.json 或 dependsOn 子句中工作的使用者定義識別碼。", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index f498908a44c..d2f0c4f360a 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,11 @@ ], "tasksCategory": "工作", "ConfigureTaskRunnerAction.label": "設定工作", - "problems": "問題", + "totalErrors": "{0} 個錯誤", + "totalWarnings": "{0} 個警告", + "totalInfos": "{0} 個資訊", "building": "建置中...", - "manyMarkers": "99+", + "manyProblems": "10K+", "runningTasks": "顯示執行中的工作", "tasks": "工作", "TaskSystem.noHotSwap": "必須重新載入視窗才可變更執行使用中工作的工作執行引擎", @@ -46,8 +48,8 @@ "recentlyUsed": "最近使用的工作", "configured": "設定的工作", "detected": "偵測到的工作", - "TaskService.ignoredFolder": "因為下列工作區資料夾使用工作版本 0.1.0,所以已略過: {0}", "TaskService.notAgain": "不要再顯示", + "TaskService.ignoredFolder": "因為下列工作區資料夾使用工作版本 0.1.0,所以已略過: {0}", "TaskService.pickRunTask": "請選取要執行的工作", "TaslService.noEntryToRun": "找不到任何要執行的工作。請設定工作...", "TaskService.fetchingBuildTasks": "正在擷取組建工作...", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 1066b0d3be0..00b03ef2ad6 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "錯誤: 工作組態 '{0}' 缺少要求的屬性 '{1}'。會略過工作組態。", "ConfigurationParser.notCustom": "錯誤: 未將工作宣告為自訂工作。將會忽略該組態。\n{0}\n", "ConfigurationParser.noTaskName": "錯誤: 一項工作必須提供標籤屬性。即將忽略此工作。\n{0}\n", - "taskConfiguration.shellArgs": "警告: 工作 '{0}' 是 shell 命令 ,其中一個引數可能有未逸出的空格。若要確保命令列正確引述,請將引數合併到命令中。", "taskConfiguration.noCommandOrDependsOn": "錯誤: 工作 '{0}' 未指定命令與 dependsOn 屬性。將會略過該工作。其定義為: \n{1}", "taskConfiguration.noCommand": "錯誤: 工作 '{0}' 未定義命令。即將略過該工作。其定義為:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "工作版本 2.0.0 不支援全域 OS 特定工作。請使用 OS 特定命令來轉換這些工作。受影響的工作為:\n{0}" diff --git a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 1fc27ddf20a..6e6cd238c56 100644 --- a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "複製", + "split": "分割", "paste": "貼上", "selectAll": "全選", - "clear": "清除", - "split": "分割" + "clear": "清除" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..bc0754d2c3e --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "版本資訊: {0}", + "unassigned": "未指派" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json index cda5b7948e8..2e7dd953797 100644 --- a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "稍後", - "unassigned": "未指派", "releaseNotes": "版本資訊", "showReleaseNotes": "顯示版本資訊", "read the release notes": "歡迎使用 {0} v{1}! 您要閱讀版本資訊嗎?", diff --git a/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..7aa96ea3f1e --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "webview 編輯器" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..c7e785dc15e --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "閱讀其他資訊" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..325db145496 --- /dev/null +++ b/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolder": "無法解析 $ {workspaceFolder}。請開啟一個資料夾。", + "canNotResolveLineNumber": " 無法解析 $ {lineNumber} , 請打開編輯器。", + "canNotResolveSelectedText": "無法解析 $ {selectedText} , 請開啟編輯器。", + "canNotResolveFile": "無法解析 $ {file} , 請開啟編輯器。", + "canNotResolveRelativeFile": "無法解析 $ {relativeFile} , 請開啟編輯器。", + "canNotResolveFileDirname": "無法解析 $ {fileDirname} , 請開啟編輯器。", + "canNotResolveFileExtname": "無法解析 $ {fileExtname} , 請開啟編輯器。", + "canNotResolveFileBasename": "無法解析 $ {fileBasename} , 請開啟編輯器。", + "canNotResolveFileBasenameNoExtension": "無法解析 $ {fileBasenameNoExtension} , 請開啟編輯器。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/cht/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..e3294fd3329 --- /dev/null +++ b/i18n/cht/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "是(&&Y)", + "cancelButton": "取消" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 822c6c89950..5a1684b4dee 100644 --- a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,7 @@ "neverShowAgain": "不要再顯示", "netVersionError": "需要 Microsoft .NET Framework 4.5。請連入此連結進行安裝。", "learnMore": "說明", - "enospcError": "{0} 已超出檔案處理。請按照說明連結解決此問題。", + "enospcError": "{0} 無法監看此大型工作區中的檔案變更。請按照連結中的說明來解決此問題。", "binFailed": "無法將 '{0}' 移至資源回收筒", "trashFailed": "無法將 '{0}' 移動至垃圾" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/cht/src/vs/workbench/services/files/node/fileService.i18n.json index 17a563b7b1a..ad99e777e96 100644 --- a/i18n/cht/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "檔案資源 ({0}) 無效", "fileIsDirectoryError": "檔案是目錄", "fileNotModifiedError": "未修改檔案的時間", - "fileTooLargeForHeapError": "檔案大小超過視窗記憶體限制,請試執行 code --max-memory=NEWSIZE", "fileTooLargeError": "檔案太大無法開啟", "fileNotFoundError": "找不到檔案 ({0})", "fileBinaryError": "檔案似乎是二進位檔,因此無法當做文字開啟", diff --git a/i18n/cht/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/cht/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..2ac63294841 100644 --- a/i18n/cht/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/cht/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "取消" } \ No newline at end of file diff --git a/i18n/deu/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/deu/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..05ec8e77798 --- /dev/null +++ b/i18n/deu/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS-Sprachserver", + "folding.start": "Regionsanfang wird gefaltet", + "folding.end": "Regionsende wird gefaltet" +} \ No newline at end of file diff --git a/i18n/deu/extensions/css-language-features/package.i18n.json b/i18n/deu/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..0d84b581b18 --- /dev/null +++ b/i18n/deu/extensions/css-language-features/package.i18n.json @@ -0,0 +1,80 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für CSS-, LESS- und SCSS-Dateien.", + "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", + "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.trace.server.desc": "Verfolgt die Kommunikation zwischen VS Code und dem CSS-Sprachserver.", + "css.validate.title": "Steuert die CSS-Validierung und Problemschweregrade.", + "css.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", + "less.title": "LESS", + "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", + "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.title": "Steuert die LESS-Validierung und Problemschweregrade.", + "less.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", + "scss.title": "SCSS (SASS)", + "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", + "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.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.title": "Steuert die SCSS-Überprüfung und Problemschweregrade.", + "scss.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", + "less.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", + "scss.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", + "css.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", + "css.colorDecorators.enable.deprecationMessage": "Die Einstellung \"css.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", + "scss.colorDecorators.enable.deprecationMessage": "Die Einstellung \"scss.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", + "less.colorDecorators.enable.deprecationMessage": "Die Einstellung \"less.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt." +} \ No newline at end of file diff --git a/i18n/deu/extensions/css/package.i18n.json b/i18n/deu/extensions/css/package.i18n.json index 6c525265ecf..a9ceacd1102 100644 --- a/i18n/deu/extensions/css/package.i18n.json +++ b/i18n/deu/extensions/css/package.i18n.json @@ -6,76 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS Sprachfeatures", - "description": "Bietet umfangreiche Sprachunterstützung für CSS-, LESS- und SCSS-Dateien.", - "css.title": "CSS", - "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", - "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.trace.server.desc": "Verfolgt die Kommunikation zwischen VS Code und dem CSS-Sprachserver.", - "css.validate.title": "Steuert die CSS-Validierung und Problemschweregrade.", - "css.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", - "less.title": "LESS", - "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", - "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.title": "Steuert die LESS-Validierung und Problemschweregrade.", - "less.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", - "scss.title": "SCSS (SASS)", - "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.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.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", - "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.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.title": "Steuert die SCSS-Überprüfung und Problemschweregrade.", - "scss.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", - "less.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", - "scss.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", - "css.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", - "css.colorDecorators.enable.deprecationMessage": "Die Einstellung \"css.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", - "scss.colorDecorators.enable.deprecationMessage": "Die Einstellung \"scss.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", - "less.colorDecorators.enable.deprecationMessage": "Die Einstellung \"less.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt." + "displayName": "CSS-Sprachgrundlagen" } \ No newline at end of file diff --git a/i18n/deu/extensions/git/out/commands.i18n.json b/i18n/deu/extensions/git/out/commands.i18n.json index 390ed62228d..af42eef9ac7 100644 --- a/i18n/deu/extensions/git/out/commands.i18n.json +++ b/i18n/deu/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "OK", "push with tags success": "Push mit Tags erfolgreich ausgeführt.", "pick remote": "Remotespeicherort auswählen, an dem der Branch \"{0}\" veröffentlicht wird:", - "sync is unpredictable": "Mit dieser Aktion werden Commits per Push und Pull an und von \"{0}\" übertragen.", "never again": "OK, nicht mehr anzeigen", "no remotes to publish": "In Ihrem Repository wurden keine Remoteelemente für die Veröffentlichung konfiguriert.", "no changes stash": "Es sind keine Änderungen vorhanden, für die ein Stash ausgeführt werden kann.", diff --git a/i18n/deu/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/deu/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..6a6d9025074 --- /dev/null +++ b/i18n/deu/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML-Sprachserver", + "folding.start": "Regionsanfang wird gefaltet", + "folding.end": "Regionsende wird gefaltet" +} \ No newline at end of file diff --git a/i18n/deu/extensions/html-language-features/package.i18n.json b/i18n/deu/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..a18d59eb263 --- /dev/null +++ b/i18n/deu/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für HTML-, Razor- und Handlebar-Dateien.", + "html.format.enable.desc": "Standard-HTML-Formatierer aktivieren/deaktivieren", + "html.format.wrapLineLength.desc": "Die maximale Anzahl von Zeichen pro Zeile (0 = deaktiviert).", + "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.contentUnformatted.desc": "Liste der Tags (durch Trennzeichen getrennt), in der der Inhalt nicht neu formatiert werden muss. \"null\" entspricht standardmäßig dem Tag \"pre\".", + "html.format.indentInnerHtml.desc": "Nimmt einen Einzug für - und -Abschnitte vor.", + "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.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.indentHandlebars.desc": "Formatiert {{#foo}} und {{/foo}} und nimmt einen Einzug vor.", + "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.wrapAttributes.desc": "Attribute umschließen.", + "html.format.wrapAttributes.auto": "Attribute nur dann umschließen, wenn die Zeilenlänge überschritten wird.", + "html.format.wrapAttributes.force": "Jedes Attribut mit Ausnahme des ersten umschließen.", + "html.format.wrapAttributes.forcealign": "Jedes Attribut mit Ausnahme des ersten umschließen und Ausrichtung beibehalten.", + "html.format.wrapAttributes.forcemultiline": "Jedes Attribut umschließen.", + "html.suggest.angular1.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Angular V1-Tags und -Eigenschaften vorschlägt.", + "html.suggest.ionic.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Ionic-Tags, -Eigenschaften und -Werte vorschlägt.", + "html.suggest.html5.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung HTML5-Tags, -Eigenschaften und -Werte vorschlägt.", + "html.trace.server.desc": "Verfolgt die Kommunikation zwischen VS Code und dem HTML-Sprachserver.", + "html.validate.scripts": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts unterstützt.", + "html.validate.styles": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts validiert.", + "html.autoClosingTags": "Automatisches Schließen von HTML-Tags aktivieren/deaktivieren." +} \ 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 a85a95e5d5d..35229bd6699 100644 --- a/i18n/deu/extensions/html/package.i18n.json +++ b/i18n/deu/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "HTML-Sprachfeatures", - "description": "Bietet umfangreiche Sprachunterstützung für HTML-, Razor- und Handlebar-Dateien.", - "html.format.enable.desc": "Standard-HTML-Formatierer aktivieren/deaktivieren", - "html.format.wrapLineLength.desc": "Die maximale Anzahl von Zeichen pro Zeile (0 = deaktiviert).", - "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.contentUnformatted.desc": "Liste der Tags (durch Trennzeichen getrennt), in der der Inhalt nicht neu formatiert werden muss. \"null\" entspricht standardmäßig dem Tag \"pre\".", - "html.format.indentInnerHtml.desc": "Nimmt einen Einzug für - und -Abschnitte vor.", - "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.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.indentHandlebars.desc": "Formatiert {{#foo}} und {{/foo}} und nimmt einen Einzug vor.", - "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.wrapAttributes.desc": "Attribute umschließen.", - "html.format.wrapAttributes.auto": "Attribute nur dann umschließen, wenn die Zeilenlänge überschritten wird.", - "html.format.wrapAttributes.force": "Jedes Attribut mit Ausnahme des ersten umschließen.", - "html.format.wrapAttributes.forcealign": "Jedes Attribut mit Ausnahme des ersten umschließen und Ausrichtung beibehalten.", - "html.format.wrapAttributes.forcemultiline": "Jedes Attribut umschließen.", - "html.suggest.angular1.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Angular V1-Tags und -Eigenschaften vorschlägt.", - "html.suggest.ionic.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Ionic-Tags, -Eigenschaften und -Werte vorschlägt.", - "html.suggest.html5.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung HTML5-Tags, -Eigenschaften und -Werte vorschlägt.", - "html.trace.server.desc": "Verfolgt die Kommunikation zwischen VS Code und dem HTML-Sprachserver.", - "html.validate.scripts": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts unterstützt.", - "html.validate.styles": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts validiert.", - "html.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert syntaxabhängige Faltungsmarkierungen.", - "html.autoClosingTags": "Automatisches Schließen von HTML-Tags aktivieren/deaktivieren." + ] } \ No newline at end of file diff --git a/i18n/deu/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/deu/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..fa24cd1104c --- /dev/null +++ b/i18n/deu/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON-Sprachserver" +} \ No newline at end of file diff --git a/i18n/deu/extensions/json-language-features/package.i18n.json b/i18n/deu/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..422563eeb75 --- /dev/null +++ b/i18n/deu/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für JSON-Dateien.", + "json.schemas.desc": "Schemas zu JSON-Dateien im aktuellen Projekt zuordnen", + "json.schemas.url.desc": "Eine URL zu einem Schema oder ein relativer Pfad zu einem Schema im aktuellen Verzeichnis", + "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.format.enable.desc": "Standard-JSON-Formatierer aktivieren/deaktivieren (Neustart erforderlich)", + "json.tracing.desc": "Verfolgt die Kommunikation zwischen VS Code und JSON-Sprachserver nach.", + "json.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", + "json.colorDecorators.enable.deprecationMessage": "Die Einstellung \"json.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt." +} \ 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 1ee4f4553c8..35229bd6699 100644 --- a/i18n/deu/extensions/json/package.i18n.json +++ b/i18n/deu/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "JSON-Sprachfeatures", - "description": "Bietet umfangreiche Sprachunterstützung für JSON-Dateien.", - "json.schemas.desc": "Schemas zu JSON-Dateien im aktuellen Projekt zuordnen", - "json.schemas.url.desc": "Eine URL zu einem Schema oder ein relativer Pfad zu einem Schema im aktuellen Verzeichnis", - "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.format.enable.desc": "Standard-JSON-Formatierer aktivieren/deaktivieren (Neustart erforderlich)", - "json.tracing.desc": "Verfolgt die Kommunikation zwischen VS Code und JSON-Sprachserver nach.", - "json.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", - "json.colorDecorators.enable.deprecationMessage": "Die Einstellung \"json.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", - "json.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert die syntaxabhängigen Faltungsmarkierungen." + ] } \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/deu/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..fdc135e8bec --- /dev/null +++ b/i18n/deu/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "'markdown.styles' konnte nicht geladen werden: {0}" +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..98c4ffb61e2 --- /dev/null +++ b/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "previewTitle": "Vorschau von {0}" +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/deu/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..1793456fe9d --- /dev/null +++ b/i18n/deu/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "In diesem Dokument wurden einige Inhalte deaktiviert.", + "preview.securityMessage.title": "Potenziell unsichere Inhalte wurden in der Markdown-Vorschau deaktiviert. Ändern Sie die Sicherheitseinstellung der Markdown-Vorschau, um unsichere Inhalte zuzulassen oder Skripts zu aktivieren.", + "preview.securityMessage.label": "Sicherheitswarnung – Inhalt deaktiviert" +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/out/security.i18n.json b/i18n/deu/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..828b182b8ed --- /dev/null +++ b/i18n/deu/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Strict", + "strict.description": "Nur sicheren Inhalt laden", + "insecureContent.title": "Unsicheren Inhalt zulassen", + "insecureContent.description": "Laden von Inhalten über HTTP aktivieren", + "disable.title": "Deaktivieren", + "disable.description": "Alle Inhalte und Skriptausführung zulassen. Nicht empfohlen.", + "moreInfo.title": "Weitere Informationen", + "enableSecurityWarning.title": "Vorschau von Sicherheitswarnungen in diesem Arbeitsbereich aktivieren", + "disableSecurityWarning.title": "Vorschau von Sicherheitswarnungen in diesem Arbeitsbereich deaktivieren ", + "toggleSecurityWarning.description": "Hat keinen Einfluss auf die Inhaltssicherheitsebene", + "preview.showPreviewSecuritySelector.title": "Sicherheitseinstellungen für die Markdown-Vorschau in diesem Arbeitsbereich auswählen" +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/package.i18n.json b/i18n/deu/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..8cae9ecc07d --- /dev/null +++ b/i18n/deu/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,31 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für Markdown.", + "markdown.preview.breaks.desc": "Legt fest, wie Zeilenumbrüche in der Markdown-Vorschau gerendert werden. Die Einstellung 'true' erzeugt ein
für jede neue Zeile.", + "markdown.preview.linkify": "Aktiviert oder deaktiviert die Konvertierung von URL-ähnlichem Text in Links in der Markdown-Vorschau.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Doppelklicken Sie in die Markdown-Vorschau, um zum Editor zu wechseln.", + "markdown.preview.fontFamily.desc": "Steuert die Schriftfamilie, die in der Markdownvorschau verwendet wird.", + "markdown.preview.fontSize.desc": "Steuert den Schriftgrad in Pixeln, der in der Markdownvorschau verwendet wird.", + "markdown.preview.lineHeight.desc": "Steuert die Zeilenhöhe, die in der Markdownvorschau verwendet wird. Diese Zahl ist relativ zum Schriftgrad.", + "markdown.preview.markEditorSelection.desc": "Markieren Sie die aktuelle Editor-Auswahl in der Markdown-Vorschau.", + "markdown.preview.scrollPreviewWithEditor.desc": "Wenn für die Markdown-Vorschau ein Bildlauf durchgeführt wird, aktualisieren Sie die Ansicht der Vorschau.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Veraltet] Führt einen Bildlauf für die Markdown-Vorschau durch, um die aktuell ausgewählte Zeile im Editor anzuzeigen.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Diese Einstellung wurde durch \"markdown.preview.scrollPreviewWithEditor\" ersetzt und ist nicht mehr wirksam.", + "markdown.preview.title": "Vorschau öffnen", + "markdown.previewFrontMatter.dec": "Legt fest, wie die YAML-Titelei in der Markdownvorschau gerendert werden soll. Durch \"hide\" wird die Titelei entfernt. Andernfalls wird die Titelei wie Markdowninhalt verarbeitet.", + "markdown.previewSide.title": "Vorschau an der Seite öffnen", + "markdown.showLockedPreviewToSide.title": "Gesperrte Vorschau an der Seite öffnen", + "markdown.showSource.title": "Quelle anzeigen", + "markdown.styles.dec": "Eine Liste von URLs oder lokalen Pfaden zu CSS-Stylesheets aus der Markdownvorschau, die verwendet werden sollen. Relative Pfade werden relativ zu dem Ordner interpretiert, der im Explorer geöffnet ist. Wenn kein Ordner geöffnet ist, werden sie relativ zum Speicherort der Markdowndatei interpretiert. Alle '\\' müssen als '\\\\' geschrieben werden.", + "markdown.showPreviewSecuritySelector.title": "Sicherheitseinstellungen für Vorschau ändern", + "markdown.trace.desc": "Aktiviert die Debugprotokollierung für die Markdown-Erweiterung.", + "markdown.preview.refresh.title": "Vorschau aktualisieren", + "markdown.preview.toggleLock.title": "Vorschausperre umschalten" +} \ No newline at end of file diff --git a/i18n/deu/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/deu/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..5805f86da6e --- /dev/null +++ b/i18n/deu/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Möchten Sie zulassen, dass {0} (als Arbeitsbereichseinstellung definiert) zum Bereinigen von PHP-Dateien ausgeführt wird?", + "php.yes": "Zulassen", + "php.no": "Nicht zulassen", + "wrongExecutable": "Eine Überprüfung ist nicht möglich, da {0} keine gültige ausführbare PHP-Datei ist. Verwenden Sie die Einstellung \"'php.validate.executablePath\", um die ausführbare PHP-Datei zu konfigurieren.", + "noExecutable": "Eine Überprüfung ist nicht möglich, da keine ausführbare PHP-Datei festgelegt ist. Verwenden Sie die Einstellung \"php.validate.executablePath\", um die ausführbare PHP-Datei zu konfigurieren.", + "unknownReason": "Fehler beim Ausführen von PHP mithilfe des Pfads \"{0}\". Die Ursache ist unbekannt." +} \ No newline at end of file diff --git a/i18n/deu/extensions/php-language-features/package.i18n.json b/i18n/deu/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..3b7f987e66a --- /dev/null +++ b/i18n/deu/extensions/php-language-features/package.i18n.json @@ -0,0 +1,17 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Konfiguriert, ob die integrierten PHP-Sprachvorschläge aktiviert sind. Die Unterstützung schlägt globale und variable PHP-Elemente vor.", + "configuration.validate.enable": "Integrierte PHP-Überprüfung aktivieren/deaktivieren.", + "configuration.validate.executablePath": "Zeigt auf die ausführbare PHP-Datei.", + "configuration.validate.run": "Gibt an, ob der Linter beim Speichern oder bei der Eingabe ausgeführt wird.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "Ausführbare Datei für PHP-Überprüfung nicht zulassen (als Arbeitsbereicheinstellung definiert)", + "displayName": "PHP-Sprachfeatures" +} \ No newline at end of file diff --git a/i18n/deu/extensions/php/package.i18n.json b/i18n/deu/extensions/php/package.i18n.json index b969aa85c93..ef10b47a8b3 100644 --- a/i18n/deu/extensions/php/package.i18n.json +++ b/i18n/deu/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Konfiguriert, ob die integrierten PHP-Sprachvorschläge aktiviert sind. Die Unterstützung schlägt globale und variable PHP-Elemente vor.", - "configuration.validate.enable": "Integrierte PHP-Überprüfung aktivieren/deaktivieren.", - "configuration.validate.executablePath": "Zeigt auf die ausführbare PHP-Datei.", - "configuration.validate.run": "Gibt an, ob der Linter beim Speichern oder bei der Eingabe ausgeführt wird.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Ausführbare Datei für PHP-Überprüfung nicht zulassen (als Arbeitsbereicheinstellung definiert)", - "displayName": "PHP-Sprachfeatures", - "description": "Bietet IntelliSense, Bereinigen und Sprachgrundlagen für PHP-Dateien." + "displayName": "PHP-Sprachfeatures" } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 631d23eff3f..4ae1e88e8f2 100644 --- a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Es wurden keine Ergebnisse gefunden.", "settingsSearchIssue": "Fehler in Einstellungssuche ", "bugReporter": "Fehlerbericht", - "performanceIssue": "Leistungsproblem", "featureRequest": "Featureanforderung", + "performanceIssue": "Leistungsproblem", "stepsToReproduce": "Zu reproduzierende Schritte", "bugDescription": "Geben Sie an, welche Schritte ausgeführt werden müssen, um das Problem zuverlässig zu reproduzieren. Was sollte geschehen, und was ist stattdessen geschehen? Wir unterstützen GitHub Flavored Markdown. Sie können während der Vorschau in GitHub Ihr Problem bearbeiten und Screenshots hinzufügen.", "performanceIssueDesciption": "Wann ist dieses Leistungsproblem aufgetreten? Tritt es beispielsweise beim Start oder nach einer bestimmten Reihe von Aktionen auf? Wir unterstützen GitHub Flavored Markdown. Sie können während der Vorschau in GitHub Ihr Problem bearbeiten und Screenshots hinzufügen.", diff --git a/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json index eee74c27615..cbc53f2c2a6 100644 --- a/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "Rahmenfarbe von Warnungsunterstreichungen im Editor.", "infoForeground": "Vordergrundfarbe von Informationsunterstreichungen im Editor.", "infoBorder": "Rahmenfarbe von Informationsunterstreichungen im Editor.", - "overviewRulerRangeHighlight": "Übersichtslineal-Markierungsfarbe für Bereichshervorhebungen.", "overviewRuleError": "Übersichtslineal-Markierungsfarbe für Fehler.", "overviewRuleWarning": "Übersichtslineal-Markierungsfarbe für Warnungen.", "overviewRuleInfo": "Übersichtslineal-Markierungsfarbe für Informationen." diff --git a/i18n/deu/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/deu/src/vs/editor/contrib/gotoError/gotoError.i18n.json index d1e83453813..9822e6e535d 100644 --- a/i18n/deu/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/deu/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Gehe zu nächstem Problem (Fehler, Warnung, Information)", - "markerAction.previous.label": "Gehe zu vorigem Problem (Fehler, Warnung, Information)", - "editorMarkerNavigationError": "Editormarkierung: Farbe bei Fehler des Navigationswidgets.", - "editorMarkerNavigationWarning": "Editormarkierung: Farbe bei Warnung des Navigationswidgets.", - "editorMarkerNavigationInfo": "Editormarkierung: Farbe bei Warnung des Navigationswidgets.", - "editorMarkerNavigationBackground": "Editormarkierung: Hintergrund des Navigationswidgets." + "markerAction.previous.label": "Gehe zu vorigem Problem (Fehler, Warnung, Information)" } \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/deu/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..a710ee11dcf --- /dev/null +++ b/i18n/deu/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Editormarkierung: Farbe bei Fehler des Navigationswidgets.", + "editorMarkerNavigationWarning": "Editormarkierung: Farbe bei Warnung des Navigationswidgets.", + "editorMarkerNavigationInfo": "Editormarkierung: Farbe bei Warnung des Navigationswidgets.", + "editorMarkerNavigationBackground": "Editormarkierung: Hintergrund des Navigationswidgets." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 9d57cce8b1d..f72633a93df 100644 --- a/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "Hintergrundfarbe eines Symbols bei Schreibzugriff, beispielsweise dem Schreiben einer Variable. Die Farbe muss durchsichtig sein, um nicht dahinterliegende Dekorationen zu verbergen.", "wordHighlightBorder": "Randfarbe eines Symbols beim Lesezugriff, wie etwa beim Lesen einer Variablen.", "wordHighlightStrongBorder": "Randfarbe eines Symbols beim Schreibzugriff, wie etwa beim Schreiben einer Variablen.", - "overviewRulerWordHighlightForeground": "Übersichtslineal-Markierungsfarbe für Symbolhervorhebungen.", - "overviewRulerWordHighlightStrongForeground": "Übersichtslineal-Markierungsfarbe für Schreibzugriffs-Symbolhervorhebungen.", "wordHighlight.next.label": "Gehe zur nächsten Symbolhervorhebungen", "wordHighlight.previous.label": "Gehe zur vorherigen Symbolhervorhebungen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/deu/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..86e0a5c4225 --- /dev/null +++ b/i18n/deu/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 weitere Datei wird nicht angezeigt", + "moreFiles": "...{0} weitere Dateien werden nicht angezeigt" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/deu/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..73350e0c953 --- /dev/null +++ b/i18n/deu/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Abbrechen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 786adadf99d..8eaf7a54f37 100644 --- a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,13 @@ "errorInstallingDependencies": "Fehler während Installation der Abhängigkeiten. {0}", "MarketPlaceDisabled": "Marketplace ist nicht aktiviert.", "removeError": "Fehler beim Entfernen der Erweiterung: {0}. Bitte beenden Sie und starten Sie VS Code neu bevor Sie erneut versuchen die Erweiterung zu installieren.", - "Not Market place extension": "Nur Marktplatz-Erweiterungen können neu installiert werden", + "Not a Marketplace extension": "Nur Marktplatz-Erweiterungen können neu installiert werden", "notFoundCompatible": "'{0}' kann nicht installiert werden: Es gibt keine mit VS Code '{1}' kompatible Version.", "malicious extension": "Die Erweiterung kann nicht installiert werden, da sie als problematisch gemeldet wurde.", "notFoundCompatibleDependency": "Kann nicht installiert werden, da die abhängige Erweiterung '{0}', die mit der aktuellen VS Code Version '{1}' kompatibel ist, nicht gefunden werden kann. ", "quitCode": "Fehler bei der Installation der Erweiterung. Beenden und starten Sie VS Code vor der erneuten Installation neu.", "exitCode": "Fehler bei der Installation der Erweiterung. Beenden und starten Sie VS Code vor der erneuten Installation neu.", "uninstallDependeciesConfirmation": "Möchten Sie nur \"{0}\" oder auch die zugehörigen Abhängigkeiten deinstallieren?", - "uninstallOnly": "Nur", - "uninstallAll": "Alle", "uninstallConfirmation": "Möchten Sie \"{0}\" deinstallieren?", "ok": "OK", "singleDependentError": "Die Erweiterung \"{0}\" kann nicht deinstalliert werden. Die Erweiterung \"{1}\" hängt von dieser Erweiterung ab.", diff --git a/i18n/deu/src/vs/platform/list/browser/listService.i18n.json b/i18n/deu/src/vs/platform/list/browser/listService.i18n.json index 204a5c783e7..d3f2996964a 100644 --- a/i18n/deu/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/deu/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Der Modifizierer zum Hinzufügen eines Elements in Bäumen und Listen zu einer Mehrfachauswahl mit der Maus (zum Beispiel im Explorer, in geöffneten Editoren und in der SCM-Ansicht). \"ctrlCmd\" wird unter Windows und Linux der Taste \"STRG\" und unter macOSX der Befehlstaste zugeordnet. Die Mausbewegung \"Seitlich öffnen\" wird – sofern unterstützt – so angepasst, dass kein Konflikt mit dem Modifizierer zur Mehrfachauswahl entsteht.", "openMode.singleClick": "Öffnet Elemente mit einem einzelnen Mausklick.", "openMode.doubleClick": "Öffnet Elemente mit einem doppelten Mausklick.", - "openModeModifier": "Steuert, wie Elemente in Bäumen und Listen mithilfe der Maus geöffnet werden (sofern unterstützt). Legen Sie \"singleClick\" fest, um Elemente mit einem einzelnen Mausklick zu öffnen, und \"doubleClick\", damit sie nur mit einem doppelten Mausklick geöffnet werden. Bei übergeordneten Elementen, deren untergeordnete Elemente sich in Bäumen befinden, steuert diese Einstellung, ob ein Einfachklick oder ein Doppelklick das übergeordnete Elemente erweitert. Beachten Sie, dass einige Bäume und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft." + "openModeModifier": "Steuert, wie Elemente in Bäumen und Listen mithilfe der Maus geöffnet werden (sofern unterstützt). Legen Sie \"singleClick\" fest, um Elemente mit einem einzelnen Mausklick zu öffnen, und \"doubleClick\", damit sie nur mit einem doppelten Mausklick geöffnet werden. Bei übergeordneten Elementen, deren untergeordnete Elemente sich in Bäumen befinden, steuert diese Einstellung, ob ein Einfachklick oder ein Doppelklick das übergeordnete Elemente erweitert. Beachten Sie, dass einige Bäume und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.", + "horizontalScrolling setting": "Steuert, ob Bäume horizontales Scrollen in der Workbench unterstützen." } \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/markers/common/markers.i18n.json b/i18n/deu/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..e5b40fe4a67 --- /dev/null +++ b/i18n/deu/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Fehler", + "sev.warning": "Warnung", + "sev.info": "Info" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json index dd41efec383..2e98d7310d1 100644 --- a/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "Rahmenfarbe für Kopfzeilen und die Aufteilung in Inline-Mergingkonflikten.", "overviewRulerCurrentContentForeground": "Aktueller Übersichtslineal-Vordergrund für Inline-Mergingkonflikte.", "overviewRulerIncomingContentForeground": "Eingehender Übersichtslineal-Vordergrund für Inline-Mergingkonflikte. ", - "overviewRulerCommonContentForeground": "Hintergrund des Übersichtslineals des gemeinsamen übergeordneten Elements bei Inlinezusammenführungskonflikten.", - "overviewRulerFindMatchForeground": "Übersichtslineal-Markierungsfarbe für Suchübereinstimmungen.", - "overviewRulerSelectionHighlightForeground": "Übersichtslineal-Markierungsfarbe für Auswahlhervorhebungen." + "overviewRulerCommonContentForeground": "Hintergrund des Übersichtslineals des gemeinsamen übergeordneten Elements bei Inlinezusammenführungskonflikten." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 1fe62d2efcb..bfd72770d07 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Fokus in nächster Gruppe", "openToSide": "Zur Seite öffnen", "closeEditor": "Editor schließen", + "closeOneEditor": "Schließen", "revertAndCloseActiveEditor": "Wiederherstellen und Editor schließen", "closeEditorsToTheLeft": "Editoren links schließen", "closeAllEditors": "Alle Editoren schließen", diff --git a/i18n/deu/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index c7fbfd6ffe1..6054596bd29 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Schließen", "araLabelEditorActions": "Editor-Aktionen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json index d7684461feb..21a380f1297 100644 --- a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Fenster", "window.openFilesInNewWindow.on": "Dateien werden in einem neuen Fenster geöffnet.", "window.openFilesInNewWindow.off": "Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet.", - "window.openFilesInNewWindow.default": "Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet, sofern sie nicht über das Dock oder den Finder geöffnet werden (nur MacOS).", - "openFilesInNewWindow": "Steuert, ob Dateien in einem neuen Fenster oder im letzten aktiven Fenster geöffnet werden.\n- default: Die Dateien werden im letzten aktiven Fenster geöffnet, sofern sie nicht über das Dock oder den Finder geöffnet werden (nur macOS).\n- on: Die Dateien werden in einem neuen Fenster geöffnet.\n- off: Die Dateien werden im letzten aktiven Fenster geöffnet.\nIn einigen Fällen wird diese Einstellung unter Umständen ignoriert (z. B. bei der Befehlszeilenoption \"-new-window\" oder \"-reuse-window\").", "window.openFoldersInNewWindow.on": "Ordner werden in einem neuen Fenster geöffnet.", "window.openFoldersInNewWindow.off": "Ordner ersetzen das letzte aktive Fenster.", "window.openFoldersInNewWindow.default": "Ordner werden in einem neuen Fenster geöffnet, sofern kein Ordner innerhalb der Anwendung ausgewählt wird (z. B. über das Dateimenü).", @@ -58,7 +56,6 @@ "restoreWindows": "Steuert, wie Fenster nach einem Neustart erneut geöffnet werden. Wählen Sie \"none\", um immer mit einem leeren Arbeitsbereich zu beginnen, \"one\", um das zuletzt verwendete Fenster erneut zu öffnen, \"folders\", um alle Fenster, in denen Ordner geöffnet waren, erneut zu öffnen, oder \"all\", um alle Fenster der letzten Sitzung erneut zu öffnen.", "restoreFullscreen": "Steuert, ob ein Fenster im Vollbildmodus wiederhergestellt wird, wenn es im Vollbildmodus beendet wurde.", "zoomLevel": "Passen Sie den Zoomfaktor des Fensters an. Die ursprüngliche Größe ist 0. Jede Inkrementierung nach oben (z. B. 1) oder unten (z. B. -1) stellt eine Vergrößerung bzw. Verkleinerung um 20 % dar. Sie können auch Dezimalwerte eingeben, um den Zoomfaktor genauer anzupassen.", - "title": "Steuert den Fenstertitel basierend auf dem aktiven Editor. Variablen werden abhängig vom Kontext ersetzt:\n${activeEditorShort}: der Dateiname (z. B. myFile.txt)\n${activeEditorMedium}: der Pfad der Datei, relativ zum Arbeitsbereichsordner (z. B. myFolder/myFile.txt)\n${activeEditorLong}: der vollständige Pfad der Datei (z. B. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: Name des Arbeitsbereichsordners, der die Datei enthält (z. B. myFolder) \n${folderPath}: Dateipfad des Arbeitsbereichsordners, der die Datei enthält (z. B. /Users/Development/myFolder)\n${rootName}: Name des Arbeitsbereichs (z. B. myFolder oder myWorkspace)\n${rootPath}: Dateipfad des Arbeitsbereichs (z. B. /Users/Development/myWorkspace)\n${appName}: z. B. VS Code\n${dirty}: ein Änderungsindikator, wenn der aktive Editor geändert wurde\n${separator}: ein bedingtes Trennzeichen (\" - \"), das nur angezeigt wird, wenn es zwischen Variablen mit Werten steht", "window.newWindowDimensions.default": "Öffnet neue Fenster in der Mitte des Bildschirms.", "window.newWindowDimensions.inherit": "Öffnet neue Fenster mit den gleichen Abmessungen wie das letzte aktive Fenster.", "window.newWindowDimensions.maximized": "Öffnet neue Fenster maximiert.", 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 e7fc581ef98..659f9528874 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 @@ -24,16 +24,12 @@ "restartFrame": "Frame neu starten", "removeBreakpoint": "Haltepunkt entfernen", "removeAllBreakpoints": "Alle Haltepunkte entfernen", - "enableBreakpoint": "Haltepunkt aktivieren", - "disableBreakpoint": "Haltepunkt deaktivieren", "enableAllBreakpoints": "Alle Haltepunkte aktivieren", "disableAllBreakpoints": "Alle Haltepunkte deaktivieren", "activateBreakpoints": "Haltepunkte aktivieren", "deactivateBreakpoints": "Haltepunkte deaktivieren", "reapplyAllBreakpoints": "Alle Haltepunkte erneut anwenden", "addFunctionBreakpoint": "Funktionshaltepunkt hinzufügen", - "addConditionalBreakpoint": "Bedingten Haltepunkt hinzufügen...", - "editConditionalBreakpoint": "Haltepunkt bearbeiten...", "setValue": "Wert festlegen", "addWatchExpression": "Ausdruck hinzufügen", "editWatchExpression": "Ausdruck bearbeiten", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..93b4d514d00 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Unterbrechen, wenn die Bedingung für die Trefferanzahl erfüllt ist. EINGABETASTE zum Akzeptieren, ESC-TASTE zum Abbrechen.", + "breakpointWidgetExpressionPlaceholder": "Unterbrechen, wenn der Ausdruck als TRUE ausgewertet wird. EINGABETASTE zum Akzeptieren, ESC-TASTE zum Abbrechen.", + "breakpointWidgetHitCountAriaLabel": "Das Programm wird nur angehalten, wenn die Bedingung für die Trefferanzahl erfüllt ist. Drücken Sie zum Akzeptieren die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", + "breakpointWidgetAriaLabel": "Das Programm wird nur angehalten, wenn diese Bedingung erfüllt ist. Drücken Sie zum Akzeptieren die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", + "expression": "Ausdruck", + "hitCount": "Trefferanzahl" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 9da3944bf5c..ddf54889d34 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Haltepunkt bearbeiten...", + "disableBreakpoint": "Haltepunkt deaktivieren", + "enableBreakpoint": "Haltepunkt aktivieren", "removeBreakpoints": "Haltepunkte entfernen", "removeBreakpointOnColumn": "Haltepunkt in Spalte {0} entfernen", "removeLineBreakpoint": "Zeilenhaltepunkt entfernen", @@ -18,5 +21,6 @@ "enableBreakpoints": "Haltepunkt in Spalte {0} aktivieren", "enableBreakpointOnLine": "Zeilenhaltepunkt aktivieren", "addBreakpoint": "Haltepunkt hinzufügen", + "conditionalBreakpoint": "Bedingten Haltepunkt hinzufügen...", "addConfiguration": "Konfiguration hinzufügen..." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 451f6c89a46..e0c41c377e0 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,7 +28,5 @@ "preLaunchTaskExitCode": "Der preLaunchTask \"{0}\" wurde mit dem Exitcode {1} beendet.", "showErrors": "Fehler anzeigen", "noFolderWorkspaceDebugError": "Debuggen der aktiven Datei ist nicht möglich. Stellen Sie sicher, dass sie auf einem Datenträger gespeichert ist und dass Sie die Debugerweiterung für diesen Dateityp installiert haben.", - "cancel": "Abbrechen", - "DebugTaskNotFound": "Der preLaunchTask \"{0}\" wurde nicht gefunden.", - "taskNotTracked": "Der preLaunchTask \"{0}\" kann nicht getrackt werden." + "cancel": "Abbrechen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 5b2cebadb75..7b308ecd6d4 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,8 @@ "configureWorkspaceFolderRecommendedExtensions": "Empfohlene Erweiterungen konfigurieren (Arbeitsbereichsordner)", "malicious tooltip": "Die Erweiterung wurde als problematisch gemeldet.", "malicious": "Böswillig", + "disabled": "Deaktiviert", + "disabled globally": "Deaktiviert", "disableAll": "Alle installierten Erweiterungen löschen", "disableAllWorkspace": "Alle installierten Erweiterungen für diesen Arbeitsbereich deaktivieren", "enableAll": "Alle Erweiterungen aktivieren", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..179eb06b234 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,56 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Erweiterungsname", + "extension id": "Erweiterungsbezeichner", + "builtin": "Integriert", + "publisher": "Name des Herausgebers", + "install count": "Installationsanzahl", + "rating": "Bewertung", + "license": "Lizenz", + "details": "Details", + "contributions": "Beiträge", + "changelog": "ChangeLog", + "dependencies": "Abhängigkeiten", + "noReadme": "Keine INFODATEI verfügbar.", + "noChangelog": "Es ist kein ChangeLog verfügbar.", + "noContributions": "Keine Beiträge", + "noDependencies": "Keine Abhängigkeiten", + "settings": "Einstellungen ({0})", + "setting name": "Name", + "description": "Beschreibung", + "default": "Standard", + "debuggers": "Debugger ({0})", + "debugger name": "Name", + "debugger type": "Typ", + "views": "Ansichten ({0})", + "view id": "ID", + "view name": "Name", + "view location": "Wo", + "localizations": "Lokalisierungen ({0})", + "localizations language id": "Sprach-ID", + "localizations language name": "Sprachname", + "localizations localized language name": "Sprachname (lokalisiert)", + "colorThemes": "Farbdesigns ({0})", + "iconThemes": "Symboldesigns ({0})", + "colors": "Farben ({0})", + "defaultDark": "Standard, dunkel", + "defaultLight": "Standard, hell", + "defaultHC": "Standard, hoher Kontrast", + "JSON Validation": "JSON-Validierung ({0})", + "commands": "Befehle ({0})", + "command name": "Name", + "keyboard shortcuts": "Tastenkombinationen", + "menuContexts": "Menükontexte", + "languages": "Sprachen ({0})", + "language id": "ID", + "language name": "Name", + "file extensions": "Dateierweiterungen", + "grammar": "Grammatik", + "snippets": "Codeausschnitte" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 29577e29ba6..a3725fa64c5 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Empfohlen", "otherRecommendedExtensions": "Weitere Empfehlungen", "workspaceRecommendedExtensions": "Arbeitsbereich-Empfehlungen", - "builtInExtensions": "Integriert", "searchExtensions": "Nach Erweiterungen im Marketplace suchen", "sort by installs": "Sortieren nach: Installationsanzahl", "sort by rating": "Sortieren nach: Bewertung", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 157f84b48e7..4ba0d0b4fea 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Möchten Sie die folgenden {0} Dateien löschen?", "confirmMoveTrashMessageFolder": "Möchten Sie \"{0}\" samt Inhalt wirklich löschen?", "confirmMoveTrashMessageFile": "Möchten Sie \"{0}\" wirklich löschen?", - "undoBin": "Die Wiederherstellung kann aus dem Papierkorb erfolgen.", - "undoTrash": "Die Wiederherstellung kann aus dem Papierkorb erfolgen.", "doNotAskAgain": "Nicht erneut fragen", "confirmDeleteMessageMultiple": "Möchten Sie die folgenden {0} Dateien endgültig löschen?", "confirmDeleteMessageFolder": "Möchten Sie \"{0}\" samt Inhalt wirklich endgültig löschen?", "confirmDeleteMessageFile": "Möchten Sie \"{0}\" wirklich endgültig löschen?", "irreversible": "Diese Aktion kann nicht rückgängig gemacht werden.", - "cancel": "Abbrechen", - "permDelete": "Endgültig löschen", "importFiles": "Dateien importieren", "confirmOverwrite": "Im Zielordner ist bereits eine Datei oder ein Ordner mit dem gleichen Namen vorhanden. Möchten Sie sie bzw. ihn ersetzen?", "replaceButtonLabel": "&&Ersetzen", diff --git a/i18n/deu/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..755aaf46f80 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "HTML-Vorschau" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/deu/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..4a857815246 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Ungültige Editor-Eingabe." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..0c1f5497f13 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Entwickler" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/deu/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..1492a37abd0 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview-Entwicklertools öffnen", + "refreshWebviewLabel": "Webviews erneut laden" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 2e89465d3be..b1ad2f843d9 100644 --- a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Ja", + "no": "Nein", + "doNotAskAgain": "Nicht erneut fragen", "JsonSchema.locale": "Die zu verwendende Sprache der Benutzeroberfläche.", "vscode.extension.contributes.localizations": "Trägt Lokalisierungen zum Editor bei", "vscode.extension.contributes.localizations.languageId": "ID der Sprache, in die Anzeigezeichenfolgen übersetzt werden.", diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..778741d8c94 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Kopieren" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..3926e145e99 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Insgesamt {0} Probleme", + "filteredProblems": "Zeigt {0} von {1} Problemen an" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..58d6f84f140 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Probleme", + "markers.showOnFile": "Fehler & Warnungen auf Dateien und Ordnern anzeigen." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..6b3a52e72b9 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Anzeigen", + "problems.view.toggle.label": "Probleme umschalten (Fehler, Warnungen, Informationen)", + "problems.view.focus.label": "Probleme fokussieren (Fehler, Warnungen, Informationen)", + "problems.panel.configuration.title": "Ansicht \"Probleme\"", + "problems.panel.configuration.autoreveal": "Steuert, ob die Ansicht \"Probleme\" automatisch Dateien anzeigen sollte, wenn diese geöffnet werden.", + "markers.panel.title.problems": "Probleme", + "markers.panel.aria.label.problems.tree": "Probleme nach Dateien gruppiert", + "markers.panel.no.problems.build": "Es wurden bisher keine Probleme im Arbeitsbereich erkannt.", + "markers.panel.no.problems.filters": "Es wurden keine Ergebnisse mit den angegebenen Filterkriterien gefunden.", + "markers.panel.action.filter": "Probleme filtern", + "markers.panel.filter.placeholder": "Nach Typ oder Text filtern", + "markers.panel.filter.errors": "Fehler", + "markers.panel.filter.warnings": "Warnungen", + "markers.panel.filter.infos": "Informationen", + "markers.panel.single.error.label": "1 Fehler", + "markers.panel.multiple.errors.label": "{0} Fehler", + "markers.panel.single.warning.label": "1 Warnung", + "markers.panel.multiple.warnings.label": "{0} Warnungen", + "markers.panel.single.info.label": "1 Information", + "markers.panel.multiple.infos.label": "{0}-Informationen", + "markers.panel.single.unknown.label": "1 Unbekannte", + "markers.panel.multiple.unknowns.label": "{0} Unbekannte", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} mit {1} Problemen", + "errors.warnings.show.label": "Fehler und Warnungen anzeigen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json index f953fa7ad28..f36a3d9c95f 100644 --- a/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Nächstes Sucheinschlussmuster anzeigen", "previousSearchIncludePattern": "Vorheriges Sucheinschlussmuster anzeigen", - "nextSearchExcludePattern": "Nächstes Suchausschlussmuster anzeigen", - "previousSearchExcludePattern": "Vorheriges Suchausschlussmuster anzeigen", "nextSearchTerm": "Nächsten Suchbegriff anzeigen", "previousSearchTerm": "Vorherigen Suchbegriff anzeigen", "showSearchViewlet": "Suche anzeigen", diff --git a/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json index f2f216a0a04..97d605ad472 100644 --- a/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Suchdetails umschalten", - "searchScope.includes": "Einzuschließende Dateien", - "label.includes": "Sucheinschlussmuster", - "searchScope.excludes": "Auszuschließende Dateien", - "label.excludes": "Suchausschlussmuster", "replaceAll.confirmation.title": "Alle ersetzen", "replaceAll.confirm.button": "&&Ersetzen", "replaceAll.occurrence.file.message": "{0} Vorkommen in {1} Datei durch \"{2}\" ersetzt.", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 31dfb0b2d5e..37a1bba4e0c 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "Weist die Aufgabe keiner Gruppe zu.", "JsonSchema.tasks.group": "Definiert die Ausführungsgruppe, zu der diese Aufgabe gehört. Zum Hinzufügen der Aufgabe zur Buildgruppe wird \"build\" unterstützt und zum Hinzufügen zur Testgruppe \"test\".", "JsonSchema.tasks.type": "Definiert, ob die Aufgabe als Prozess oder als Befehl innerhalb einer Shell ausgeführt wird.", + "JsonSchema.command": "Der auszuführende Befehl. Es kann sich um ein externes Programm oder einen Shellbefehl handeln.", + "JsonSchema.tasks.args": "Argumente, die an den Befehl übergeben werden, wenn diese Aufgabe aufgerufen wird.", "JsonSchema.tasks.label": "Die Bezeichnung der Aufgabe der Benutzerschnittstelle", "JsonSchema.version": "Die Versionsnummer der Konfiguration.", "JsonSchema.tasks.identifier": "Ein vom Benutzer definierter Bezeichner, mit dem in \"launch.json\" oder in einer dependsOn-Klausel auf die Aufgabe verwiesen wird.", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index f3b5da63084..b20a17cd7a7 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,10 @@ ], "tasksCategory": "Aufgaben", "ConfigureTaskRunnerAction.label": "Aufgabe konfigurieren", - "problems": "Probleme", + "totalErrors": "{0} Fehler", + "totalWarnings": "{0} Warnungen", + "totalInfos": "{0}-Informationen", "building": "Wird gebaut...", - "manyMarkers": "mehr als 99", "runningTasks": "Aktive Aufgaben anzeigen", "tasks": "Aufgaben", "TaskSystem.noHotSwap": "Zum Ändern des Aufgabenausführungsmoduls mit einem aktiven Task muss das Fenster erneut geladen werden.", @@ -46,8 +47,8 @@ "recentlyUsed": "zuletzt verwendete Aufgaben", "configured": "konfigurierte Aufgaben", "detected": "erkannte Aufgaben", - "TaskService.ignoredFolder": "Die folgenden Arbeitsbereichsordner werden ignoriert, da sie Aufgabenversion 0.1.0 verwenden: {0}", "TaskService.notAgain": "Nicht mehr anzeigen", + "TaskService.ignoredFolder": "Die folgenden Arbeitsbereichsordner werden ignoriert, da sie Aufgabenversion 0.1.0 verwenden: {0}", "TaskService.pickRunTask": "Auszuführende Aufgabe auswählen", "TaslService.noEntryToRun": "Es wurde keine auszuführende Aufgabe gefunden. Aufgaben konfigurieren...", "TaskService.fetchingBuildTasks": "Buildaufgaben werden abgerufen...", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 5f774b9427a..2dfda5e5aca 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Fehler: Die Aufgabenkonfiguration \"{0}\" enthält die erforderlich Eigenschaft \"{1}\" nicht. Die Aufgabenkonfiguration wird ignoriert.", "ConfigurationParser.notCustom": "Fehler: Die Aufgabe ist nicht als benutzerdefinierte Aufgabe deklariert. Die Konfiguration wird ignoriert.\n{0}\n", "ConfigurationParser.noTaskName": "Fehler: Eine Aufgabe muss eine label-Eigenschaft angeben. Die Aufgabe wird ignoriert.\n{0}\n", - "taskConfiguration.shellArgs": "Warnung: Die Aufgabe \"{0}\" ist ein Shellbefehl, und eines seiner Argumente enthält Leerzeichen ohne Escapezeichen. Führen Sie Argumente im Befehl zusammen, um eine korrekte Angabe der Befehlszeile sicherzustellen.", "taskConfiguration.noCommandOrDependsOn": "Fehler: Aufgabe \"{0}\" definiert keinen Befehl bzw. keine depondsOn-Eigenschaft. Die Aufgabe wird ignoriert. Die Definition lautet:\n{1}", "taskConfiguration.noCommand": "Fehler: Aufgabe \"{0}\" definiert keinen Befehl. Die Aufgabe wird ignoriert. Die Definition lautet:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "Die Aufgabenversion 2.0.0 unterstützt globale betriebssystemspezifische Aufgaben nicht. Konvertieren Sie sie in eine Aufgabe mit einem betriebssystemspezifischen Befehl. Folgende Aufgaben sind hiervon betroffen:\n{0}" diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 10ca73d9616..6fee7de3b43 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Kopieren", + "split": "Teilen", "paste": "Einfügen", "selectAll": "Alles auswählen", - "clear": "Löschen", - "split": "Teilen" + "clear": "Löschen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..e9c3a683375 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Anmerkungen zu dieser Version: {0}", + "unassigned": "Nicht zugewiesen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json index f2d901b3bb9..e77ab265d42 100644 --- a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Später", - "unassigned": "Nicht zugewiesen", "releaseNotes": "Anmerkungen zu dieser Version", "showReleaseNotes": "Anmerkungen zu dieser Version anzeigen", "read the release notes": "Willkommen bei {0} v{1}! Möchten Sie die Hinweise zu dieser Version lesen?", diff --git a/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..0a2dcb8a2c9 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "Webview-Editor" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..eab41295e8a --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Weitere Informationen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/deu/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/deu/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..4a29a1c902d --- /dev/null +++ b/i18n/deu/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Ja", + "cancelButton": "Abbrechen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 37247fac832..d1ad985a6bd 100644 --- a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Nicht mehr anzeigen", "netVersionError": "Microsoft .NET Framework 4.5 ist erforderlich. Klicken Sie auf den Link, um die Anwendung zu installieren.", "learnMore": "Anweisungen", - "enospcError": "Keine Dateihandles mehr in {0} vorhanden. Folgen Sie dem Anwendungslink, um das Problem zu beheben.", "binFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb.", "trashFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json index 548b1344de6..a2229be0cee 100644 --- a/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Ungültige Dateiressource ({0})", "fileIsDirectoryError": "Die Datei ist ein Verzeichnis", "fileNotModifiedError": "Datei nicht geändert seit", - "fileTooLargeForHeapError": "Die Dateigröße überschreitet die maximale Speichergröße für Fenster. Führen Sie folgenden Code aus: --max-memory=NEWSIZE", "fileTooLargeError": "Die Datei ist zu groß, um sie zu öffnen.", "fileNotFoundError": "Die Datei wurde nicht gefunden ({0}).", "fileBinaryError": "Die Datei scheint eine Binärdatei zu sein und kann nicht als Text geöffnet werden.", diff --git a/i18n/deu/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/deu/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..56b19fa3a5a 100644 --- a/i18n/deu/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/deu/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Abbrechen" } \ No newline at end of file diff --git a/i18n/esn/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/esn/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..0100d5fd5a7 --- /dev/null +++ b/i18n/esn/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "Servidor de lenguaje CSS", + "folding.start": "Inicio de la región plegable", + "folding.end": "Fin de la región plegable" +} \ No newline at end of file diff --git a/i18n/esn/extensions/css-language-features/package.i18n.json b/i18n/esn/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..5b2576647c5 --- /dev/null +++ b/i18n/esn/extensions/css-language-features/package.i18n.json @@ -0,0 +1,79 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Características del lenguaje CSS", + "description": "Proporciona un potente soporte de lenguaje para archivos CSS, LESS y SCSS.", + "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", + "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.trace.server.desc": "Hace un seguimiento de la comunicación entre VSCode y el servidor de lenguaje CSS.", + "css.validate.title": "Controla la validación de CSS y la gravedad de los problemas.", + "css.validate.desc": "Habilita o deshabilita todas las validaciones", + "less.title": "LESS", + "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", + "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.title": "Controla la validación de LESS y la gravedad de los problemas.", + "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", + "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.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.title": "Controla la validación de SCSS y la gravedad de los problemas.", + "scss.validate.desc": "Habilita o deshabilita todas las validaciones", + "less.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", + "scss.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", + "css.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", + "css.colorDecorators.enable.deprecationMessage": "El valor \"css.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\".", + "scss.colorDecorators.enable.deprecationMessage": "El valor \"scss.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\".", + "less.colorDecorators.enable.deprecationMessage": "El valor \"less.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\"." +} \ No newline at end of file diff --git a/i18n/esn/extensions/css/package.i18n.json b/i18n/esn/extensions/css/package.i18n.json index 91d31339c05..a0ca458b69d 100644 --- a/i18n/esn/extensions/css/package.i18n.json +++ b/i18n/esn/extensions/css/package.i18n.json @@ -6,76 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Características del lenguaje CSS", - "description": "Proporciona un potente soporte de lenguaje para archivos CSS, LESS y SCSS.", - "css.title": "CSS", - "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", - "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.trace.server.desc": "Hace un seguimiento de la comunicación entre VSCode y el servidor de lenguaje CSS.", - "css.validate.title": "Controla la validación de CSS y la gravedad de los problemas.", - "css.validate.desc": "Habilita o deshabilita todas las validaciones", - "less.title": "LESS", - "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", - "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.title": "Controla la validación de LESS y la gravedad de los problemas.", - "less.validate.desc": "Habilita o deshabilita todas las validaciones", - "scss.title": "SCSS (Sass)", - "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.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.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", - "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.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.title": "Controla la validación de SCSS y la gravedad de los problemas.", - "scss.validate.desc": "Habilita o deshabilita todas las validaciones", - "less.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", - "scss.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", - "css.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", - "css.colorDecorators.enable.deprecationMessage": "El valor \"css.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\".", - "scss.colorDecorators.enable.deprecationMessage": "El valor \"scss.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\".", - "less.colorDecorators.enable.deprecationMessage": "El valor \"less.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\"." + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos CSS, LESS y SCSS." } \ No newline at end of file diff --git a/i18n/esn/extensions/git/out/commands.i18n.json b/i18n/esn/extensions/git/out/commands.i18n.json index dad69ea9b3f..53ebb086ddb 100644 --- a/i18n/esn/extensions/git/out/commands.i18n.json +++ b/i18n/esn/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "Aceptar", "push with tags success": "Insertado con etiquetas correctamente.", "pick remote": "Seleccionar un elemento remoto para publicar la rama '{0}':", - "sync is unpredictable": "Esta acción insertará y extraerá confirmaciones en '{0}'.", "never again": "No volver a mostrar ", "no remotes to publish": "El repositorio no tiene remotos configurados en los que publicar.", "no changes stash": "No existen cambios para el guardado provisional.", diff --git a/i18n/esn/extensions/git/package.i18n.json b/i18n/esn/extensions/git/package.i18n.json index 0fdd9b9bbbf..87a73cba8a7 100644 --- a/i18n/esn/extensions/git/package.i18n.json +++ b/i18n/esn/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Controla si se debe mostrar una acción de archivo abierto en la vista de cambios en Git", "config.inputValidation": "Controla cuándo mostrar el mensaje de validación de entrada en el contador de entrada.", "config.detectSubmodules": "Controla si se detectan automáticamente los submódulos Git. ", + "config.detectSubmodulesLimit": "Controla el límite de submódulos de git detectados.", "colors.modified": "Color para recursos modificados.", "colors.deleted": "Color para los recursos eliminados.", "colors.untracked": "Color para los recursos a los que no se les hace seguimiento.", diff --git a/i18n/esn/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/esn/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..9900526f77a --- /dev/null +++ b/i18n/esn/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "Servidor de lenguaje HTML", + "folding.start": "Inicio de la región plegable", + "folding.end": "Fin de la región plegable" +} \ No newline at end of file diff --git a/i18n/esn/extensions/html-language-features/package.i18n.json b/i18n/esn/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..44cb8a85815 --- /dev/null +++ b/i18n/esn/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Características del lenguaje HTML", + "description": "Proporciona un potente soporte del lenguaje para archivos HTML, Razor y Handlebar.", + "html.format.enable.desc": "Habilitar o deshabilitar el formateador HTML predeterminado", + "html.format.wrapLineLength.desc": "Cantidad máxima de caracteres por línea (0 = deshabilitar).", + "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.contentUnformatted.desc": "Lista de etiquetas, separadas por comas, en las que el contenido no debe volver a formatearse. \"null\" se establece de manera predeterminada en la etiqueta \"pre\".", + "html.format.indentInnerHtml.desc": "Aplicar sangría a las secciones y .", + "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.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.indentHandlebars.desc": "Formato y sangría {{#foo}} y {{/foo}}.", + "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.wrapAttributes.desc": "Ajustar atributos.", + "html.format.wrapAttributes.auto": "Ajustar atributos solo cuando se supera la longitud de la línea.", + "html.format.wrapAttributes.force": "Ajustar todos los atributos excepto el primero.", + "html.format.wrapAttributes.forcealign": "Ajustar todos los atributos excepto el primero y mantener la alineación.", + "html.format.wrapAttributes.forcemultiline": "Ajustar todos los atributos.", + "html.suggest.angular1.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas y propiedades de Angular V1.", + "html.suggest.ionic.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de Ionic.", + "html.suggest.html5.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de HTML5.", + "html.trace.server.desc": "Hace un seguimiento de la comunicación entre VSCode y el servidor de lenguaje HTML.", + "html.validate.scripts": "Configura si la compatibilidad con el lenguaje HTML incorporado valida los scripts insertados.", + "html.validate.styles": "Configura si la compatibilidad con el lenguaje HTML incorporado valida los estilos insertados.", + "html.autoClosingTags": "Habilita o deshabilita el cierre automático de las etiquetas HTML." +} \ 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 fbe039bb6bf..114d2d72125 100644 --- a/i18n/esn/extensions/html/package.i18n.json +++ b/i18n/esn/extensions/html/package.i18n.json @@ -6,29 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Características del lenguaje HTML", - "description": "Proporciona un potente soporte del lenguaje para archivos HTML, Razor y Handlebar.", - "html.format.enable.desc": "Habilitar o deshabilitar el formateador HTML predeterminado", - "html.format.wrapLineLength.desc": "Cantidad máxima de caracteres por línea (0 = deshabilitar).", - "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.contentUnformatted.desc": "Lista de etiquetas, separadas por comas, en las que el contenido no debe volver a formatearse. \"null\" se establece de manera predeterminada en la etiqueta \"pre\".", - "html.format.indentInnerHtml.desc": "Aplicar sangría a las secciones y .", - "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.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.indentHandlebars.desc": "Formato y sangría {{#foo}} y {{/foo}}.", - "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.wrapAttributes.desc": "Ajustar atributos.", - "html.format.wrapAttributes.auto": "Ajustar atributos solo cuando se supera la longitud de la línea.", - "html.format.wrapAttributes.force": "Ajustar todos los atributos excepto el primero.", - "html.format.wrapAttributes.forcealign": "Ajustar todos los atributos excepto el primero y mantener la alineación.", - "html.format.wrapAttributes.forcemultiline": "Ajustar todos los atributos.", - "html.suggest.angular1.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas y propiedades de Angular V1.", - "html.suggest.ionic.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de Ionic.", - "html.suggest.html5.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de HTML5.", - "html.trace.server.desc": "Hace un seguimiento de la comunicación entre VSCode y el servidor de lenguaje HTML.", - "html.validate.scripts": "Configura si la compatibilidad con el lenguaje HTML incorporado valida los scripts insertados.", - "html.validate.styles": "Configura si la compatibilidad con el lenguaje HTML incorporado valida los estilos insertados.", - "html.experimental.syntaxFolding": "Habilita/deshabilita los marcadores de plegado sensibles a la sintaxis.", - "html.autoClosingTags": "Habilita o deshabilita el cierre automático de las etiquetas HTML." + "displayName": "Conceptos básicos de lenguaje HTML" } \ No newline at end of file diff --git a/i18n/esn/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/esn/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..253bfb394d3 --- /dev/null +++ b/i18n/esn/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "Servidor de lenguaje JSON" +} \ No newline at end of file diff --git a/i18n/esn/extensions/json-language-features/package.i18n.json b/i18n/esn/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..d18d8b81bc3 --- /dev/null +++ b/i18n/esn/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Características del lenguaje JSON", + "description": "Proporciona un potente soporte de lenguaje para archivos JSON.", + "json.schemas.desc": "Asociar esquemas a archivos JSON en el proyecto actual", + "json.schemas.url.desc": "Una dirección URL a un esquema o una ruta de acceso relativa a un esquema en el directorio 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.format.enable.desc": "Habilitar/deshabilitar formateador JSON predeterminado (requiere reiniciar)", + "json.tracing.desc": "Realiza el seguimiento de la comunicación entre VS Code y el servidor de lenguaje JSON.", + "json.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", + "json.colorDecorators.enable.deprecationMessage": "El valor \"json.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\"." +} \ 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 a3e0c5de0ee..4586ba0848a 100644 --- a/i18n/esn/extensions/json/package.i18n.json +++ b/i18n/esn/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Características del lenguaje JSON", - "description": "Proporciona un potente soporte de lenguaje para archivos JSON.", - "json.schemas.desc": "Asociar esquemas a archivos JSON en el proyecto actual", - "json.schemas.url.desc": "Una dirección URL a un esquema o una ruta de acceso relativa a un esquema en el directorio 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.format.enable.desc": "Habilitar/deshabilitar formateador JSON predeterminado (requiere reiniciar)", - "json.tracing.desc": "Seguimiento de comunicación entre VS Code y el servidor de lenguaje JSON", - "json.colorDecorators.enable.desc": "Habilita o deshabilita decoradores de color", - "json.colorDecorators.enable.deprecationMessage": "El valor \"json.colorDecorators.enable\" está en desuso en favor de \"editor.colorDecorators\".", - "json.experimental.syntaxFolding": "Habilita/deshabilita los marcadores de plegado sensibles a la sintaxis." + "displayName": "Conceptos básicos de lenguaje JSON", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos JSON." } \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/esn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..a97aa29723b --- /dev/null +++ b/i18n/esn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "No se pudo cargar 'markdown.styles': {0}" +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/esn/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..0743f600836 --- /dev/null +++ b/i18n/esn/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Vista previa] {0}", + "previewTitle": "Vista Previa {0}" +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/esn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..ef0bed92441 --- /dev/null +++ b/i18n/esn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "Se ha deshabilitado parte del contenido de este documento", + "preview.securityMessage.title": "Se ha deshabilitado el contenido potencialmente inseguro en la previsualización de Markdown. Para permitir el contenido inseguro o habilitar scripts cambie la configuración de la previsualización de Markdown", + "preview.securityMessage.label": "Alerta de seguridad de contenido deshabilitado" +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/out/security.i18n.json b/i18n/esn/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..09a54bc2ce3 --- /dev/null +++ b/i18n/esn/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Strict", + "strict.description": "Cargar solo el contenido seguro", + "insecureContent.title": "Permitir contenido no seguro", + "insecureContent.description": "Habilitar el contenido de carga sobre http", + "disable.title": "Deshabilitar", + "disable.description": "Permitir todo el contenido y la ejecución de scripts. No se recomienda.", + "moreInfo.title": "Más información", + "enableSecurityWarning.title": "Habilitar advertencias de seguridad de vista previa en este espacio de trabajo", + "disableSecurityWarning.title": "Deshabilitar advertencias de seguridad de vista previa en este espacio de trabajo", + "preview.showPreviewSecuritySelector.title": "Seleccione configuración de seguridad para las previsualizaciones de Markdown en esta área de trabajo" +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/package.i18n.json b/i18n/esn/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..0e6d8a1f74f --- /dev/null +++ b/i18n/esn/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Características del lenguaje Markdown", + "description": "Proporciona un potente soporte de lenguaje para archivos Markdown.", + "markdown.preview.breaks.desc": "Establece cómo los saltos de línea son representados en la vista previa de markdown. Estableciendolo en 'true' crea un
para cada nueva línea.", + "markdown.preview.linkify": "Habilitar o deshabilitar la conversión de texto de tipo URL a enlaces en la vista previa de markdown.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Haga doble clic en la vista previa de Markdown para cambiar al editor.", + "markdown.preview.fontFamily.desc": "Controla la familia de la fuente utilizada en la previsualización del descuento.", + "markdown.preview.fontSize.desc": "Controla el tamaño de la fuente en píxeles utilizado en la previsualización del descuento.", + "markdown.preview.lineHeight.desc": "Controla la altura de línea utilizada en la previsualización del descuento. Este número es relativo al tamaño de la fuente.", + "markdown.preview.markEditorSelection.desc": "Marca la selección del editor actual en la vista previa de Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Al desplazarse en la vista previa de Markdown, se actualiza la vista del editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Al desplazarse en el editor de Markdown, se actualiza la vista de la previsualización .", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Desestimado] Desplaza la vista previa de Markdown para revelar la línea del editor seleccionada actualmente.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Este valor se ha reemplazado por \"markdown.preview.scrollPreviewWithEditor\" y ya no tiene ningún efecto.", + "markdown.preview.title": "Abrir vista previa", + "markdown.previewFrontMatter.dec": "Establece cómo se debe representar el asunto de la parte delantera de YAML en la vista previa del descuento. 'hide' quita el asunto de la parte delantera. De lo contrario, el asunto de la parte delantera se trata como contenido del descuento.", + "markdown.previewSide.title": "Abrir vista previa en el lateral", + "markdown.showLockedPreviewToSide.title": "Abrir vista previa fija en el lateral", + "markdown.showSource.title": "Mostrar origen", + "markdown.styles.dec": "Una lista de direcciones URL o rutas de acceso locales a hojas de estilo CSS que utilizar desde la vista previa del descuento. Las tutas de acceso relativas se interpretan en relación con la carpeta abierta en el explorador. Si no hay ninguna carpeta abierta, se interpretan en relación con la ubicación del archivo del descuento. Todos los '\\' deben escribirse como '\\\\'.", + "markdown.showPreviewSecuritySelector.title": "Cambiar configuración de seguridad de vista previa", + "markdown.trace.desc": "Habilitar registro de depuración para las extensiones de Markdown. ", + "markdown.preview.refresh.title": "Actualizar vista previa", + "markdown.preview.toggleLock.title": "Cambiar fijación de la vista previa " +} \ No newline at end of file diff --git a/i18n/esn/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/esn/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..a2041159412 --- /dev/null +++ b/i18n/esn/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "¿Permite la ejecución de {0} (definido como valor del área de trabajo) para detectar errores en archivos PHP?", + "php.yes": "Permitir", + "php.no": "No permitir", + "wrongExecutable": "No se puede validar porque {0} no es un ejecutable PHP válido. Use el ajuste \"php.validate.executablePath\" para configurar el ejecutable PHP.", + "noExecutable": "No se puede validar porque no hay ningún ejecutable PHP establecido. Use el ajuste \"php.validate.executablePath\" para configurar el ejecutable de PHP.", + "unknownReason": "No se pudo ejecutar el archivo PHP con la ruta de acceso: {0}. Se desconoce el motivo." +} \ No newline at end of file diff --git a/i18n/esn/extensions/php-language-features/package.i18n.json b/i18n/esn/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..dd2f1e37fd8 --- /dev/null +++ b/i18n/esn/extensions/php-language-features/package.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Configura si se habilitan las sugerencias del lenguaje PHP integradas. La asistencia sugiere variables y opciones globales de PHP.", + "configuration.validate.enable": "Habilita o deshabilita la validación integrada de PHP.", + "configuration.validate.executablePath": "Señala al ejecutable PHP.", + "configuration.validate.run": "Indica si linter se ejecuta al guardar o al escribir.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)" +} \ No newline at end of file diff --git a/i18n/esn/extensions/php/package.i18n.json b/i18n/esn/extensions/php/package.i18n.json index 1e2e57cee70..e7b6423f2b6 100644 --- a/i18n/esn/extensions/php/package.i18n.json +++ b/i18n/esn/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Configura si se habilitan las sugerencias del lenguaje PHP integradas. La asistencia sugiere variables y opciones globales de PHP.", - "configuration.validate.enable": "Habilita o deshabilita la validación integrada de PHP.", - "configuration.validate.executablePath": "Señala al ejecutable PHP.", - "configuration.validate.run": "Indica si linter se ejecuta al guardar o al escribir.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)", - "displayName": "Características del lenguaje PHP", - "description": "Proporciona IntelliSense, linting y conceptos básicos del lenguaje para archivos de PHP." + "displayName": "Características del lenguaje PHP" } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 9719ad40a2d..bdde741219f 100644 --- a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "No se encontraron resultados", "settingsSearchIssue": "Problema de búsqueda de configuración", "bugReporter": "Informe de errores", - "performanceIssue": "Problema de rendimiento", "featureRequest": "Solicitud de característica", + "performanceIssue": "Problema de rendimiento", "stepsToReproduce": "Pasos para reproducir", "bugDescription": "Indique los pasos necesarios para reproducir el problema. Debe incluir el resultado real y el resultado esperado. Admitimos Markdown al estilo de GitHub. Podrá editar el problema y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", "performanceIssueDesciption": "¿Cuándo ocurrió este problema de rendimiento? ¿Se produce al inicio o después de realizar una serie específica de acciones? Admitimos Markdown al estilo de GitHub. Podrá editar el problema y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", diff --git a/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json index 9b8e29dd1a9..131e96b837a 100644 --- a/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -6,12 +6,12 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "lineHighlight": "Color de fondo del resaltado de línea en la posición del cursor.", + "lineHighlight": "Color de fondo para la línea resaltada en la posición del cursor.", "lineHighlightBorderBox": "Color de fondo del borde alrededor de la línea en la posición del cursor.", "rangeHighlight": "Color de fondo de los rangos resaltados, como por ejemplo las características de abrir rápidamente y encontrar. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", "rangeHighlightBorder": "Color de fondo del borde alrededor de los intervalos resaltados.", "caret": "Color del cursor del editor.", - "editorCursorBackground": "Color de fondo del cursor de edición. Permite personalizar el color del carácter solapado por el bloque del cursor.", + "editorCursorBackground": "Color de fondo del cursor de edición. Permite personalizar el color del caracter solapado por el bloque del cursor.", "editorWhitespaces": "Color de los caracteres de espacio en blanco del editor.", "editorIndentGuides": "Color de las guías de sangría del editor.", "editorLineNumbers": "Color de números de línea del editor.", @@ -28,7 +28,6 @@ "warningBorder": "Color de borde de squigglies de advertencia en el editor.", "infoForeground": "Color de primer plano de los subrayados ondulados informativos en el editor.", "infoBorder": "Color del borde de los subrayados ondulados informativos en el editor.", - "overviewRulerRangeHighlight": "Color de marcador de regla de información general para intervalos resaltados.", "overviewRuleError": "Color de marcador de regla de información general para errores. ", "overviewRuleWarning": "Color de marcador de regla de información general para advertencias.", "overviewRuleInfo": "Color de marcador de regla de información general para mensajes informativos. " diff --git a/i18n/esn/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/esn/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 5682e32cf74..ce6be2a8dc0 100644 --- a/i18n/esn/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Ir al siguiente problema (Error, Advertencia, Información)", - "markerAction.previous.label": "Ir al problema anterior (Error, Advertencia, Información)", - "editorMarkerNavigationError": "Color de los errores del widget de navegación de marcadores del editor.", - "editorMarkerNavigationWarning": "Color de las advertencias del widget de navegación de marcadores del editor.", - "editorMarkerNavigationInfo": "Color del widget informativo marcador de navegación en el editor.", - "editorMarkerNavigationBackground": "Fondo del widget de navegación de marcadores del editor." + "markerAction.previous.label": "Ir al problema anterior (Error, Advertencia, Información)" } \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/esn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..862620a88d9 --- /dev/null +++ b/i18n/esn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Color de los errores del widget de navegación de marcadores del editor.", + "editorMarkerNavigationWarning": "Color de las advertencias del widget de navegación de marcadores del editor.", + "editorMarkerNavigationInfo": "Color del widget informativo marcador de navegación en el editor.", + "editorMarkerNavigationBackground": "Fondo del widget de navegación de marcadores del editor." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..f494743a105 --- /dev/null +++ b/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "November": "Noviembre", + "JulyShort": "Jul", + "DecemberShort": "Dic" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 430b8e97079..d7c592b45d8 100644 --- a/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "Color de fondo de un símbolo durante el acceso de escritura, como escribir en una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", "wordHighlightBorder": "Color de fondo de un símbolo durante el acceso de lectura; por ejemplo, cuando se lee una variable.", "wordHighlightStrongBorder": "Color de fondo de un símbolo durante el acceso de escritura; por ejemplo, cuando se escribe una variable.", - "overviewRulerWordHighlightForeground": "Color de marcador de regla de información general para símbolos resaltados.", - "overviewRulerWordHighlightStrongForeground": "Color de marcador de regla de información general para símbolos de acceso de escritura resaltados. ", "wordHighlight.next.label": "Ir al siguiente símbolo destacado", "wordHighlight.previous.label": "Ir al símbolo destacado anterior" } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/esn/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..cf1d1d7ad84 --- /dev/null +++ b/i18n/esn/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 archivo más que no se muestra", + "moreFiles": "...{0} archivos más que no se muestran" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/esn/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..4a277edc564 --- /dev/null +++ b/i18n/esn/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Cancelar" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 0206bd0f46c..87bd0fe318c 100644 --- a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,12 @@ "errorInstallingDependencies": "Error instalando dependencias. {0}", "MarketPlaceDisabled": "Marketplace no está habilitado", "removeError": "Error al quitar la extensión: {0}. Salga e inicie VS Code antes de intentarlo de nuevo.", - "Not Market place extension": "Solo se pueden reinstalar las extensiones de Marketplace", "notFoundCompatible": "No se pueden instalar '{0}'; no hay ninguna versión disponible compatible con VS Code '{1}'. ", "malicious extension": "No se puede instalar la extensión ya que se informó que era problemático.", "notFoundCompatibleDependency": "No se puede instalar porque no se encuentra la extensión dependiente '{0}' compatible con la versión actual '{1}' del VS Code.", "quitCode": "No se puede instalar la extensión. Por favor, salga e inicie VS Code antes de reinstalarlo. ", "exitCode": "No se puede instalar la extensión. Por favor, salga e inicie VS Code antes de reinstalarlo. ", "uninstallDependeciesConfirmation": "¿Quiere desinstalar solo '{0}' o también sus dependencias?", - "uninstallOnly": "Solo", - "uninstallAll": "Todo", "uninstallConfirmation": "¿Seguro que quiere desinstalar '{0}'?", "ok": "Aceptar", "singleDependentError": "No se puede desinstalar la extensión '{0}'. La extensión '{1}' depende de esta.", diff --git a/i18n/esn/src/vs/platform/markers/common/markers.i18n.json b/i18n/esn/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..2229fecdaf4 --- /dev/null +++ b/i18n/esn/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Error", + "sev.warning": "Advertencia", + "sev.info": "Información" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json index 2ff0a4aa513..075049e313b 100644 --- a/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "Color del borde en los encabezados y el divisor en conflictos de combinación alineados.", "overviewRulerCurrentContentForeground": "Primer plano de la regla de visión general actual para conflictos de combinación alineados.", "overviewRulerIncomingContentForeground": "Primer plano de regla de visión general de entrada para conflictos de combinación alineados.", - "overviewRulerCommonContentForeground": "Primer plano de la regla de visión general de ancestros comunes para conflictos de combinación alineados.", - "overviewRulerFindMatchForeground": "Color de marcador de regla de información general para coincidencias encontradas.", - "overviewRulerSelectionHighlightForeground": "Color de marcador de regla de información general para elementos seleccionados resaltados." + "overviewRulerCommonContentForeground": "Primer plano de la regla de visión general de ancestros comunes para conflictos de combinación alineados." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index c174fe9d262..78e8984a534 100644 --- a/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "requirearray": "views debe ser una mariz", + "requirearray": "Las vistas deben ser una matriz", "requirestring": "la propiedad `{0}` es obligatoria y debe ser de tipo \"string\"", "optstring": "la propiedad `{0}` se puede omitir o debe ser de tipo \"string\"", "vscode.extension.contributes.view.id": "Identificador de la vista. Úselo para registrar un proveedor de datos mediante la API \"vscode.window.registerTreeDataProviderForView\". También para desencadenar la activación de su extensión al registrar el evento \"onView:${id}\" en \"activationEvents\".", diff --git a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/esn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 2597aecdf39..e35e95658e0 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Enfocar el grupo siguiente", "openToSide": "Abrir en el lateral", "closeEditor": "Cerrar editor", + "closeOneEditor": "Cerrar", "revertAndCloseActiveEditor": "Revertir y cerrar el editor", "closeEditorsToTheLeft": "Cerrar los editores a la izquierda", "closeAllEditors": "Cerrar todos los editores", diff --git a/i18n/esn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 9367c8315b0..9310ecec997 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Cerrar", "araLabelEditorActions": "Acciones del editor" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json index 4147b8a00c3..62d7de2c6f0 100644 --- a/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Ventana", "window.openFilesInNewWindow.on": "Los archivos se abrirán en una nueva ventana", "window.openFilesInNewWindow.off": "Los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa", - "window.openFilesInNewWindow.default": "Los archivos se abrirán en la ventana con la carpeta de los archivos abierta o en la última ventana activa a menos que se abran mediante el Dock o el Finder (solo macOS)", - "openFilesInNewWindow": "Controla si los archivos deben abrirse en una ventana nueva.\n- default: los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa, a menos que se abran mediante el Dock o desde el Finder (solo macOS)\n- on: los archivos se abrirán en una ventana nueva\n- off: los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa\nTenga en cuenta que aún puede haber casos en los que este parámetro se ignore (por ejemplo, al usar la opción de la línea de comandos -new-window o -reuse-window).", "window.openFoldersInNewWindow.on": "Las carpetas se abrirán en una nueva ventana", "window.openFoldersInNewWindow.off": "Las carpetas reemplazarán la ventana activa más reciente", "window.openFoldersInNewWindow.default": "Las carpetas se abrirán en una nueva ventana a menos que se seleccione una carpeta desde la aplicación (p. ej. mediante el menú Archivo)", @@ -58,7 +56,6 @@ "restoreWindows": "Controla cómo se vuelven a abrir las ventanas tras un reinicio. Seleccione \"none\" para comenzar siempre con un área de trabajo vacía, \"one\" para volver a abrir la última ventana en la que trabajó, \"folders\" para volver a abrir todas las ventanas que tenían carpetas abiertas o \"all\" para volver a abrir todas las ventanas de la última sesión.", "restoreFullscreen": "Controla si una ventana se debe restaurar al modo de pantalla completa si se salió de ella en dicho modo.", "zoomLevel": "Ajuste el nivel de zoom de la ventana. El tamaño original es 0 y cada incremento (por ejemplo, 1) o disminución (por ejemplo, -1) representa una aplicación de zoom un 20 % más grande o más pequeño. También puede especificar decimales para ajustar el nivel de zoom con una granularidad más precisa.", - "title": "Controla el título de ventana basado en el editor activo. Las variables se sustituyen según el contexto: ${activeEditorShort}: el archivo nombre (e.g. miarchivo.txt) ${activeEditorMedium}: la ruta del archivo en relación con el área de trabajo carpeta (por ejemplo, myFolder/myFile.txt) ${activeEditorLong}: la ruta de acceso completa del archivo (p. ej. / Users/Development/myProject/myFolder/myFile.txt) ${nombre de carpeta}: nombre de la carpeta el archivo del espacio de trabajo está contenida en (e.g. myFolder) ${folderPath}: ruta del archivo de la carpeta el archivo del espacio de trabajo está contenida en (por ejemplo, /Users/Development/myFolder) {} $ rootName}: nombre de la área de trabajo (por ejemplo myFolder o myWorkspace) ${Ruta_raíz}: ruta del archivo del espacio de trabajo (por ejemplo, /Users/Development/myWorkspace) ${appName}: por ejemplo VS código ${sucio}: un indicador sucio si el editor activo es sucio ${separador}: condicional separador (\"-\") que sólo muestra cuando rodeada de variables con valores", "window.newWindowDimensions.default": "Abrir las nuevas ventanas en el centro de la pantalla.", "window.newWindowDimensions.inherit": "Abrir las nuevas ventanas con la misma dimensión que la última activa.", "window.newWindowDimensions.maximized": "Abrir las nuevas ventanas maximizadas.", 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 dd1b28c53bf..eee54fa1f1c 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 @@ -24,16 +24,12 @@ "restartFrame": "Reiniciar marco", "removeBreakpoint": "Quitar punto de interrupción", "removeAllBreakpoints": "Quitar todos los puntos de interrupción", - "enableBreakpoint": "Habilitar punto de interrupción", - "disableBreakpoint": "Deshabilitar punto de interrupción", "enableAllBreakpoints": "Habilitar todos los puntos de interrupción", "disableAllBreakpoints": "Deshabilitar todos los puntos de interrupción", "activateBreakpoints": "Activar puntos de interrupción", "deactivateBreakpoints": "Desactivar puntos de interrupción", "reapplyAllBreakpoints": "Volver a aplicar todos los puntos de interrupción", "addFunctionBreakpoint": "Agregar punto de interrupción de función", - "addConditionalBreakpoint": "Agregar punto de interrupción condicional...", - "editConditionalBreakpoint": "Editar punto de interrupción...", "setValue": "Establecer valor", "addWatchExpression": "Agregar expresión", "editWatchExpression": "Editar expresión", diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..72b3d080b9d --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Interrumpir cuando se alcance el número de llamadas. Presione \"ENTRAR\" para aceptar o \"Esc\" para cancelar.", + "breakpointWidgetExpressionPlaceholder": "Interrumpir cuando la expresión se evalúa como true. Presione \"ENTRAR\" para aceptar o \"Esc\" para cancelar.", + "breakpointWidgetHitCountAriaLabel": "El programa solo se detendrá aquí si se alcanza el número de llamadas. Presione ENTRAR para aceptar o Esc para cancelar.", + "breakpointWidgetAriaLabel": "El programa solo se detendrá aquí si esta condición es true. Presione ENTRAR para aceptar o Esc para cancelar.", + "expression": "Expresión", + "hitCount": "Número de llamadas" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index b33d36b0b85..1c8d3ad1e17 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Editar punto de interrupción...", + "disableBreakpoint": "Deshabilitar punto de interrupción", + "enableBreakpoint": "Habilitar punto de interrupción", "removeBreakpoints": "Quitar puntos de interrupción", "removeBreakpointOnColumn": "Quitar punto de interrupción en la columna {0}", "removeLineBreakpoint": "Quitar punto de interrupción de línea", @@ -18,5 +21,6 @@ "enableBreakpoints": "Habilitar punto de interrupción en la columna {0}", "enableBreakpointOnLine": "Habilitar punto de interrupción de línea", "addBreakpoint": "Agregar punto de interrupción", + "conditionalBreakpoint": "Agregar punto de interrupción condicional...", "addConfiguration": "Agregar configuración..." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 818cc21eb9a..98205ab953f 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,6 +29,5 @@ "showErrors": "Mostrar errores", "noFolderWorkspaceDebugError": "El archivo activo no se puede depurar. Compruebe que se ha guardado en el disco y que tiene una extensión de depuración instalada para ese tipo de archivo.", "cancel": "Cancelar", - "DebugTaskNotFound": "No se encontró el elemento preLaunchTask '{0}'.", - "taskNotTracked": "No se puede realizar un seguimiento de la tarea preLaunchTask '{0}'." + "DebugTaskNotFound": "No se pudo encontrar la tarea '{0}'." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..21701a2c2dd --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,56 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Nombre de la extensión", + "extension id": "Identificador de la extensión", + "preview": "Vista Previa", + "builtin": "Integrada", + "publisher": "Nombre del editor", + "install count": "Número de instalaciones", + "rating": "Clasificación", + "repository": "Repositorio", + "license": "Licencia", + "details": "Detalles", + "contributions": "Contribuciones", + "changelog": "Registro de cambios", + "dependencies": "Dependencias", + "noReadme": "No hay ningún archivo LÉAME disponible.", + "noChangelog": "No hay ningún objeto CHANGELOG disponible.", + "noContributions": "No hay contribuciones.", + "noDependencies": "No hay dependencias.", + "settings": "Configuración ({0})", + "setting name": "Nombre", + "description": "Descripción", + "default": "Predeterminado", + "debuggers": "Depuradores ({0})", + "debugger name": "Nombre", + "debugger type": "Tipo", + "views": "Vistas ({0})", + "view id": "Id.", + "view name": "Nombre", + "view location": "Donde", + "localizations": "Localizaciones ({0}) ", + "localizations language id": "ID. de idioma", + "localizations language name": "Nombre de idioma", + "localizations localized language name": "Nombre de idioma (localizado)", + "defaultDark": "Oscuro por defecto", + "defaultLight": "Claro por defecto", + "defaultHC": "Contraste alto por defecto", + "JSON Validation": "Validación JSON ({0})", + "fileMatch": "Coincidencia de archivo", + "commands": "Comandos ({0})", + "command name": "Nombre", + "keyboard shortcuts": "Métodos abreviados de teclado", + "menuContexts": "Contextos de menú", + "languages": "Lenguajes ({0})", + "language id": "Id.", + "language name": "Nombre", + "file extensions": "Extensiones de archivo", + "grammar": "Gramática", + "snippets": "Fragmentos" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 7e5657b2ee0..896424f6a2c 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Recomendado", "otherRecommendedExtensions": "Otras recomendaciones", "workspaceRecommendedExtensions": "Recomendaciones de espacio de trabajo", - "builtInExtensions": "Integrado", "searchExtensions": "Buscar extensiones en Marketplace", "sort by installs": "Criterio de ordenación: Número de instalaciones", "sort by rating": "Criterio de ordenación: Clasificación", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 88a1e52e347..b540790d3f3 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "¿Está seguro de que desea eliminar los siguientes archivos {0}?", "confirmMoveTrashMessageFolder": "¿Está seguro de que desea eliminar '{0}' y su contenido?", "confirmMoveTrashMessageFile": "¿Está seguro de que desea eliminar '{0}'?", - "undoBin": "Puede restaurar desde la papelera de reciclaje.", - "undoTrash": "Puede restaurar desde la papelera.", "doNotAskAgain": "No volver a preguntarme", "confirmDeleteMessageMultiple": "¿Está seguro de que desea eliminar de forma permanente los siguientes archivos {0}?", "confirmDeleteMessageFolder": "¿Está seguro de que desea eliminar '{0}' y su contenido de forma permanente?", "confirmDeleteMessageFile": "¿Está seguro de que desea eliminar '{0}' de forma permanente?", "irreversible": "Esta acción es irreversible.", - "cancel": "Cancelar", - "permDelete": "Eliminar permanentemente", "importFiles": "Importar archivos", "confirmOverwrite": "Ya existe un archivo o carpeta con el mismo nombre en la carpeta de destino. ¿Quiere reemplazarlo?", "replaceButtonLabel": "&&Reemplazar", diff --git a/i18n/esn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..d73134b9c52 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Vista previa de HTML" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/esn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..1709fee8d03 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Entrada del editor no válida." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..70152293951 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Desarrollador" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/esn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..760d6b600cd --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Abrir herramientas de desarrollo de vistas web", + "refreshWebviewLabel": "Recargar vistas web" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 27bdc18017a..8d320c3e36d 100644 --- a/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Sí", + "no": "No", + "doNotAskAgain": "No volver a preguntarme", "JsonSchema.locale": "Idioma de la interfaz de usuario que debe usarse.", "vscode.extension.contributes.localizations": "Contribuye a la localización del editor", "vscode.extension.contributes.localizations.languageId": "Identificador del idioma en el que se traducen las cadenas de visualización.", diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..710a643d6e8 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Copiar", + "copyMarkerMessage": "Copiar mensaje" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..4e534a88b7c --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Total {0} Problemas", + "filteredProblems": "Mostrando {0} de {1} problemas" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..5f229151f6c --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Problemas", + "tooltip.1": "1 problema en este fichero", + "tooltip.N": "{0} problemas en este fichero", + "markers.showOnFile": "Mostrar Errores y Advertencias en la carpeta y ficheros." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..eab6272315a --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Ver", + "problems.view.toggle.label": "Alternar problemas (errores, advertencias, información)", + "problems.view.focus.label": "Problemas de enfoque (errores, advertencias, información)", + "problems.panel.configuration.title": "Vista Problemas", + "problems.panel.configuration.autoreveal": "Controla si la vista Problemas debe revelar automáticamente los archivos cuando los abre", + "markers.panel.title.problems": "Problemas", + "markers.panel.aria.label.problems.tree": "Problemas agrupados por archivos", + "markers.panel.no.problems.build": "Hasta el momento, no se encontraron problemas en el área de trabajo.", + "markers.panel.no.problems.filters": "No se encontraron resultados con los criterios de filtro proporcionados", + "markers.panel.action.filter": "Filtrar problemas", + "markers.panel.filter.placeholder": "Filtrar por tipo o texto", + "markers.panel.filter.errors": "errores", + "markers.panel.filter.warnings": "advertencias", + "markers.panel.filter.infos": "informaciones", + "markers.panel.single.error.label": "1 error", + "markers.panel.multiple.errors.label": "{0} errores", + "markers.panel.single.warning.label": "1 advertencia", + "markers.panel.multiple.warnings.label": "{0} advertencias", + "markers.panel.single.info.label": "1 información", + "markers.panel.multiple.infos.label": "{0} informaciones", + "markers.panel.single.unknown.label": "1 desconocido", + "markers.panel.multiple.unknowns.label": "{0} desconocidos", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} con {1} problemas", + "errors.warnings.show.label": "Mostrar errores y advertencias" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 7c31eb187d7..e69218c998b 100644 --- a/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Mostrar siguiente búsqueda de patrón include", "previousSearchIncludePattern": "Mostrar búsqueda anterior de patrón include ", - "nextSearchExcludePattern": "Mostrar siguiente búsqueda de patrón exclude ", - "previousSearchExcludePattern": "Mostrar búsqueda anterior de patrón exclude ", "nextSearchTerm": "Mostrar siguiente término de búsqueda", "previousSearchTerm": "Mostrar anterior término de búsqueda", "showSearchViewlet": "Mostrar búsqueda", diff --git a/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json index 0c3d29ae593..be513ebe447 100644 --- a/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Alternar detalles de la búsqueda", - "searchScope.includes": "archivos para incluir", - "label.includes": "Buscar patrones de inclusión", - "searchScope.excludes": "archivos para excluir", - "label.excludes": "Buscar patrones de exclusión", "replaceAll.confirmation.title": "Reemplazar todo", "replaceAll.confirm.button": "&&Reemplazar", "replaceAll.occurrence.file.message": "{0} aparición reemplazada en {1} archivo por \"{2}\".", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 01aace24713..41e40ef4d29 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "No asigna la tarea a ningún grupo", "JsonSchema.tasks.group": "Define a qué grupo de ejecución pertenece esta tarea. Admite \"compilación\" para agregarla al grupo de compilación y \"prueba\" para agregarla al grupo de prueba.", "JsonSchema.tasks.type": "Define si la tarea se ejecuta como un proceso o como un comando dentro de in shell. ", + "JsonSchema.command": "El comando que se va a ejecutar. Puede ser un programa externo o un comando shell.", + "JsonSchema.tasks.args": "Argumentos que se pasan al comando cuando se invoca esta tarea.", "JsonSchema.tasks.label": "Etiqueta de interfaz de usuario de la tarea", "JsonSchema.version": "El número de versión de la configuración.", "JsonSchema.tasks.identifier": "Un identificador definido por el usuario para hacer referencia a la tarea en launch.json o una cláusula dependsOn.", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 6613231543f..fb8b41d8a5e 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,10 @@ ], "tasksCategory": "Tareas", "ConfigureTaskRunnerAction.label": "Configurar tarea", - "problems": "Problemas", + "totalErrors": "{0} errores", + "totalWarnings": "{0} advertencias", + "totalInfos": "{0} informaciones", "building": "Compilando...", - "manyMarkers": "Más de 99", "runningTasks": "Mostrar tareas en ejecución", "tasks": "Tareas", "TaskSystem.noHotSwap": "Cambiar el motor de ejecución de tareas con una tarea activa ejecutandose, requiere recargar la ventana", @@ -46,8 +47,8 @@ "recentlyUsed": "Tareas usadas recientemente", "configured": "tareas configuradas", "detected": "tareas detectadas", - "TaskService.ignoredFolder": "Las siguientes carpetas del área de trabajo se omitirán porque utilizan la versión 0.1.0 de la tarea: {0}", "TaskService.notAgain": "No volver a mostrar", + "TaskService.ignoredFolder": "Las siguientes carpetas del área de trabajo se omitirán porque utilizan la versión 0.1.0 de la tarea: {0}", "TaskService.pickRunTask": "Seleccione la tarea a ejecutar", "TaslService.noEntryToRun": "No se encontraron tareas para ejecutar. Configurar tareas...", "TaskService.fetchingBuildTasks": "Obteniendo tareas de compilación...", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 2b056d507ea..6769f7d66e8 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Error: la configuración de la tarea '{0}' no contiene la propiedad requerida '{1}'. Se omitirá la configuración de la tarea.", "ConfigurationParser.notCustom": "Error: Las tareas no se declaran como una tarea personalizada. La configuración se omitirá.\n{0}\n", "ConfigurationParser.noTaskName": "Error: Las tareas deben proporcionar una propiedad label. La tarea se ignorará.\n{0}\n", - "taskConfiguration.shellArgs": "Advertencia: La tarea '{0}' es un comando de shell y uno de sus argumentos podría tener espacios sin escape. Para asegurarse de que la línea de comandos se cite correctamente, fusione mediante combinación los argumentos en el comando.", "taskConfiguration.noCommandOrDependsOn": "Error: La tarea \"{0}\" no especifica un comando ni una propiedad dependsOn. La tarea se ignorará. Su definición es: \n{1}", "taskConfiguration.noCommand": "Error: La tarea \"{0}\" no define un comando. La tarea se ignorará. Su definición es: {1}", "TaskParse.noOsSpecificGlobalTasks": "La versión de tarea 2.0.0 no admite tareas específicas de SO globales. Conviértalas en una tarea con un comando específico de SO. Estas son las tareas afectadas:\n{0}" diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 900915d6696..f6620b8d489 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Copiar", + "split": "Dividir", "paste": "Pegar", "selectAll": "Seleccionar todo", - "clear": "Borrar", - "split": "Dividir" + "clear": "Borrar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..0378f2fc8d2 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Notas de la versión: {0}", + "unassigned": "sin asignar" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 0c545a6b005..b9e27a328d5 100644 --- a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Más tarde", - "unassigned": "sin asignar", "releaseNotes": "Notas de la versión", "showReleaseNotes": "Mostrar las notas de la versión", "read the release notes": "{0} v{1}. ¿Quiere leer las notas de la versión?", diff --git a/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..7957a5748f1 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "Editor de vistas web" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..d3fc42e3ea0 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Leer más" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..e71ac660c5f --- /dev/null +++ b/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolder": "${workspaceFolder} no se puede resolver. Por favor, abra una carpeta.", + "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} no se puede resolver en una área de trabajo de varias carpetas. Establezca el alcance de estas variables usando : y un nombre de carpeta.", + "canNotResolveFolderBasename": "${workspaceFolderBasename} no se puede resolver. Por favor, abra una carpeta.", + "canNotResolveLineNumber": "${lineNumber} no se puede resolver, por favor, abra un editor.", + "canNotResolveSelectedText": "${selectedText} no se puede resolver, por favor, abra un editor.", + "canNotResolveFileDirname": "${fileDirname} no se puede resolver, por favor, abra un editor.", + "canNotResolveFileExtname": "${fileExtname} no se puede resolver, por favor, abra un editor.", + "canNotResolveFileBasename": "${fileBasename} no se puede resolver, por favor, abra un editor.", + "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} no se puede resolver, por favor, abra un editor." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/esn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..f78002ce65e --- /dev/null +++ b/i18n/esn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Sí", + "cancelButton": "Cancelar" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 3170eed61fb..aa407167dba 100644 --- a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,7 @@ "neverShowAgain": "No volver a mostrar", "netVersionError": "Requiere Microsoft .NET Framework 4.5. Siga el vínculo para instalarlo.", "learnMore": "Instrucciones", - "enospcError": "{0} está a punto de agotar los identificadores de archivo. Por favor siga el enlace de instrucciones para resolver este problema.", + "enospcError": "{0} es incapaz de observar los cambios de los archivos en este espacio de trabajo tan grande. Por favor siga las instrucciones en el link para resolver este problema.", "binFailed": "No se pudo mover \"{0}\" a la papelera de reciclaje", "trashFailed": "No se pudo mover '{0}' a la papelera" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json index 7f057c36490..69847e82751 100644 --- a/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Recurso de archivo no válido ({0})", "fileIsDirectoryError": "Archivo es el directorio", "fileNotModifiedError": "Archivo no modificado desde", - "fileTooLargeForHeapError": "El tamaño del archivo excede el límite de memoria de la ventana, intente ejecutarlo con --max-memory=NUEVOTAMAÑO", "fileTooLargeError": "Archivo demasiado grande para abrirlo", "fileNotFoundError": "Archivo no encontrado ({0})", "fileBinaryError": "El archivo parece ser binario y no se puede abrir como texto", diff --git a/i18n/esn/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/esn/src/vs/workbench/services/progress/browser/progressService2.i18n.json index d599700ac22..07bc99d803d 100644 --- a/i18n/esn/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/esn/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1} ", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Cancelar" } \ No newline at end of file diff --git a/i18n/fra/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/fra/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..56a7e4e867e --- /dev/null +++ b/i18n/fra/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "Serveur de langage CSS", + "folding.start": "Début de la région repliable", + "folding.end": "Fin de la région repliable" +} \ No newline at end of file diff --git a/i18n/fra/extensions/css-language-features/package.i18n.json b/i18n/fra/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..8ce650a48c0 --- /dev/null +++ b/i18n/fra/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Fonctionnalités de langage CSS", + "description": "Fournit une prise en charge riche de langage pour les fichiers CSS, LESS et SCSS", + "css.title": "CSS", + "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", + "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.trace.server.desc": "Trace la communication entre VS Code et le serveur de langage CSS.", + "css.validate.title": "Contrôle la validation CSS et la gravité des problèmes.", + "css.validate.desc": "Active ou désactive toutes les validations", + "less.title": "LESS", + "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", + "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.title": "Contrôle la validation LESS et la gravité des problèmes.", + "less.validate.desc": "Active ou désactive toutes les validations", + "scss.title": "SCSS (Sass)", + "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", + "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.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.title": "Contrôle la validation SCSS et la gravité des problèmes.", + "scss.validate.desc": "Active ou désactive toutes les validations", + "less.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", + "scss.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", + "css.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", + "css.colorDecorators.enable.deprecationMessage": "Le paramètre 'css.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'.", + "scss.colorDecorators.enable.deprecationMessage": "Le paramètre 'scss.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'.", + "less.colorDecorators.enable.deprecationMessage": "Le paramètre 'less.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'." +} \ No newline at end of file diff --git a/i18n/fra/extensions/css/package.i18n.json b/i18n/fra/extensions/css/package.i18n.json index 8ce650a48c0..35229bd6699 100644 --- a/i18n/fra/extensions/css/package.i18n.json +++ b/i18n/fra/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Fonctionnalités de langage CSS", - "description": "Fournit une prise en charge riche de langage pour les fichiers CSS, LESS et SCSS", - "css.title": "CSS", - "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", - "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.trace.server.desc": "Trace la communication entre VS Code et le serveur de langage CSS.", - "css.validate.title": "Contrôle la validation CSS et la gravité des problèmes.", - "css.validate.desc": "Active ou désactive toutes les validations", - "less.title": "LESS", - "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", - "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.title": "Contrôle la validation LESS et la gravité des problèmes.", - "less.validate.desc": "Active ou désactive toutes les validations", - "scss.title": "SCSS (Sass)", - "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.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.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", - "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.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.title": "Contrôle la validation SCSS et la gravité des problèmes.", - "scss.validate.desc": "Active ou désactive toutes les validations", - "less.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", - "scss.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", - "css.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", - "css.colorDecorators.enable.deprecationMessage": "Le paramètre 'css.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'.", - "scss.colorDecorators.enable.deprecationMessage": "Le paramètre 'scss.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'.", - "less.colorDecorators.enable.deprecationMessage": "Le paramètre 'less.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'." + ] } \ No newline at end of file diff --git a/i18n/fra/extensions/emmet/package.i18n.json b/i18n/fra/extensions/emmet/package.i18n.json index 498ecb9bffd..f4abe170d6a 100644 --- a/i18n/fra/extensions/emmet/package.i18n.json +++ b/i18n/fra/extensions/emmet/package.i18n.json @@ -59,5 +59,6 @@ "emmetPreferencesCssWebkitProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'webkit' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'webkit'.", "emmetPreferencesCssMozProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'moz' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'moz'.", "emmetPreferencesCssOProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'o' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'o'.", - "emmetPreferencesCssMsProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'ms' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'ms'." + "emmetPreferencesCssMsProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'ms' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'ms'.", + "emmetPreferencesCssFuzzySearchMinScore": "La note minimale (de 0 à 1) que la correspondance de l'abréviation (fuzzy-matched) devrait atteindre. Des valeurs plus faibles peuvent produire de nombreuses correspondances de faux-positifs, des valeurs plus élevées peuvent réduire les correspondances possibles." } \ No newline at end of file diff --git a/i18n/fra/extensions/git/out/commands.i18n.json b/i18n/fra/extensions/git/out/commands.i18n.json index d64a35734d2..bc93fe05e88 100644 --- a/i18n/fra/extensions/git/out/commands.i18n.json +++ b/i18n/fra/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "OK", "push with tags success": "Envoyé (push) avec des balises.", "pick remote": "Choisissez un dépôt distant où publier la branche '{0}' :", - "sync is unpredictable": "Cette action effectue un transfert (Push) et un tirage (Pull) des validations à destination et en provenance de '{0}'.", "never again": "OK, Ne plus afficher", "no remotes to publish": "Votre dépôt n'a aucun dépôt distant configuré pour une publication.", "no changes stash": "Aucune modification à remiser (stash).", diff --git a/i18n/fra/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/fra/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..9d334931d10 --- /dev/null +++ b/i18n/fra/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "Serveur de langage HTML", + "folding.start": "Début de la région repliable", + "folding.end": "Fin de la région repliable" +} \ No newline at end of file diff --git a/i18n/fra/extensions/html-language-features/package.i18n.json b/i18n/fra/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..d94c280aaad --- /dev/null +++ b/i18n/fra/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Fonctionnalités de langage HTML", + "description": "Fournit une prise en charge riche de langage pour HTML, Razor et les fichiers Handlebar.", + "html.format.enable.desc": "Activer/désactiver le formateur HTML par défaut.", + "html.format.wrapLineLength.desc": "Nombre maximal de caractères par ligne (0 = désactiver).", + "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.contentUnformatted.desc": "Liste des balises, séparées par des virgules, dont le contenu ne doit pas être remis en forme. 'null' correspond par défaut à toutes les balises 'pre'.", + "html.format.indentInnerHtml.desc": "Mettez en retrait les sections et .", + "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.maxPreserveNewLines.desc": "Nombre maximal de sauts de ligne à conserver dans un bloc. Utilisez 'null' pour indiquer une valeur illimitée.", + "html.format.indentHandlebars.desc": "Mettez en forme et en retrait {{#foo}}, ainsi que {{/foo}}.", + "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.wrapAttributes.desc": "Retour à la ligne des attributs.", + "html.format.wrapAttributes.auto": "Retour automatique à la ligne des attributs uniquement en cas de dépassement de la longueur de la ligne.", + "html.format.wrapAttributes.force": "Retour automatique à la ligne de chaque attribut, sauf le premier.", + "html.format.wrapAttributes.forcealign": "Retour automatique à la ligne de chaque attribut, sauf le premier, avec maintien de l'alignement.", + "html.format.wrapAttributes.forcemultiline": "Retour automatique à la ligne de chaque attribut.", + "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.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.", + "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.trace.server.desc": "Trace la communication entre VS Code et le serveur de langage HTML.", + "html.validate.scripts": "Configure la validation des scripts incorporés par la prise en charge du langage HTML intégré.", + "html.validate.styles": "Configure la validation des styles incorporés par la prise en charge du langage HTML intégré.", + "html.autoClosingTags": "Activez/désactivez la fermeture automatique des balises HTML." +} \ 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 d206c104a1a..23dcd2b8cfb 100644 --- a/i18n/fra/extensions/html/package.i18n.json +++ b/i18n/fra/extensions/html/package.i18n.json @@ -6,29 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Fonctionnalités de langage HTML", - "description": "Fournit une prise en charge riche de langage pour HTML, Razor et les fichiers Handlebar.", - "html.format.enable.desc": "Activer/désactiver le formateur HTML par défaut.", - "html.format.wrapLineLength.desc": "Nombre maximal de caractères par ligne (0 = désactiver).", - "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.contentUnformatted.desc": "Liste des balises, séparées par des virgules, dont le contenu ne doit pas être remis en forme. 'null' correspond par défaut à toutes les balises 'pre'.", - "html.format.indentInnerHtml.desc": "Mettez en retrait les sections et .", - "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.maxPreserveNewLines.desc": "Nombre maximal de sauts de ligne à conserver dans un bloc. Utilisez 'null' pour indiquer une valeur illimitée.", - "html.format.indentHandlebars.desc": "Mettez en forme et en retrait {{#foo}}, ainsi que {{/foo}}.", - "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.wrapAttributes.desc": "Retour à la ligne des attributs.", - "html.format.wrapAttributes.auto": "Retour automatique à la ligne des attributs uniquement en cas de dépassement de la longueur de la ligne.", - "html.format.wrapAttributes.force": "Retour automatique à la ligne de chaque attribut, sauf le premier.", - "html.format.wrapAttributes.forcealign": "Retour automatique à la ligne de chaque attribut, sauf le premier, avec maintien de l'alignement.", - "html.format.wrapAttributes.forcemultiline": "Retour automatique à la ligne de chaque attribut.", - "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.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.", - "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.trace.server.desc": "Trace la communication entre VS Code et le serveur de langage HTML.", - "html.validate.scripts": "Configure la validation des scripts incorporés par la prise en charge du langage HTML intégré.", - "html.validate.styles": "Configure la validation des styles incorporés par la prise en charge du langage HTML intégré.", - "html.experimental.syntaxFolding": "Active/désactive les marqueurs de réduction en fonction de la syntaxe.", - "html.autoClosingTags": "Activez/désactivez la fermeture automatique des balises HTML." + "displayName": "Notions de base du langage HTML", + "description": "Fournit la coloration syntaxique, la correspondance des balises d'ouverture et de fermeture et des extraits de code dans les fichiers HTML." } \ No newline at end of file diff --git a/i18n/fra/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/fra/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..bd80392eb07 --- /dev/null +++ b/i18n/fra/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "Serveur de langage JSON" +} \ No newline at end of file diff --git a/i18n/fra/extensions/json-language-features/package.i18n.json b/i18n/fra/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..9b182858ced --- /dev/null +++ b/i18n/fra/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Fonctionnalités de langage JSON", + "description": "Fournit une prise en charge de langage pour les fichiers JSON", + "json.schemas.desc": "Associer les schémas aux fichiers JSON dans le projet actif", + "json.schemas.url.desc": "URL de schéma ou chemin relatif d'un schéma dans le répertoire 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.format.enable.desc": "Activer/désactiver le formateur JSON par défaut (nécessite un redémarrage)", + "json.tracing.desc": "Trace la communication entre VS Code et le serveur de langage JSON.", + "json.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", + "json.colorDecorators.enable.deprecationMessage": "Le paramètre 'json.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'." +} \ 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 9eda719884e..91f8d80320a 100644 --- a/i18n/fra/extensions/json/package.i18n.json +++ b/i18n/fra/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Fonctionnalités de langage JSON", - "description": "Fournit une prise en charge de langage pour les fichiers JSON", - "json.schemas.desc": "Associer les schémas aux fichiers JSON dans le projet actif", - "json.schemas.url.desc": "URL de schéma ou chemin relatif d'un schéma dans le répertoire 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.format.enable.desc": "Activer/désactiver le formateur JSON par défaut (nécessite un redémarrage)", - "json.tracing.desc": "Trace la communication entre VS Code et le serveur de langage JSON.", - "json.colorDecorators.enable.desc": "Active ou désactive les éléments décoratifs de couleurs", - "json.colorDecorators.enable.deprecationMessage": "Le paramètre 'json.colorDecorators.enable' a été déprécié en faveur de 'editor.colorDecorators'.", - "json.experimental.syntaxFolding": "Active/désactive les marqueurs de réduction en fonction de la syntaxe." + "displayName": "Bases du langage JSON", + "description": "Fournit la coloration syntaxique et la correspondance des parenthèses dans les fichiers JSON." } \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/fra/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..69d5cb1c1f2 --- /dev/null +++ b/i18n/fra/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "Impossible de charger 'markdown.styles' : {0}" +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/fra/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..9e9f654e2f9 --- /dev/null +++ b/i18n/fra/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Aperçu] {0}", + "previewTitle": "Prévisualiser {0}" +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/fra/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..38a6bf3c24e --- /dev/null +++ b/i18n/fra/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "Du contenu a été désactivé dans ce document", + "preview.securityMessage.title": "Le contenu potentiellement dangereux ou précaire a été désactivé dans l’aperçu du format markdown. Modifier le paramètre de sécurité Aperçu Markdown afin d’autoriser les contenus non sécurisés ou activer les scripts", + "preview.securityMessage.label": "Avertissement de sécurité de contenu désactivé" +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-language-features/out/security.i18n.json b/i18n/fra/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..29ca6d0b4cb --- /dev/null +++ b/i18n/fra/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Strict", + "strict.description": "Charger uniquement le contenu sécurisé.", + "insecureContent.title": "Autoriser le contenu non sécurisé", + "insecureContent.description": "Activer le chargement de contenu sur http", + "disable.title": "Désactiver", + "disable.description": "Autorisez tout le contenu et l’exécution des scripts. Non recommandé", + "moreInfo.title": "Informations", + "enableSecurityWarning.title": "Activer l'aperçu d'avertissements de sécurité pour cet espace de travail", + "disableSecurityWarning.title": "Désactiver l'aperçu d'avertissements de sécurité pour cet espace de travail", + "toggleSecurityWarning.description": "N'affecte pas le niveau de sécurité de contenu", + "preview.showPreviewSecuritySelector.title": "Sélectionner les paramètres de sécurité pour les aperçus Markdown dans cet espace de travail" +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-language-features/package.i18n.json b/i18n/fra/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..f5aede8507b --- /dev/null +++ b/i18n/fra/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Fonctionnalités de langage Markdown", + "description": "Fournit une prise en charge riche de langage pour Markdown", + "markdown.preview.breaks.desc": "Définit l'affichage des sauts de ligne dans l'aperçu Markdown. Si la valeur est 'true', crée un
pour chaque nouvelle ligne.", + "markdown.preview.linkify": "Activez ou désactivez la conversion de texte de type URL en liens dans l’aperçu Markdown.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Double-cliquez dans l'aperçu Markdown pour passer à l'éditeur.", + "markdown.preview.fontFamily.desc": "Contrôle la famille de polices utilisée dans l'aperçu Markdown.", + "markdown.preview.fontSize.desc": "Contrôle la taille de police en pixels utilisée dans l'aperçu Markdown.", + "markdown.preview.lineHeight.desc": "Contrôle la hauteur de ligne utilisée dans l'aperçu Markdown. Ce nombre est relatif à la taille de police.", + "markdown.preview.markEditorSelection.desc": "Permet de marquer la sélection actuelle de l'éditeur dans l'aperçu Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Lors du défilement de l'aperçu markdown, actualiser l’affichage de l’éditeur.", + "markdown.preview.scrollPreviewWithEditor.desc": "Lors du défilement d’un éditeur markdow, actualiser l’affichage de l’aperçu.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Déprécié] Fait défiler l'aperçu Markdown pour révéler la ligne actuellement sélectionnée dans l'éditeur.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Ce paramètre a été remplacé par 'markdown.preview.scrollPreviewWithEditor' et n'a plus aucun effet.", + "markdown.preview.title": "Ouvrir l'aperçu", + "markdown.previewFrontMatter.dec": "Définit comment les pages liminaires YAML doivent être affichées dans l'aperçu Markdown. L'option 'hide' supprime les pages liminaires. Sinon, elles sont traitées comme du contenu Markdown.", + "markdown.previewSide.title": "Ouvrir l'aperçu sur le côté", + "markdown.showLockedPreviewToSide.title": "Ouvrir l'aperçu verrrouillé sur le côté", + "markdown.showSource.title": "Afficher la source", + "markdown.styles.dec": "Liste d'URL ou de chemins locaux de feuilles de style CSS à utiliser dans l'aperçu Markdown. Les chemins relatifs sont interprétés par rapport au dossier ouvert dans l'explorateur. S'il n'y a aucun dossier ouvert, ils sont interprétés par rapport à l'emplacement du fichier Markdown. Tous les signes '\\' doivent être écrits sous la forme '\\\\'.", + "markdown.showPreviewSecuritySelector.title": "Changer les paramètres de sécurité de l'aperçu", + "markdown.trace.desc": "Active la journalisation du débogage pour l'extension Markdown.", + "markdown.preview.refresh.title": "Actualiser l'aperçu", + "markdown.preview.toggleLock.title": "Activer/désactiver le verrouillage de l'aperçu" +} \ No newline at end of file diff --git a/i18n/fra/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/fra/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..b20a0679e61 --- /dev/null +++ b/i18n/fra/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Autorisez-vous l'exécution de {0} (défini en tant que paramètre d'espace de travail) pour effectuer une validation lint sur les fichiers PHP ?", + "php.yes": "Autoriser", + "php.no": "Interdire", + "wrongExecutable": "Impossible d'effectuer la validation, car {0} n'est pas un exécutable PHP valide. Utilisez le paramètre 'php.validate.executablePath' pour configurer l'exécutable PHP.", + "noExecutable": "Impossible d'effectuer la validation, car aucun exécutable PHP n'est défini. Utilisez le paramètre 'php.validate.executablePath' pour configurer l'exécutable PHP.", + "unknownReason": "Échec de l'exécution de php avec le chemin : {0}. Raison inconnue." +} \ No newline at end of file diff --git a/i18n/fra/extensions/php-language-features/package.i18n.json b/i18n/fra/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..f69ece2bdd4 --- /dev/null +++ b/i18n/fra/extensions/php-language-features/package.i18n.json @@ -0,0 +1,17 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Configure l'activation ou la désactivation des suggestions de langage PHP intégrées. La fonctionnalité de prise en charge suggère les variables globales et les variables de session PHP.", + "configuration.validate.enable": "Activez/désactivez la validation PHP intégrée.", + "configuration.validate.executablePath": "Pointe vers l'exécutable PHP.", + "configuration.validate.run": "Spécifie si linter est exécuté au moment de l'enregistrement ou de la saisie.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "Interdire l'exécutable de validation PHP (défini comme paramètre d'espace de travail)", + "displayName": "Fonctionnalités de langage PHP" +} \ No newline at end of file diff --git a/i18n/fra/extensions/php/package.i18n.json b/i18n/fra/extensions/php/package.i18n.json index 38ff61530b7..20a77bf9902 100644 --- a/i18n/fra/extensions/php/package.i18n.json +++ b/i18n/fra/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Configure l'activation ou la désactivation des suggestions de langage PHP intégrées. La fonctionnalité de prise en charge suggère les variables globales et les variables de session PHP.", - "configuration.validate.enable": "Activez/désactivez la validation PHP intégrée.", - "configuration.validate.executablePath": "Pointe vers l'exécutable PHP.", - "configuration.validate.run": "Spécifie si linter est exécuté au moment de l'enregistrement ou de la saisie.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Interdire l'exécutable de validation PHP (défini comme paramètre d'espace de travail)", - "displayName": "Fonctionnalités du langage PHP", - "description": "Fournit IntelliSense, le linting et les concepts de base de langage pour les fichiers PHP." + "displayName": "Fonctionnalités du langage PHP" } \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 4372aeafc54..a1fd534cd5e 100644 --- a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Résultats introuvables", "settingsSearchIssue": "Problème de paramètres de recherche", "bugReporter": "Rapporteur de bogue", - "performanceIssue": "Problème de performance", "featureRequest": "Demande de fonctionnalité", + "performanceIssue": "Problème de performance", "stepsToReproduce": "Étapes à reproduire", "bugDescription": "Partagez les étapes nécessaires pour reproduire fidèlement le problème. Veuillez inclure les résultats réels et prévus. Nous prenons en charge la syntaxe GitHub Markdown. Vous pourrez éditer votre problème et ajouter des captures d'écran lorsque nous le prévisualiserons sur GitHub.", "performanceIssueDesciption": "Quand ce problème de performance s'est-il produit ? Se produit-il au démarrage ou après une série d'actions spécifiques ? Nous prenons en charge la syntaxe Markdown de GitHub. Vous pourrez éditer votre problème et ajouter des captures d'écran lorsque nous le prévisualiserons sur GitHub.", diff --git a/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json index f429643db53..3b0bc493515 100644 --- a/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,7 @@ "warningBorder": "Couleur de bordure de la ligne ondulée marquant les avertissements dans l'éditeur.", "infoForeground": "Couleur de premier plan de la ligne ondulée marquant les informations dans l'éditeur.", "infoBorder": "Couleur de bordure de la ligne ondulée marquant les informations dans l'éditeur.", - "overviewRulerRangeHighlight": "Couleur du marqueur de la règle d'aperçu pour la mise en évidence de plage.", + "overviewRulerRangeHighlight": "Couleur du marqueur de la règle d'aperçu pour des plages mises en surbrillance. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.", "overviewRuleError": "Couleur du marqueur de la règle d'aperçu pour les erreurs.", "overviewRuleWarning": "Couleur du marqueur de la règle d'aperçu pour les avertissements.", "overviewRuleInfo": "Couleur du marqueur de la règle d'aperçu pour les informations." diff --git a/i18n/fra/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/fra/src/vs/editor/contrib/gotoError/gotoError.i18n.json index d76f9865b2b..f73761c7817 100644 --- a/i18n/fra/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/fra/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Aller au problème suivant (Erreur, Avertissement, Info)", - "markerAction.previous.label": "Aller au problème précédent (Erreur, Avertissement, Info)", - "editorMarkerNavigationError": "Couleur d'erreur du widget de navigation dans les marqueurs de l'éditeur.", - "editorMarkerNavigationWarning": "Couleur d'avertissement du widget de navigation dans les marqueurs de l'éditeur.", - "editorMarkerNavigationInfo": "Couleur d’information du widget de navigation du marqueur de l'éditeur.", - "editorMarkerNavigationBackground": "Arrière-plan du widget de navigation dans les marqueurs de l'éditeur." + "markerAction.previous.label": "Aller au problème précédent (Erreur, Avertissement, Info)" } \ No newline at end of file diff --git a/i18n/fra/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/fra/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..9d9cfafff38 --- /dev/null +++ b/i18n/fra/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Couleur d'erreur du widget de navigation dans les marqueurs de l'éditeur.", + "editorMarkerNavigationWarning": "Couleur d'avertissement du widget de navigation dans les marqueurs de l'éditeur.", + "editorMarkerNavigationInfo": "Couleur d’information du widget de navigation du marqueur de l'éditeur.", + "editorMarkerNavigationBackground": "Arrière-plan du widget de navigation dans les marqueurs de l'éditeur." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..eda9d2905d6 --- /dev/null +++ b/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "Dimanche", + "Monday": "Lundi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi", + "Thursday": "Jeudi", + "Friday": "Vendredi", + "Saturday": "Samedi", + "SeptemberShort": "Sep", + "OctoberShort": "Oct", + "NovemberShort": "Nov", + "DecemberShort": "Déc" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/fra/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 01d606a017d..0eab06eb685 100644 --- a/i18n/fra/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/fra/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,8 @@ "wordHighlightStrong": "Couleur d'arrière-plan d'un symbole durant l'accès en écriture, par exemple l'écriture dans une variable. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes.", "wordHighlightBorder": "Couleur de bordure d'un symbole durant l'accès en lecture, par exemple la lecture d'une variable.", "wordHighlightStrongBorder": "Couleur de bordure d'un symbole durant l'accès en écriture, par exemple l'écriture dans une variable.", - "overviewRulerWordHighlightForeground": "Couleur du marqueur de la règle d'aperçu pour la mise en évidence de symbole.", - "overviewRulerWordHighlightStrongForeground": "Couleur du marqueur de la règle d'aperçu la mise en évidence de symbole d’accès en écriture.", + "overviewRulerWordHighlightForeground": "Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de symbole. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.", + "overviewRulerWordHighlightStrongForeground": "Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de symbole d'accès en écriture. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.", "wordHighlight.next.label": "Aller à la prochaine mise en évidence de symbole", "wordHighlight.previous.label": "Aller à la mise en évidence de symbole précédente" } \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/fra/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..40bf02755c5 --- /dev/null +++ b/i18n/fra/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 fichier supplémentaire non affiché", + "moreFiles": "...{0} fichiers supplémentaires non affichés" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/fra/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..2f086ccc7a3 --- /dev/null +++ b/i18n/fra/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Annuler" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 705af653f74..65d0af43d0c 100644 --- a/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,15 @@ "errorInstallingDependencies": "Erreur lors de l'installation des dépendances. {0}", "MarketPlaceDisabled": "Le marketplace n’est pas activé", "removeError": "Erreur lors de la suppression de l’extension : {0}. Veuillez quitter et relancer VS Code avant de réessayer.", - "Not Market place extension": "Seules les Extensions de Marketplace peuvent être réinstallées", + "Not a Marketplace extension": "Seules les Extensions de Marketplace peuvent être réinstallées", "notFoundCompatible": "Impossible d’installer '{0}'; Il n’y a pas de version disponible compatible avec VS Code '{1}'.", "malicious extension": "Impossible d’installer l'extension car elle a été signalée comme problématique.", "notFoundCompatibleDependency": "Installation impossible car l'extension dépendante '{0}' compatible avec la version actuelle '{1}' de VS Code est introuvable.", "quitCode": "Impossible d’installer l’extension. Veuillez s’il vous plaît quitter et redémarrer VS Code avant de le réinstaller.", "exitCode": "Impossible d’installer l’extension. Veuillez s’il vous plaît sortir et redémarrer VS Code avant de le réinstaller.", "uninstallDependeciesConfirmation": "Voulez-vous désinstaller uniquement '{0}' ou également ses dépendances ?", - "uninstallOnly": "Uniquement", - "uninstallAll": "Tout", + "uninstallOnly": "Extension uniquement", + "uninstallAll": "Tout désinstaller", "uninstallConfirmation": "Voulez-vous vraiment désinstaller '{0}' ?", "ok": "OK", "singleDependentError": "Impossible de désinstaller l'extension '{0}'. L'extension '{1}' en dépend.", diff --git a/i18n/fra/src/vs/platform/list/browser/listService.i18n.json b/i18n/fra/src/vs/platform/list/browser/listService.i18n.json index e512ed15ca9..79767f92ca9 100644 --- a/i18n/fra/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/fra/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Le modificateur à utiliser pour ajouter un élément à une multi-sélection avec la souris (par exemple dans l’Explorateur, des éditeurs ouverts et scm view). 'ctrlCmd' mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS. Les mouvements de souris 'Ouvrir sur le côté', si supportés, s'adaptent pour ne pas entrer en conflit avec le modificateur multiselect.", "openMode.singleClick": "Ouvre les éléments sur un simple clic de souris.", "openMode.doubleClick": "Ouvre les éléments sur un double clic de souris.", - "openModeModifier": "Contrôle l’ouverture des éléments dans les arbres et listes à l’aide de la souris (si pris en charge). Mettre la valeur `singleClick` pour ouvrir des éléments avec un simple clic de souris et `doubleClick` pour ouvrir uniquement via un double-clic de souris. Pour les parents ayant des enfants dans les arbres, ce paramètre contrôle si un simple clic développe le parent ou un double-clic. Notez que certains arbres et listes peuvent choisir d’ignorer ce paramètre, si ce n’est pas applicable. " + "openModeModifier": "Contrôle l’ouverture des éléments dans les arbres et listes à l’aide de la souris (si pris en charge). Mettre la valeur `singleClick` pour ouvrir des éléments avec un simple clic de souris et `doubleClick` pour ouvrir uniquement via un double-clic de souris. Pour les parents ayant des enfants dans les arbres, ce paramètre contrôle si un simple clic développe le parent ou un double-clic. Notez que certains arbres et listes peuvent choisir d’ignorer ce paramètre, si ce n’est pas applicable. ", + "horizontalScrolling setting": "Contrôle si les arborescences prennent en charge le défilement horizontal dans le plan de travail." } \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/markers/common/markers.i18n.json b/i18n/fra/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..634b6c772a7 --- /dev/null +++ b/i18n/fra/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Erreur", + "sev.warning": "Avertissement", + "sev.info": "Informations" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/fra/src/vs/platform/theme/common/colorRegistry.i18n.json index a31359353cc..23d1737cd7a 100644 --- a/i18n/fra/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/fra/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -93,6 +93,6 @@ "overviewRulerCurrentContentForeground": "Premier plan de la règle d'aperçu actuelle pour les conflits de fusion inline.", "overviewRulerIncomingContentForeground": "Premier plan de la règle d'aperçu entrante pour les conflits de fusion inline.", "overviewRulerCommonContentForeground": "Arrière-plan de la règle d'aperçu de l'ancêtre commun dans les conflits de fusion inline.", - "overviewRulerFindMatchForeground": "Couleur du marqueur de la règle d'aperçu pour rechercher des correspondances.", - "overviewRulerSelectionHighlightForeground": "Couleur du marqueur de la règle d'aperçu pour la mise en évidence de la sélection." + "overviewRulerFindMatchForeground": "Couleur du marqueur de la règle d'aperçu pour les correspondances trouvées. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.", + "overviewRulerSelectionHighlightForeground": "Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de sélection. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..5f508cf00b5 --- /dev/null +++ b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0} : {1}" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/fra/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..ba3f3014580 --- /dev/null +++ b/i18n/fra/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (Extension)" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 2bc5f99bcfc..1cdd98b12a7 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Focus sur le groupe suivant", "openToSide": "Ouvrir sur le côté", "closeEditor": "Fermer l'éditeur", + "closeOneEditor": "Fermer", "revertAndCloseActiveEditor": "Restaurer et fermer l'éditeur", "closeEditorsToTheLeft": "Fermer les éditeurs situés à gauche", "closeAllEditors": "Fermer tous les éditeurs", diff --git a/i18n/fra/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 5844230292f..628561d4d2c 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Fermer", "araLabelEditorActions": "Actions de l'éditeur" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json index b87604490e8..ef97b82ec54 100644 --- a/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,13 @@ "windowConfigurationTitle": "Fenêtre", "window.openFilesInNewWindow.on": "Les fichiers s'ouvrent dans une nouvelle fenêtre", "window.openFilesInNewWindow.off": "Les fichiers s'ouvrent dans la fenêtre du dossier conteneur ouvert ou dans la dernière fenêtre active", - "window.openFilesInNewWindow.default": "Les fichiers s'ouvrent dans la fenêtre du dossier conteneur ouvert ou dans la dernière fenêtre active, sauf s'ils sont ouverts via le Dock ou depuis le Finder (macOS uniquement)", - "openFilesInNewWindow": "Contrôle si les fichiers doivent s'ouvrir dans une nouvelle fenêtre.\n- default : les fichiers s'ouvrent dans la fenêtre du dossier conteneur ouvert ou dans la dernière fenêtre active, sauf s'ils sont ouverts via le Dock ou depuis le Finder (macOS uniquement)\n- on : les fichiers s'ouvrent dans une nouvelle fenêtre\n- off : les fichiers s'ouvrent dans la fenêtre du dossier conteneur ouvert ou dans la dernière fenêtre active\nNotez que dans certains cas, ce paramètre est ignoré (par exemple, quand vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", + "window.openFilesInNewWindow.defaultMac": "Les fichiers s'ouvriront dans la fenêtre avec le dossier des fichiers ouvert ou la dernière fenêtre active, à moins qu'ils ne soient ouverts via le Dock ou depuis Finder.", + "window.openFilesInNewWindow.default": "Les fichiers s'ouvriront dans une nouvelle fenêtre, à moins qu'ils ne soient sélectionnés dans l'application (par ex. via le menu Fichier)", "window.openFoldersInNewWindow.on": "Les dossiers s'ouvrent dans une nouvelle fenêtre", "window.openFoldersInNewWindow.off": "Les dossiers remplacent la dernière fenêtre active", "window.openFoldersInNewWindow.default": "Les dossiers s'ouvrent dans une nouvelle fenêtre, sauf si un dossier est sélectionné depuis l'application (par exemple, via le menu Fichier)", "openFoldersInNewWindow": "Contrôle si les dossiers doivent s'ouvrir dans une nouvelle fenêtre ou remplacer la dernière fenêtre active.\n- default : les dossiers s'ouvrent dans une nouvelle fenêtre, sauf si un dossier est sélectionné depuis l'application (par exemple, via le menu Fichier)\n- on : les dossiers s'ouvrent dans une nouvelle fenêtre\n- off : les dossiers remplacent la dernière fenêtre active\nNotez que dans certains cas, ce paramètre est ignoré (par exemple, quand vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", + "window.openWithoutArgumentsInNewWindow.on": "Ouvrir une nouvelle fenêtre vide", "window.reopenFolders.all": "Rouvre toutes les fenêtres.", "window.reopenFolders.folders": "Rouvrir tous les dossiers. Les espaces de travail vides ne seront pas restaurées.", "window.reopenFolders.one": "Rouvre la dernière fenêtre active.", @@ -58,7 +59,6 @@ "restoreWindows": "Contrôle comment les fenêtres seront rouvertes après un redémarrage. Sélectionner 'none' pour toujours démarrer avec un espace de travail vide, 'one' pour rouvrir la dernière fenêtre avec laquelle vous avez travaillé, 'folders' pour rouvrir toutes les fenêtres qui avaient des dossiers ouverts ou 'all' pour rouvrir toutes les fenêtres de votre dernière session.", "restoreFullscreen": "Contrôle si une fenêtre doit être restaurée en mode plein écran si elle a été fermée dans ce mode.", "zoomLevel": "Modifiez le niveau de zoom de la fenêtre. La taille d'origine est 0. Chaque incrément supérieur (exemple : 1) ou inférieur (exemple : -1) représente un zoom 20 % plus gros ou plus petit. Vous pouvez également entrer des décimales pour changer le niveau de zoom avec une granularité plus fine.", - "title": "Contrôle le titre de la fenêtre en fonction sur l’éditeur actif. Les variables sont remplacés selon le contexte : ${activeEditorShort} : le nom du fichier (ex: monFichier.txt) ${activeEditorMedium} : le chemin d’accès au fichier par rapport au dossier de l’espace de travail (ex: monDossier/monFichier.txt) ${activeEditorLong} : le chemin d’accès complet du fichier (par exemple / Users/Developpement/monDossier/monFichier.txt) ${folderName} : nom du dossier de l’espace de travail auquel le fichier appartient (ex: mondossier) ${folderPath} : chemin d’accès du dossier de l'espace de travail auquel le fichier appartient (ex: /Users/Developpement/monDossier) {$ rootName} : nom de l’espace de travail (:. monDossier ou monEspaceDeTravail) ${rootPath} : chemin d’accès de l’espace de travail (ex: /Users/Developpement/monEspaceDeTravail) ${appName} : ex. VS Code ${dirty} : un indicateur si l’éditeur actif est modifié ${separator} : un séparateur conditionnel (\" - \") qui ne s'affiche que quand ils sont entourés par des variables avec des valeurs", "window.newWindowDimensions.default": "Permet d'ouvrir les nouvelles fenêtres au centre de l'écran.", "window.newWindowDimensions.inherit": "Permet d'ouvrir les nouvelles fenêtres avec la même dimension que la dernière fenêtre active.", "window.newWindowDimensions.maximized": "Permet d'ouvrir les nouvelles fenêtres de manière agrandie.", 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 a1ba3461445..c216d242008 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 @@ -24,16 +24,12 @@ "restartFrame": "Redémarrer le frame", "removeBreakpoint": "Supprimer un point d'arrêt", "removeAllBreakpoints": "Supprimer tous les points d'arrêt", - "enableBreakpoint": "Activer le point d'arrêt", - "disableBreakpoint": "Désactiver le point d'arrêt", "enableAllBreakpoints": "Activer tous les points d'arrêt", "disableAllBreakpoints": "Désactiver tous les points d'arrêt", "activateBreakpoints": "Activer les points d'arrêt", "deactivateBreakpoints": "Désactiver les points d'arrêt", "reapplyAllBreakpoints": "Réappliquer tous les points d'arrêt", "addFunctionBreakpoint": "Ajouter un point d'arrêt sur fonction", - "addConditionalBreakpoint": "Ajouter un point d'arrêt conditionnel...", - "editConditionalBreakpoint": "Modifier un point d'arrêt...", "setValue": "Définir la valeur", "addWatchExpression": "Ajouter une expression", "editWatchExpression": "Modifier l'expression", diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..bd3746f483c --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Arrêt quand le nombre d'accès est atteint. 'Entrée' pour accepter ou 'Échap' pour annuler.", + "breakpointWidgetExpressionPlaceholder": "Arrêt quand l'expression prend la valeur true. 'Entrée' pour accepter ou 'Échap' pour annuler.", + "breakpointWidgetHitCountAriaLabel": "Le programme s'arrête ici uniquement si le nombre d'accès est atteint. Appuyez sur Entrée pour accepter, ou sur Échap pour annuler.", + "breakpointWidgetAriaLabel": "Le programme s'arrête ici uniquement si cette condition a la valeur true. Appuyez sur Entrée pour accepter, ou sur Échap pour annuler.", + "expression": "Expression", + "hitCount": "Nombre d'accès" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 7e373cfa04c..2cdcf5ae1aa 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Modifier un point d'arrêt...", + "disableBreakpoint": "Désactiver le point d'arrêt", + "enableBreakpoint": "Activer le point d'arrêt", "removeBreakpoints": "Supprimer les points d'arrêt", "removeBreakpointOnColumn": "Supprimer le point d'arrêt de la colonne {0}", "removeLineBreakpoint": "Supprimer le point d'arrêt de la ligne", @@ -18,5 +21,6 @@ "enableBreakpoints": "Activer le point d'arrêt de la colonne {0}", "enableBreakpointOnLine": "Activer le point d'arrêt de la ligne", "addBreakpoint": "Ajouter un point d'arrêt", + "conditionalBreakpoint": "Ajouter un point d'arrêt conditionnel...", "addConfiguration": "Ajouter une configuration..." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 3e89fe28373..d6c47b100cd 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,6 +29,5 @@ "showErrors": "Afficher les erreurs", "noFolderWorkspaceDebugError": "Impossible de déboguer le fichier actif. Vérifiez qu'il est enregistré sur le disque et qu'une extension de débogage est installée pour ce type de fichier.", "cancel": "Annuler", - "DebugTaskNotFound": "preLaunchTask '{0}' introuvable.", - "taskNotTracked": "La tâche de prélancement '{0}' n'a pas pu être tracée." + "DebugTaskNotFound": "Tâche '{0}' introuvable." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..c68f4a91092 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,55 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Nom de l'extension", + "extension id": "Identificateur d'extension", + "builtin": "Intégrée", + "publisher": "Nom de l'éditeur", + "install count": "Nombre d'installations", + "rating": "Évaluation", + "repository": "Dépôt", + "license": "Licence", + "details": "Détails", + "contributions": "Contributions", + "changelog": "Journal des modifications", + "dependencies": "Dépendances", + "noReadme": "Aucun fichier README disponible.", + "noChangelog": "Aucun Changelog disponible.", + "noContributions": "Aucune contribution", + "noDependencies": "Aucune dépendance", + "settings": "Paramètres ({0})", + "setting name": "Nom", + "description": "Description", + "default": "Par défaut", + "debuggers": "Débogueurs ({0})", + "debugger name": "Nom", + "debugger type": "Type", + "views": "Vues ({0})", + "view id": "ID", + "view name": "Nom", + "view location": "Emplacement", + "localizations": "Localisations ({0})", + "localizations language name": "Nom de langue", + "localizations localized language name": "Nom de langue (localisé)", + "colorId": "Id", + "defaultDark": "Défaut pour le thème sombre", + "defaultLight": "Défaut pour le thème clair", + "defaultHC": "Défaut pour le thème de contraste élevé", + "JSON Validation": "Validation JSON ({0})", + "fileMatch": "Correspondance de fichier", + "commands": "Commandes ({0})", + "command name": "Nom", + "keyboard shortcuts": "Raccourcis clavier", + "menuContexts": "Contextes de menu", + "languages": "Langages ({0})", + "language id": "ID", + "language name": "Nom", + "file extensions": "Extensions de fichier", + "grammar": "Grammaire", + "snippets": "Extraits" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 518cd664a2e..557f45e5910 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Recommandées", "otherRecommendedExtensions": "Autres recommandations", "workspaceRecommendedExtensions": "Recommandations de l’espace de travail", - "builtInExtensions": "Intégrée", "searchExtensions": "Rechercher des extensions dans Marketplace", "sort by installs": "Trier par : nombre d'installations", "sort by rating": "Trier par : évaluation", diff --git a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 744c7215953..a31359c7486 100644 --- a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Êtes-vous sûr de vouloir supprimer les fichiers {0} suivants ?", "confirmMoveTrashMessageFolder": "Voulez-vous vraiment supprimer '{0}' et son contenu ?", "confirmMoveTrashMessageFile": "Voulez-vous vraiment supprimer '{0}' ?", - "undoBin": "Vous pouvez effectuer une restauration à partir de la Corbeille.", - "undoTrash": "Vous pouvez effectuer une restauration à partir de la Poubelle.", "doNotAskAgain": "Ne plus me demander", "confirmDeleteMessageMultiple": "Êtes-vous sûr de vouloir supprimer définitivement les fichiers {0} suivants ?", "confirmDeleteMessageFolder": "Voulez-vous vraiment supprimer définitivement '{0}' et son contenu ?", "confirmDeleteMessageFile": "Voulez-vous vraiment supprimer définitivement '{0}' ?", "irreversible": "Cette action est irréversible !", - "cancel": "Annuler", - "permDelete": "Supprimer définitivement", "importFiles": "Importer des fichiers", "confirmOverwrite": "Un fichier ou dossier portant le même nom existe déjà dans le dossier de destination. Voulez-vous le remplacer ?", "replaceButtonLabel": "&&Remplacer", diff --git a/i18n/fra/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..2af49cbd741 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Aperçu HTML" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/fra/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..eaf9eb82e46 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Entrée d'éditeur non valide." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..dfefdfa0bf8 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Développeur" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/fra/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..09dc4357050 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Ouvrir les outils de développement Webview", + "refreshWebviewLabel": "Recharger les Webviews" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 99d56e82804..76289731369 100644 --- a/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Oui", + "no": "Non", + "doNotAskAgain": "Ne plus me demander", "JsonSchema.locale": "Langue d'interface utilisateur (IU) à utiliser.", "vscode.extension.contributes.localizations": "Contribuer aux localisations de l’éditeur", "vscode.extension.contributes.localizations.languageId": "Id de la langue dans laquelle les chaînes d’affichage sont traduites.", diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..7e415dbd6de --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Copier" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..556e096a283 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Total de {0} problèmes", + "filteredProblems": "Affichage de {0} sur {1} problèmes" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..0f826a200bb --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Problèmes", + "tooltip.N": "{0} problèmes dans ce fichier", + "markers.showOnFile": "Afficher les erreurs & les avertissements sur les fichiers et dossiers." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..ced53cc49d4 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Affichage", + "problems.view.toggle.label": "Activer/désactiver les problèmes (Erreurs, Avertissements, Infos)", + "problems.view.focus.label": " Focus sur les problèmes (Erreurs, Avertissements, Infos)", + "problems.panel.configuration.title": "Affichage des problèmes", + "problems.panel.configuration.autoreveal": "Contrôle si l'affichage des problèmes doit automatiquement montrer les fichiers quand il les ouvre", + "markers.panel.title.problems": "Problèmes", + "markers.panel.aria.label.problems.tree": "Problèmes regroupés par fichiers", + "markers.panel.no.problems.build": "Aucun problème n'a été détecté dans l'espace de travail jusqu'à présent.", + "markers.panel.no.problems.filters": "Résultats introuvables avec les critères de filtre fournis", + "markers.panel.action.filter": "Filtrer les problèmes", + "markers.panel.filter.placeholder": "Filtrer par type ou texte", + "markers.panel.filter.errors": "erreurs", + "markers.panel.filter.warnings": "avertissements", + "markers.panel.filter.infos": "infos", + "markers.panel.single.error.label": "1 erreur", + "markers.panel.multiple.errors.label": "{0} erreurs", + "markers.panel.single.warning.label": "1 avertissement", + "markers.panel.multiple.warnings.label": "{0} avertissements", + "markers.panel.single.info.label": "1 info", + "markers.panel.multiple.infos.label": "{0} infos", + "markers.panel.single.unknown.label": "1 inconnu", + "markers.panel.multiple.unknowns.label": "{0} inconnus", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} avec {1} problèmes", + "errors.warnings.show.label": "Afficher les erreurs et les avertissements" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 675880ca4b7..e355577f0f7 100644 --- a/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Afficher le prochain Include Pattern de recherche", "previousSearchIncludePattern": "Afficher le précédent Include Pattern de recherche", - "nextSearchExcludePattern": "Afficher le prochain Exclude Pattern de recherche", - "previousSearchExcludePattern": "Afficher le précédent Exclude Pattern de recherche", "nextSearchTerm": "Afficher le terme de recherche suivant", "previousSearchTerm": "Afficher le terme de recherche précédent", "showSearchViewlet": "Afficher la zone de recherche", diff --git a/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json index 4cd20eea1e6..89db9e01119 100644 --- a/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Activer/désactiver les détails de la recherche", - "searchScope.includes": "fichiers à inclure", - "label.includes": "Modèles d'inclusion de recherche", - "searchScope.excludes": "fichiers à exclure", - "label.excludes": "Modèles d'exclusion de recherche", "replaceAll.confirmation.title": "Tout remplacer", "replaceAll.confirm.button": "&&Remplacer", "replaceAll.occurrence.file.message": "{0} occurrence remplacée dans {1} fichier par '{2}'.", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 25af594698d..c560e29a2d5 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "N'assigne la tâche à aucun groupe", "JsonSchema.tasks.group": "Définit le groupe d'exécution auquel la tâche appartient. Prend en charge \"build\" pour l'ajouter au groupe de génération et \"test\" pour l'ajouter au groupe de test.", "JsonSchema.tasks.type": "Définit si la tâche est exécutée comme un processus ou comme une commande à l’intérieur d’un shell.", + "JsonSchema.command": "Commande à exécuter. Il peut s'agir d'un programme externe ou d'une commande d'interpréteur de commandes.", + "JsonSchema.tasks.args": "Arguments passés à la commande quand cette tâche est appelée.", "JsonSchema.tasks.label": "L'étiquette de l’interface utilisateur de la tâche", "JsonSchema.version": "Numéro de version de la configuration.", "JsonSchema.tasks.identifier": "Identificateur défini par l'utilisateur pour référencer la tâche dans launch.json ou une clause dependsOn.", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index b418f7d92e5..61c4bc5cb90 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,10 @@ ], "tasksCategory": "Tâches", "ConfigureTaskRunnerAction.label": "Configurer une tâche", - "problems": "Problèmes", + "totalErrors": "{0} erreurs", + "totalWarnings": "{0} avertissements", + "totalInfos": "{0} infos", "building": "Génération...", - "manyMarkers": "99", "runningTasks": "Afficher les tâches en cours d'exécution", "tasks": "Tâches", "TaskSystem.noHotSwap": "Changer le moteur d’exécution de tâches avec une tâche active en cours d’exécution nécessite de recharger la fenêtre", @@ -46,8 +47,8 @@ "recentlyUsed": "tâches récemment utilisées", "configured": "tâches configurées", "detected": "tâches détectées", - "TaskService.ignoredFolder": "Les dossiers d’espace de travail suivants sont ignorés car ils utilisent task version 0.1.0 : ", "TaskService.notAgain": "Ne plus afficher", + "TaskService.ignoredFolder": "Les dossiers d’espace de travail suivants sont ignorés car ils utilisent task version 0.1.0 : ", "TaskService.pickRunTask": "Sélectionner la tâche à exécuter", "TaslService.noEntryToRun": "Aucune tâche à exécuter n'a été trouvée. Configurer les tâches...", "TaskService.fetchingBuildTasks": "Récupération des tâches de génération...", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index cc01c3fa1b2..d4389797bef 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Erreur : la configuration de la tâche '{0}' a besoin de la propriété '{1}'. La configuration de la tâche sera ignorée.", "ConfigurationParser.notCustom": "Erreur : la tâche n'est pas déclarée comme une tâche personnalisée. La configuration est ignorée.\n{0}\n", "ConfigurationParser.noTaskName": "Erreur : un tâche doit fournir une propriété label. La tâche va être ignorée.\n{0}\n", - "taskConfiguration.shellArgs": "Avertissement : la tâche '{0}' est une commande shell et un de ses arguments peut avoir des espaces non échappés. Afin d’assurer un échappement correct des guillemets dans la ligne de commande, veuillez fusionner les arguments dans la commande.", "taskConfiguration.noCommandOrDependsOn": "Erreur : La tâche '{0}' ne spécifie ni une commande, ni une propriété dependsOn. La tâche est ignorée. Sa définition est :\n{1}", "taskConfiguration.noCommand": "Erreur : La tâche '{0}' ne définit aucune commande. La tâche va être ignorée. Sa définition est :\n{1}", "TaskParse.noOsSpecificGlobalTasks": "Task Version 2.0.0 ne supporte pas les tâches spécifiques globales du système d'exploitation. Convertissez-les en une tâche en une commande spécifique du système d'exploitation. Les tâches concernées sont : {0}" diff --git a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 023dce563db..8ba26f8e07a 100644 --- a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Copier", + "split": "Diviser", "paste": "Coller", "selectAll": "Tout Sélectionner", - "clear": "Effacer", - "split": "Diviser" + "clear": "Effacer" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..68cda1a5f01 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Notes de publication : {0}", + "unassigned": "non assigné" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 0a4355e2acf..cdcec8f9581 100644 --- a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Plus tard", - "unassigned": "non assigné", "releaseNotes": "Notes de publication", "showReleaseNotes": "Afficher les notes de publication", "read the release notes": "Bienvenue dans {0} v{1} ! Voulez-vous lire les notes de publication ?", diff --git a/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..de7accdb519 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "éditeur webview" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..0b9766fe701 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Lire la suite" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..53b77e34248 --- /dev/null +++ b/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,21 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolderMultiRoot": "${workspaceFolder} ne peut pas être résolu dans un espace de travail de dossiers multiples. Contrôlez la portée de ces variables en utilisant : et un nom de dossier.", + "canNotResolveWorkspaceFolder": "${workspaceFolder} ne peut pas être résolu. Veuillez ouvrir un dossier.", + "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} ne peut pas être résolu dans un espace de travail de dossiers multiples. Contrôlez la portée de ces variables en utilisant : et un nom de dossier.", + "canNotResolveFolderBasename": "${workspaceFolderBasename} ne peut pas être résolu. Veuillez ouvrir un dossier.", + "canNotResolveLineNumber": "${lineNumber} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveSelectedText": "${selectedText} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveFile": "${file} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveRelativeFile": "${relativeFile} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveFileDirname": "${fileDirname} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveFileExtname": "${fileExtname} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveFileBasename": "${fileBasename} ne peut pas être résolu, veuillez ouvrir un éditeur.", + "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} ne peut pas être résolu, veuillez ouvrir un éditeur." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/fra/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..ad189dada97 --- /dev/null +++ b/i18n/fra/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Oui", + "cancelButton": "Annuler" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index d1cd27ab59c..2c081ca984a 100644 --- a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Ne plus afficher", "netVersionError": "Microsoft .NET Framework 4.5 est obligatoire. Suivez le lien pour l'installer.", "learnMore": "Instructions", - "enospcError": "{0} est à court de mémoire pour les fichiers. Veuillez suivre le lien avec les instructions pour résoudre ce problème.", "binFailed": "Échec du déplacement de '{0}' vers la corbeille", "trashFailed": "Échec du déplacement de '{0}' vers la corbeille" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/fra/src/vs/workbench/services/files/node/fileService.i18n.json index 50072355f39..c9a4fd144cd 100644 --- a/i18n/fra/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Ressource de fichier non valide ({0})", "fileIsDirectoryError": "Le fichier est un répertoire", "fileNotModifiedError": "Fichier non modifié depuis", - "fileTooLargeForHeapError": "La taille du ficher dépasse la limite de mémoire, veuillez essayer d'exécuter code --max-memory=NEWSIZE", "fileTooLargeError": "Fichier trop volumineux pour être ouvert", "fileNotFoundError": "Fichier introuvable ({0})", "fileBinaryError": "Il semble que le fichier soit binaire. Impossible de l'ouvrir en tant que texte", diff --git a/i18n/fra/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/fra/src/vs/workbench/services/progress/browser/progressService2.i18n.json index 5ee1cc9aa2b..85206812111 100644 --- a/i18n/fra/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/fra/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0} : {1}" + "progress.title": "{0} : {1}", + "cancel": "Annuler" } \ No newline at end of file diff --git a/i18n/hun/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/hun/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..762d665d83d --- /dev/null +++ b/i18n/hun/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS nyelvi szerver", + "folding.start": "Összecsukható tartomány kezdete", + "folding.end": "Összecsukható tartomány vége" +} \ No newline at end of file diff --git a/i18n/hun/extensions/css-language-features/package.i18n.json b/i18n/hun/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..aadc8f5c6ff --- /dev/null +++ b/i18n/hun/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás CSS-, LESS- és SCSS-fájlokhoz.", + "css.title": "CSS", + "css.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", + "css.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", + "css.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", + "css.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", + "css.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", + "css.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", + "css.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", + "css.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", + "css.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", + "css.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", + "css.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", + "css.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", + "css.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", + "css.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", + "css.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", + "css.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", + "css.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", + "css.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", + "css.trace.server.desc": "A VS Code és a CSS nyelvi szerver közötti kommunikáció naplózása.", + "css.validate.title": "Meghatározza a CSS-validáció működését és a problémák súlyosságát.", + "css.validate.desc": "Összes validálás engedélyezése vagy letiltása", + "less.title": "LESS", + "less.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", + "less.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", + "less.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", + "less.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", + "less.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", + "less.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", + "less.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", + "less.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", + "less.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", + "less.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", + "less.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", + "less.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", + "less.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", + "less.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", + "less.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", + "less.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", + "less.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", + "less.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", + "less.validate.title": "Meghatározza a LESS-validáció működését és a problémák súlyosságát.", + "less.validate.desc": "Összes validálás engedélyezése vagy letiltása", + "scss.title": "SCSS (Sass)", + "scss.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", + "scss.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", + "scss.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", + "scss.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", + "scss.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", + "scss.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", + "scss.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", + "scss.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", + "scss.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", + "scss.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", + "scss.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", + "scss.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", + "scss.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", + "scss.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", + "scss.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", + "scss.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", + "scss.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", + "scss.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", + "scss.validate.title": "Meghatározza az SCSS-validáció működését és a problémák súlyosságát.", + "scss.validate.desc": "Összes validálás engedélyezése vagy letiltása", + "less.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", + "scss.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", + "css.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", + "css.colorDecorators.enable.deprecationMessage": "Az `css.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt.", + "scss.colorDecorators.enable.deprecationMessage": "Az `scss.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt.", + "less.colorDecorators.enable.deprecationMessage": "A `less.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt." +} \ No newline at end of file diff --git a/i18n/hun/extensions/css/package.i18n.json b/i18n/hun/extensions/css/package.i18n.json index aadc8f5c6ff..804a00791e0 100644 --- a/i18n/hun/extensions/css/package.i18n.json +++ b/i18n/hun/extensions/css/package.i18n.json @@ -6,76 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS nyelvi funkciók", - "description": "Széleskörű nyelvi támogatás CSS-, LESS- és SCSS-fájlokhoz.", - "css.title": "CSS", - "css.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", - "css.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", - "css.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", - "css.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", - "css.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", - "css.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", - "css.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", - "css.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", - "css.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", - "css.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", - "css.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", - "css.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", - "css.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", - "css.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", - "css.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", - "css.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", - "css.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", - "css.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", - "css.trace.server.desc": "A VS Code és a CSS nyelvi szerver közötti kommunikáció naplózása.", - "css.validate.title": "Meghatározza a CSS-validáció működését és a problémák súlyosságát.", - "css.validate.desc": "Összes validálás engedélyezése vagy letiltása", - "less.title": "LESS", - "less.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", - "less.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", - "less.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", - "less.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", - "less.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", - "less.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", - "less.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", - "less.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", - "less.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", - "less.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", - "less.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", - "less.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", - "less.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", - "less.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", - "less.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", - "less.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", - "less.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", - "less.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", - "less.validate.title": "Meghatározza a LESS-validáció működését és a problémák súlyosságát.", - "less.validate.desc": "Összes validálás engedélyezése vagy letiltása", - "scss.title": "SCSS (Sass)", - "scss.lint.argumentsInColorFunction.desc": "Nem megfelelő számú paraméter", - "scss.lint.boxModel.desc": "A width és a height tulajdonság kerülése a padding és a border tulajdonság használata esetén", - "scss.lint.compatibleVendorPrefixes.desc": "Gyártóspecifikus előtag használata esetén minden más gyártóspecifikus tulajdonságot is meg kell adni", - "scss.lint.duplicateProperties.desc": "Duplikált stílusdefiníciók kerülése", - "scss.lint.emptyRules.desc": "Üres szabályhalmazok kerülése", - "scss.lint.float.desc": "A float tulajdonságérték kerülése, mivel könnyen váratlan eredményt idézhet elő az elrendezés változásakor.", - "scss.lint.fontFaceProperties.desc": "A @font-face szabályokban az src és a font-family tulajdonságot is definiálni kell", - "scss.lint.hexColorLength.desc": "A hexadecimális formában megadott színeknek három vagy hat hexadecimális számjegyből kell állniuk", - "scss.lint.idSelector.desc": "A szelektorok nem tartalmazhatnak azonosítókat, mivel az ilyen szabályok túl szorosan kötődnek a HTML-hez.", - "scss.lint.ieHack.desc": "Az IE hangolása csak az IE7 vagy régebbi verziók támogatása esetén szükséges", - "scss.lint.important.desc": "Az !important attribútum mellőzése. Az attribútum jelenléte arra utal, hogy a CSS-struktúra átláthatatlanná vált, és refaktorálásra szorul.", - "scss.lint.importStatement.desc": "Ne töltődjenek párhuzamosan az importálási utasítások", - "scss.lint.propertyIgnoredDueToDisplay.desc": "A megjelenítési mód miatt a megjelenítőkomponensek nem fogják figyelembe venni a tulajdonságot. Ha például a display tulajdonság értéke inline, akkor a megjelenítők figyelmen kívül hagyják a width, a height, a margin-top, a margin-bottom és a float tulajdonságot.", - "scss.lint.universalSelector.desc": "Az univerzális szelektor (*) lassú működést eredményez", - "scss.lint.unknownProperties.desc": "Ismeretlen tulajdonság.", - "scss.lint.unknownVendorSpecificProperties.desc": "Ismeretlen gyártóspecifikus tulajdonság.", - "scss.lint.vendorPrefix.desc": "Gyártóspecifikus előtagok használata esetén az adott tulajdonság szabványos változatát is meg kell adni", - "scss.lint.zeroUnits.desc": "A 0 értékhez nem szükséges mértékegység", - "scss.validate.title": "Meghatározza az SCSS-validáció működését és a problémák súlyosságát.", - "scss.validate.desc": "Összes validálás engedélyezése vagy letiltása", - "less.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", - "scss.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", - "css.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", - "css.colorDecorators.enable.deprecationMessage": "Az `css.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt.", - "scss.colorDecorators.enable.deprecationMessage": "Az `scss.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt.", - "less.colorDecorators.enable.deprecationMessage": "A `less.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt." + "displayName": "CSS nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a CSS-, LESS- és SCSS-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/emmet/package.i18n.json b/i18n/hun/extensions/emmet/package.i18n.json index 8809e7dca73..8d55c3feff5 100644 --- a/i18n/hun/extensions/emmet/package.i18n.json +++ b/i18n/hun/extensions/emmet/package.i18n.json @@ -59,5 +59,6 @@ "emmetPreferencesCssWebkitProperties": "CSS-tulajdonságok vesszővel ellátott listája, melyek 'webkit' gyártói előtagot kapnak azoknál az Emmet-rövidtéseknél, melyek `-` karakterrel kezdődnek. Állítsa üres szövegre, ha soha nem szeretne 'webkit' előtagot használni.", "emmetPreferencesCssMozProperties": "CSS-tulajdonságok vesszővel ellátott listája, melyek 'moz' gyártói előtagot kapnak azoknál az Emmet-rövidtéseknél, melyek `-` karakterrel kezdődnek. Állítsa üres szövegre, ha soha nem szeretne 'moz' előtagot használni.", "emmetPreferencesCssOProperties": "CSS-tulajdonságok vesszővel ellátott listája, melyek 'o' gyártói előtagot kapnak azoknál az Emmet-rövidtéseknél, melyek `-` karakterrel kezdődnek. Állítsa üres szövegre, ha soha nem szeretne 'o' előtagot használni.", - "emmetPreferencesCssMsProperties": "CSS-tulajdonságok vesszővel ellátott listája, melyek 'ms' gyártói előtagot kapnak azoknál az Emmet-rövidtéseknél, melyek `-` karakterrel kezdődnek. Állítsa üres szövegre, ha soha nem szeretne 'ms' előtagot használni." + "emmetPreferencesCssMsProperties": "CSS-tulajdonságok vesszővel ellátott listája, melyek 'ms' gyártói előtagot kapnak azoknál az Emmet-rövidtéseknél, melyek `-` karakterrel kezdődnek. Állítsa üres szövegre, ha soha nem szeretne 'ms' előtagot használni.", + "emmetPreferencesCssFuzzySearchMinScore": "A minimális pontszám (0-tól 1-ig), amit egy fuzzy keresési találatnak el kell érnie. Az alacsonyabb értékek álpozitív találatokat eredményezhetnek, míg a magasabb értékek szűkítik a lehetséges találatok számát." } \ No newline at end of file diff --git a/i18n/hun/extensions/git/out/commands.i18n.json b/i18n/hun/extensions/git/out/commands.i18n.json index b06c2c09402..9c1a3de3b6c 100644 --- a/i18n/hun/extensions/git/out/commands.i18n.json +++ b/i18n/hun/extensions/git/out/commands.i18n.json @@ -75,7 +75,7 @@ "ok": "OK", "push with tags success": "A címkékkel együtt történő pusholás sikeresen befejeződött.", "pick remote": "Válassza ki a távoli szervert, ahová publikálni szeretné a(z) '{0}' ágat:", - "sync is unpredictable": "Ez a művelet pusholja és pullozza a commitokat a következő helyről: '{0}'.", + "sync is unpredictable": "Ez a művelet pusholja és pullozza a commitokat a következő helyről: '{0}/{1}'.", "never again": "Rendben, ne jelenjen meg újra", "no remotes to publish": "A forráskódtárhoz nincsenek távoli szerverek konfigurálva, ahová publikálni lehetne.", "no changes stash": "Nincs elrakandó módosítás.", diff --git a/i18n/hun/extensions/git/package.i18n.json b/i18n/hun/extensions/git/package.i18n.json index 71a958c4b2c..d2831b61da5 100644 --- a/i18n/hun/extensions/git/package.i18n.json +++ b/i18n/hun/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Meghatározza, hogy megjelenjen-e a sorok között egy 'Fájl megnyitása' művelet a git változások nézetén.", "config.inputValidation": "Meghatározza, hogy mikor jelenjen meg a beadási üzenet validálása.", "config.detectSubmodules": "Meghatározza, hogy automatikusan fel legyenek-e derítve a git almodulok.", + "config.detectSubmodulesLimit": "Korlátozza a felderített git almodulok számát.", "colors.modified": "A módosított erőforrások színe.", "colors.deleted": "A törölt erőforrások színe.", "colors.untracked": "A nem követett erőforrások színe.", diff --git a/i18n/hun/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/hun/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..8b705a97409 --- /dev/null +++ b/i18n/hun/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML nyelvi szerver", + "folding.start": "Összecsukható tartomány kezdete", + "folding.end": "Összecsukható tartomány vége" +} \ No newline at end of file diff --git a/i18n/hun/extensions/html-language-features/package.i18n.json b/i18n/hun/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..c4e070a679d --- /dev/null +++ b/i18n/hun/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás HTML-, Razor- és Handlebar-fájlokhoz.", + "html.format.enable.desc": "Alapértelmezett HTML-formázó engedélyezése vagy letiltása.", + "html.format.wrapLineLength.desc": "Maximális karakterszám soronként (0 = letiltás)", + "html.format.unformatted.desc": "Azon elemek vesszővel elválasztott listája, melyek ne legyenek újraformázva. 'null' érték esetén a https://www.w3.org/TR/html5/dom.html#phrasing-content oldalon listázott elemek lesznek használva.", + "html.format.contentUnformatted.desc": "Azon elemek vesszővel elválasztott listája, melyek ne legyenek újraformázva. 'null' érték esetén a 'pre' tag lesz használva.", + "html.format.indentInnerHtml.desc": "- és -szakaszok indentálása.", + "html.format.preserveNewLines.desc": "Az elemek előtt lévő sortörések meg legyenek-e hagyva. Csak elemek előtt működik, elemek belsejében vagy szövegben nem.", + "html.format.maxPreserveNewLines.desc": "Az egymás után megőrzött sortörések maximális száma. Ha nem szeretné korlátozni, használja a 'null' értéket!", + "html.format.indentHandlebars.desc": "{{#foo}} és {{/foo}} formázása és indentálása.", + "html.format.endWithNewline.desc": "Lezárás új sorral.", + "html.format.extraLiners.desc": "Azon elemek veszővel elválasztott listája, amelyek előtt lennie kell egy extra új sornak. 'null' érték esetén a \"head,body,/html\" érték van használva.", + "html.format.wrapAttributes.desc": "Attribútumok tördelése.", + "html.format.wrapAttributes.auto": "Az attribútumok csak akkor vannak tördelve, ha a sorhossz túl lett lépve.", + "html.format.wrapAttributes.force": "Minden egyes attribútum tördelve van, kivéve az elsőt.", + "html.format.wrapAttributes.forcealign": "Minden egyes attribútum tördelve van, kivéve az elsőt, és igazítva vannak.", + "html.format.wrapAttributes.forcemultiline": "Minden egyes attribútum tördelve van.", + "html.suggest.angular1.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e Angular V1 elemeket és tulajdonságokat.", + "html.suggest.ionic.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e Ionic elemeket, tulajdonságokat és értékeket.", + "html.suggest.html5.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e HTML5-ös elemeket, tulajdonságokat és értékeket.", + "html.trace.server.desc": "A VS Code és a HTML nyelvi szerver közötti kommunikáció naplózása.", + "html.validate.scripts": "Meghatározza, hogy a beépített HTML nyelvi támogatás validálja-e a beágyazott parancsafájlokat.", + "html.validate.styles": "Meghatározza, hogy a beépített HTML nyelvi támogatás validálja-e a beágyazott stílusfájlokat.", + "html.autoClosingTags": "HTML-elemek automatikus lezárásának engedélyezése vagy tetiltása." +} \ No newline at end of file diff --git a/i18n/hun/extensions/html/package.i18n.json b/i18n/hun/extensions/html/package.i18n.json index 8718becb266..bb0ee17f709 100644 --- a/i18n/hun/extensions/html/package.i18n.json +++ b/i18n/hun/extensions/html/package.i18n.json @@ -6,29 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "HTML nyelvi funkciók", - "description": "Széleskörű nyelvi támogatás HTML-, Razor- és Handlebar-fájlokhoz.", - "html.format.enable.desc": "Alapértelmezett HTML-formázó engedélyezése vagy letiltása.", - "html.format.wrapLineLength.desc": "Maximális karakterszám soronként (0 = letiltás)", - "html.format.unformatted.desc": "Azon elemek vesszővel elválasztott listája, melyek ne legyenek újraformázva. 'null' érték esetén a https://www.w3.org/TR/html5/dom.html#phrasing-content oldalon listázott elemek lesznek használva.", - "html.format.contentUnformatted.desc": "Azon elemek vesszővel elválasztott listája, melyek ne legyenek újraformázva. 'null' érték esetén a 'pre' tag lesz használva.", - "html.format.indentInnerHtml.desc": "- és -szakaszok indentálása.", - "html.format.preserveNewLines.desc": "Az elemek előtt lévő sortörések meg legyenek-e hagyva. Csak elemek előtt működik, elemek belsejében vagy szövegben nem.", - "html.format.maxPreserveNewLines.desc": "Az egymás után megőrzött sortörések maximális száma. Ha nem szeretné korlátozni, használja a 'null' értéket!", - "html.format.indentHandlebars.desc": "{{#foo}} és {{/foo}} formázása és indentálása.", - "html.format.endWithNewline.desc": "Lezárás új sorral.", - "html.format.extraLiners.desc": "Azon elemek veszővel elválasztott listája, amelyek előtt lennie kell egy extra új sornak. 'null' érték esetén a \"head,body,/html\" érték van használva.", - "html.format.wrapAttributes.desc": "Attribútumok tördelése.", - "html.format.wrapAttributes.auto": "Az attribútumok csak akkor vannak tördelve, ha a sorhossz túl lett lépve.", - "html.format.wrapAttributes.force": "Minden egyes attribútum tördelve van, kivéve az elsőt.", - "html.format.wrapAttributes.forcealign": "Minden egyes attribútum tördelve van, kivéve az elsőt, és igazítva vannak.", - "html.format.wrapAttributes.forcemultiline": "Minden egyes attribútum tördelve van.", - "html.suggest.angular1.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e Angular V1 elemeket és tulajdonságokat.", - "html.suggest.ionic.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e Ionic elemeket, tulajdonságokat és értékeket.", - "html.suggest.html5.desc": "Meghatározza, hogy a beépített HTML nyelvi támogatás ajánl-e HTML5-ös elemeket, tulajdonságokat és értékeket.", - "html.trace.server.desc": "A VS Code és a HTML nyelvi szerver közötti kommunikáció naplózása.", - "html.validate.scripts": "Meghatározza, hogy a beépített HTML nyelvi támogatás validálja-e a beágyazott parancsafájlokat.", - "html.validate.styles": "Meghatározza, hogy a beépített HTML nyelvi támogatás validálja-e a beágyazott stílusfájlokat.", - "html.experimental.syntaxFolding": "Szintaxisalapú becsukható kódrészletek engedélyezése vagy letiltása.", - "html.autoClosingTags": "HTML-elemek automatikus lezárásának engedélyezése vagy tetiltása." + "displayName": "HTML nyelvi alapok", + "description": "Szintaktikai kiemelést, összetartozó zárójelek kezelését és kódtöredékeket szolgáltat a HTML-fájlokhoz." } \ No newline at end of file diff --git a/i18n/hun/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/hun/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..7651ab518e4 --- /dev/null +++ b/i18n/hun/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON nyelvi szerver" +} \ No newline at end of file diff --git a/i18n/hun/extensions/json-language-features/package.i18n.json b/i18n/hun/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..ddfd0e82d10 --- /dev/null +++ b/i18n/hun/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás JSON-fájlokhoz.", + "json.schemas.desc": "Sémák hozzárendelése JSON-fájlokhoz a jelenlegi projektben", + "json.schemas.url.desc": "Egy séma URL-címe vagy egy séma relatív elérési útja az aktuális könyvtárban", + "json.schemas.fileMatch.desc": "Fájlminták tömbje, amely a JSON-fájlok sémákhoz való rendelésénél van használva.", + "json.schemas.fileMatch.item.desc": "Fájlminták tömbje, amely a JSON-fájlok sémákhoz való rendelésénél van használva. Tartalmazhat '*'-ot.", + "json.schemas.schema.desc": "Az adott URL-cím sémadefiníciója. A sémát csak a séma URL-címéhez való fölösleges lekérdezések megakadályozása érdekében kell megadni.", + "json.format.enable.desc": "Alapértelmezett JSON-formázó engedélyezése vagy letiltása (újraindítást igényel)", + "json.tracing.desc": "A VS Code és a JSON nyelvi szerver közötti kommunikáció naplózása.", + "json.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", + "json.colorDecorators.enable.deprecationMessage": "A `json.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt." +} \ No newline at end of file diff --git a/i18n/hun/extensions/json/package.i18n.json b/i18n/hun/extensions/json/package.i18n.json index a4504577c67..55ffac6d3dd 100644 --- a/i18n/hun/extensions/json/package.i18n.json +++ b/i18n/hun/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "JSON nyelvi funkciók", - "description": "Széleskörű nyelvi támogatás JSON-fájlokhoz.", - "json.schemas.desc": "Sémák hozzárendelése JSON-fájlokhoz a jelenlegi projektben", - "json.schemas.url.desc": "Egy séma URL-címe vagy egy séma relatív elérési útja az aktuális könyvtárban", - "json.schemas.fileMatch.desc": "Fájlminták tömbje, amely a JSON-fájlok sémákhoz való rendelésénél van használva.", - "json.schemas.fileMatch.item.desc": "Fájlminták tömbje, amely a JSON-fájlok sémákhoz való rendelésénél van használva. Tartalmazhat '*'-ot.", - "json.schemas.schema.desc": "Az adott URL-cím sémadefiníciója. A sémát csak a séma URL-címéhez való fölösleges lekérdezések megakadályozása érdekében kell megadni.", - "json.format.enable.desc": "Alapértelmezett JSON-formázó engedélyezése vagy letiltása (újraindítást igényel)", - "json.tracing.desc": "A VS Code és a JSON nyelvi szerver közötti kommunikáció naplózása.", - "json.colorDecorators.enable.desc": "Színdekorátorok engedélyezése vagy letiltása", - "json.colorDecorators.enable.deprecationMessage": "A `json.colorDecorators.enable` beállítás elavult az `editor.colorDecorators` bevezetése miatt.", - "json.experimental.syntaxFolding": "Szintaxisalapú becsukható kódrészletek engedélyezése vagy letiltása." + "displayName": "JSON nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a JSON-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/hun/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..9eab0fec461 --- /dev/null +++ b/i18n/hun/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "A 'markdown.styles' nem tölthető be: {0}" +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/hun/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..a7a0c887484 --- /dev/null +++ b/i18n/hun/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Előnézet] {0}", + "previewTitle": "{0} előnézete" +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/hun/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..0a920063d63 --- /dev/null +++ b/i18n/hun/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "A tartalom egy része le van tiltva az aktuális dokumentumban", + "preview.securityMessage.title": "Potencionálisan veszélyes vagy nem biztonságos tartalom lett letiltva a markdown-előnézetben. Módosítsa a markdown-előnézet biztonsági beállításait a nem biztonságos tartalmak vagy parancsfájlok engedélyezéséhez!", + "preview.securityMessage.label": "Biztonsági figyelmeztetés: tartalom le van tiltva" +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-language-features/out/security.i18n.json b/i18n/hun/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..def0928c3a2 --- /dev/null +++ b/i18n/hun/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Szigorú", + "strict.description": "Csak biztonságos tartalmak betöltése", + "insecureContent.title": "Nem biztonságos tartalom engedélyezése", + "insecureContent.description": "Tartalom betöltésének engedélyezése HTTP-n keresztül.", + "disable.title": "Letiltás", + "disable.description": "Minden tartalom és parancsfájl futtatásának engedélyezése. Nem ajánlott.", + "moreInfo.title": "További információ", + "enableSecurityWarning.title": "Előnézettel kapcsolatos biztonsági figyelmeztetések engedélyezése ezen a munkaterületen", + "disableSecurityWarning.title": "Előnézettel kapcsolatos biztonsági figyelmeztetések letiltása ezen a munkaterületen", + "toggleSecurityWarning.description": "Nem befolyásolja a tartalom biztonsági szintjét", + "preview.showPreviewSecuritySelector.title": "Válassza ki a munkaterület Markdown-előnézeteinek biztonsági beállítását!" +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-language-features/package.i18n.json b/i18n/hun/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..5e8a8541227 --- /dev/null +++ b/i18n/hun/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás Markdown-fájlokhoz.", + "markdown.preview.breaks.desc": "Meghatározza, hogy a sortörések hogyan vannak megjelenítve a markdown-előnézetben. Ha az értéke 'true', akkor minden egyes újsor esetén
jön létre.", + "markdown.preview.linkify": "URL-szerű szövegek hivatkozássá alakításának engedélyezése vagy letiltása a markdown-előnézetben.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Kattintson duplán a markdown-előnézetre a szerkesztőre való átváltáshoz.", + "markdown.preview.fontFamily.desc": "Meghatározza a markdown-előnézeten használt betűkészletet.", + "markdown.preview.fontSize.desc": "Meghatározza a markdown-előnézet betűméretét, pixelekben.", + "markdown.preview.lineHeight.desc": "Meghatározza a markdown-előnézeten használt sormagasságot. Az érték relatív a betűmérethez képest.", + "markdown.preview.markEditorSelection.desc": "Az aktuális kijelölés megjelölése a markdown-előnézeten", + "markdown.preview.scrollEditorWithPreview.desc": "Amikor a markdown-előnézetet görgetik, a szerkesztőnézet is aktualizálódik", + "markdown.preview.scrollPreviewWithEditor.desc": "Amikor a markdown-szerkesztőnézetet görgetik, az előnézet is aktualizálódik.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Elavult] A markdown-előnézetet úgy görgeti, hogy látni lehessen az aktuálisan kijelölt sort.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Ezt a beállítást leváltotta a 'markdown.preview.scrollPreviewWithEditor' beállítás, és már nincs hatása.", + "markdown.preview.title": "Előnézet megnyitása", + "markdown.previewFrontMatter.dec": "Meghatározza, hogy a YAML konfiguráció (front matter) hogyan legyen megjelenítve a markdown-előnézetben. A 'hide' elrejti a konfigurációt, minden más esetben a front matter markdown-tartalomként van kezelve.", + "markdown.previewSide.title": "Előnézet megnyitása oldalt", + "markdown.showLockedPreviewToSide.title": "Rögzített előnézet megnyitása oldalt", + "markdown.showSource.title": "Forrás megjelenítése", + "markdown.styles.dec": "CSS-stíluslapok URL-címeinek vagy helyi elérési útjainak listája, amelyek a markdown-előnézeten használva vannak. A relatív elérési utak az intézőben megnyitott mappához képest vannak relatívan értelmezve. Ha nincs mappa megnyitva, akkor a markdown-fájl elréséi útjához képest. Minden '\\' karaktert '\\\\' formában kell megadni.", + "markdown.showPreviewSecuritySelector.title": "Az előnézet biztonsági beállításainak módosítása", + "markdown.trace.desc": "Hibakeresési napló engedélyezése a markdown kiterjesztésben.", + "markdown.preview.refresh.title": "Előnézet frissítése", + "markdown.preview.toggleLock.title": "Előnézet rögzítésének be- és kikapcsolása" +} \ No newline at end of file diff --git a/i18n/hun/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/hun/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..d4851192c11 --- /dev/null +++ b/i18n/hun/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Engedélyezi a(z) {0} (munkaterületi beállításként megadott) végrehajtását a PHP-fájlok linteléséhez?", + "php.yes": "Engedélyezés", + "php.no": "Tiltás", + "wrongExecutable": "A validáció nem sikerült, mivel a(z) {0} nem egy érvényes php végrehajtható fájl. Használja a 'php.validate.executablePath' beállítást a PHP végrehajtható fájl konfigurálásához!", + "noExecutable": "A validáció nem sikerült, mivel nincs beállítva PHP végrehajtható fájl. Használja a 'php.validate.executablePath' beállítást a PHP végrehajtható fájl konfigurálásához!", + "unknownReason": "Nem sikerült futtatni a PHP-t a következő elérési út használatával: {0}. Az ok ismeretlen." +} \ No newline at end of file diff --git a/i18n/hun/extensions/php-language-features/package.i18n.json b/i18n/hun/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..1d6ca7197bd --- /dev/null +++ b/i18n/hun/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Meghatározza, hogy a beépített PHP nyelvi támogatás ajánl-e PHP globálisokat és változókat.", + "configuration.validate.enable": "Beépített PHP-validáció engedélyezése vagy letiltása", + "configuration.validate.executablePath": "A PHP végrehajtható fájljának elérési útja.", + "configuration.validate.run": "A linter mentéskor vagy gépeléskor fut-e.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "PHP-validációs végrehajtható fájl letiltása (munkaterületi beállításként megadva)", + "displayName": "PHP nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás PHP-fájlokhoz." +} \ No newline at end of file diff --git a/i18n/hun/extensions/php/package.i18n.json b/i18n/hun/extensions/php/package.i18n.json index 2fd2af0d0e8..41a3d3f94af 100644 --- a/i18n/hun/extensions/php/package.i18n.json +++ b/i18n/hun/extensions/php/package.i18n.json @@ -6,13 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Meghatározza, hogy a beépített PHP nyelvi támogatás ajánl-e PHP globálisokat és változókat.", - "configuration.validate.enable": "Beépített PHP-validáció engedélyezése vagy letiltása", - "configuration.validate.executablePath": "A PHP végrehajtható fájljának elérési útja.", - "configuration.validate.run": "A linter mentéskor vagy gépeléskor fut-e.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP-validációs végrehajtható fájl letiltása (munkaterületi beállításként megadva)", "displayName": "PHP nyelvi funkciók", - "description": "IntelliSense-t, lintelést és alapvető nyelvi funkciókat szolgáltat a PHP-fájlokban." + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a PHP-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index ed46a94304d..92689292f4f 100644 --- a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Nincs találat", "settingsSearchIssue": "Hiba a beállítások keresőjében", "bugReporter": "hibát", - "performanceIssue": "teljesítményproblémát", "featureRequest": "funkcióigényt", + "performanceIssue": "teljesítményproblémát", "stepsToReproduce": "A probléma előidézésének lépései", "bugDescription": "Ossza meg a probléma megbízható előidézéséhez szükséges részleteket! Írja le a valós és az elvárt működést! A mezőben GitHub-stílusú markdown használható. A hibajelentés szerkeszthető lesz és képernyőfotók is csatolhatók a githubos előnézetnél.", "performanceIssueDesciption": "Mikor fordult elő ez a teljesítménybeli probléma? Például előfordul indulásnál vagy végre kell hajtani bizonyos műveleteket? A mezőben GitHub-stílusú markdown használható. A hibajelentés szerkeszthető lesz és képernyőfotók is csatolhatók a githubos előnézetnél.", diff --git a/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json index c76fc2901ea..a81eff02751 100644 --- a/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,9 @@ "warningBorder": "A figyelmeztetéseket jelző hullámvonal keretszíne a szerkesztőablakban.", "infoForeground": "Az információkat jelző hullámvonal előtérszíne a szerkesztőablakban.", "infoBorder": "Az információkat jelző hullámvonal keretszíne a szerkesztőablakban. ", - "overviewRulerRangeHighlight": "A kiemelt tartományokat jelölő jelzések színe az áttekintősávon.", + "hintForeground": "Az utalásokat jelző hullámvonal előtérszíne a szerkesztőablakban.", + "hintBorder": "Az utalásokat jelző hullámvonal keretszíne a szerkesztőablakban.", + "overviewRulerRangeHighlight": "A kiemelt területeket jelölő jelzések színe az áttekintősávon. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat.", "overviewRuleError": "A hibákat jelölő jelzések színe az áttekintősávon.", "overviewRuleWarning": "A figyelmeztetéseket jelölő jelzések színe az áttekintősávon.", "overviewRuleInfo": "Az információkat jelölő jelzések színe az áttekintősávon." diff --git a/i18n/hun/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/hun/src/vs/editor/contrib/gotoError/gotoError.i18n.json index f1e97f6010a..0665568c203 100644 --- a/i18n/hun/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/hun/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Következő probléma (hiba, figyelmeztetés, információ)", - "markerAction.previous.label": "Előző probléma (hiba, figyelmeztetés, információ)", - "editorMarkerNavigationError": "A szerkesztőablak jelzőnavigációs moduljának színe hiba esetén.", - "editorMarkerNavigationWarning": "A szerkesztőablak jelzőnavigációs moduljának színe figyelmeztetés esetén.", - "editorMarkerNavigationInfo": "A szerkesztőablak jelzőnavigációs moduljának színe információ esetén.", - "editorMarkerNavigationBackground": "A szerkesztőablak jelzőnavigációs moduljának háttérszíne." + "markerAction.previous.label": "Előző probléma (hiba, figyelmeztetés, információ)" } \ No newline at end of file diff --git a/i18n/hun/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/hun/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..60534d6d43e --- /dev/null +++ b/i18n/hun/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "A szerkesztőablak jelzőnavigációs moduljának színe hiba esetén.", + "editorMarkerNavigationWarning": "A szerkesztőablak jelzőnavigációs moduljának színe figyelmeztetés esetén.", + "editorMarkerNavigationInfo": "A szerkesztőablak jelzőnavigációs moduljának színe információ esetén.", + "editorMarkerNavigationBackground": "A szerkesztőablak jelzőnavigációs moduljának háttérszíne." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/hun/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..57dd858270a --- /dev/null +++ b/i18n/hun/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,47 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "vasárnap", + "Monday": "hétfő", + "Tuesday": "kedd", + "Wednesday": "szerda", + "Thursday": "csütörtök", + "Friday": "péntek", + "Saturday": "szombat", + "SundayShort": "vas", + "MondayShort": "hét", + "TuesdayShort": "kedd", + "WednesdayShort": "sze", + "ThursdayShort": "csüt", + "FridayShort": "pén", + "SaturdayShort": "szo", + "January": "január", + "February": "február", + "March": "március", + "April": "április", + "May": "május", + "June": "június", + "July": "július", + "August": "augusztus", + "September": "szeptember", + "October": "október", + "November": "november", + "December": "december", + "JanuaryShort": "jan", + "FebruaryShort": "feb", + "MarchShort": "márc", + "AprilShort": "ápr", + "MayShort": "máj", + "JuneShort": "jún", + "JulyShort": "júl", + "AugustShort": "aug", + "SeptemberShort": "szept", + "OctoberShort": "okt", + "NovemberShort": "nov", + "DecemberShort": "dec" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/hun/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index a60448390b0..e66f795b53c 100644 --- a/i18n/hun/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/hun/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,8 @@ "wordHighlightStrong": "Szimbólumok háttérszíne írási hozzáférés, például változó írása esetén. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat.", "wordHighlightBorder": "Szimbólumok háttérszíne olvasási hozzáférés, például változó olvasása esetén.", "wordHighlightStrongBorder": "Szimbólumok háttérszíne írási hozzáférés, például változó írása esetén.", - "overviewRulerWordHighlightForeground": "A kiemelt szimbólumokat jelölő jelzések színe az áttekintősávon.", - "overviewRulerWordHighlightStrongForeground": "A kiemelt, írási hozzáférésű szimbólumokat jelölő jelzések színe az áttekintősávon.", + "overviewRulerWordHighlightForeground": "A kiemelt szimbólumokat jelölő jelzések színe az áttekintősávon. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat.", + "overviewRulerWordHighlightStrongForeground": "Az írási hozzáféréssel rendelkező szimbólumokat jelölő jelzések színe az áttekintősávon. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat.", "wordHighlight.next.label": "Ugrás a következő kiemelt szimbólumhoz", "wordHighlight.previous.label": "Ugrás az előző kiemelt szimbólumhoz" } \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/hun/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..43e1fb70709 --- /dev/null +++ b/i18n/hun/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 további fájl nincs megjelenítve", + "moreFiles": "...{0} további fájl nincs megjelenítve" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/hun/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..d1d33322cd8 --- /dev/null +++ b/i18n/hun/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Mégse" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 0cfe9dca9e2..c2eaf97d09f 100644 --- a/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,15 @@ "errorInstallingDependencies": "Hiba a függőségek telepítése közben. {0}", "MarketPlaceDisabled": "A piactér nincs engedélyezve", "removeError": "Hiba történt a kiegészítő eltávolítása közben: {0}. Lépjen ki és indítsa el a VS Code-ot mielőtt újrapróbálná!", - "Not Market place extension": "Csak a piactérről származó kiegészítőket lehet újratelepíteni", + "Not a Marketplace extension": "Csak a piactérről származó kiegészítőket lehet újratelepíteni", "notFoundCompatible": "A(z) '{0}' nem telepíthető: nincs a VS Code '{1}' verziójával kompatibilis változat.", "malicious extension": "A kiegészítő nem telepíthető, mert jelentették, hogy problémás.", "notFoundCompatibleDependency": "A telepítés nem sikerült, mert a(z) '{0}' kiegészítő függőség VS Code '{1}' verziójával kompatibilis változata nem található. ", "quitCode": "A kiegészítő telepítése nem sikerült. Lépjen ki és indítsa el a VS Code-ot az újratelepítés előtt!", "exitCode": "A kiegészítő telepítése nem sikerült. Lépjen ki és indítsa el a VS Code-ot az újratelepítés előtt!", "uninstallDependeciesConfirmation": "Csak a(z) '{0}' kiegészítőt szeretné eltávolítani vagy annak függőségeit is?", - "uninstallOnly": "Csak ezt", - "uninstallAll": "Mindent", + "uninstallOnly": "Csak a kiegészítőt", + "uninstallAll": "Az összes eltávolítása", "uninstallConfirmation": "Biztosan szeretné eltávolítani a(z) '{0}' kiegészítőt?", "ok": "OK", "singleDependentError": "Nem sikerült eltávolítani a(z) '{0}' kiegészítőt: a(z) '{1}' kiegészítő függ tőle.", diff --git a/i18n/hun/src/vs/platform/list/browser/listService.i18n.json b/i18n/hun/src/vs/platform/list/browser/listService.i18n.json index c91ae24bd28..23a85678ca5 100644 --- a/i18n/hun/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/hun/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Több elem kijelölése esetén újabb elem hozzáadásához használt módosítóbillentyű a fanézetekben és listákban (például a fájlkezelőben, a megnyitott szerkesztőablakok listájában és a verziókezelő rendszer nézeten). A `ctrlCmd` Windows és Linux alatt a `Control`, macOS alatt a `Command` billentyűt jelenti. A 'Megnyitás oldalt\" egérgesztusok – ha támogatva vannak – automatikusan úgy lesznek beállítva, hogy ne ütközzenek a több elem kijelöléséhez tartozó módosító billentyűvel.", "openMode.singleClick": "Elemek megnyitása egyetlen kattintásra.", "openMode.doubleClick": "Elemek megnyitása dupla kattintásra.", - "openModeModifier": "Meghatározza, hogyan nyíljanak meg az elemek a fanézetekben és listákban egér használata esetén (ha támogatott). `singleClick` esetén egyetlen kattintásra megnyílnak az elemek, míg `doubleClick` esetén dupla kattintás szükséges. Fanézeteknél meghatározza, hogy a szülőelemek egyetlen vagy dupla kattintásra nyílnak ki. Megjegyzés: néhány fanézet és lista figyelmen kívül hagyja ezt a beállítást ott, ahol ez nem alkalmazható. " + "openModeModifier": "Meghatározza, hogyan nyíljanak meg az elemek a fanézetekben és listákban egér használata esetén (ha támogatott). `singleClick` esetén egyetlen kattintásra megnyílnak az elemek, míg `doubleClick` esetén dupla kattintás szükséges. Fanézeteknél meghatározza, hogy a szülőelemek egyetlen vagy dupla kattintásra nyílnak ki. Megjegyzés: néhány fanézet és lista figyelmen kívül hagyja ezt a beállítást ott, ahol ez nem alkalmazható. ", + "horizontalScrolling setting": "Meghatározza, hogy a fák támogatják-e a vízszintes görgetést a munkaterületen." } \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/markers/common/markers.i18n.json b/i18n/hun/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..ba6e96532e0 --- /dev/null +++ b/i18n/hun/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Hiba", + "sev.warning": "Figyelmeztetés", + "sev.info": "Információ" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/hun/src/vs/platform/theme/common/colorRegistry.i18n.json index a77c528ab13..a470002b64a 100644 --- a/i18n/hun/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/hun/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -93,6 +93,6 @@ "overviewRulerCurrentContentForeground": "A helyi tartalom előtérszíne az áttekintő sávon összeolvasztási konfliktusok esetén.", "overviewRulerIncomingContentForeground": "A beérkező tartalom előtérszíne az áttekintő sávon összeolvasztási konfliktusok esetén.", "overviewRulerCommonContentForeground": "A közös ős tartalom előtérszíne az áttekintő sávon összeolvasztási konfliktusok esetén. ", - "overviewRulerFindMatchForeground": "A keresési találatokat jelölő jelzések színe az áttekintősávon.", - "overviewRulerSelectionHighlightForeground": "A kiemelt kijelöléseket jelölő jelzések színe az áttekintősávon." + "overviewRulerFindMatchForeground": "A keresési találatokat jelölő jelzések színe az áttekintősávon. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat.", + "overviewRulerSelectionHighlightForeground": "A kijelölt területeket jelölő jelzések színe az áttekintősávon. A színnek áttetszőnek kell lennie, hogy ne fedje el az alatta lévő dekorátorokat." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 59c82a1f395..1a6a8a26fbe 100644 --- a/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Mentéskor végzett formázás megszakítva {0}ms után", + "timeout.onWillSave": "OnWillSaveTextDocument-esemény megszakítva 1750ms után", "saveParticipants": "Mentési események futtatása..." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/hun/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..c073dbed804 --- /dev/null +++ b/i18n/hun/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (kiegészítő)" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 39a626587ee..2de10454592 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Váltás a következő csoportra", "openToSide": "Megnyitás oldalt", "closeEditor": "Szerkesztőablak bezárása", + "closeOneEditor": "Bezárás", "revertAndCloseActiveEditor": "Visszaállítás és szerkesztőablak bezárása", "closeEditorsToTheLeft": "Balra lévő szerkesztőablakok bezárása", "closeAllEditors": "Összes szerkesztőablak bezárása", diff --git a/i18n/hun/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 74c48b61345..d823f6837d9 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Bezárás", "araLabelEditorActions": "Szerkesztőablak-műveletek" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index b62321b07d6..a22a300f861 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Nincs új értesítés", "notifications": "Értesítések", "notificationsToolbar": "Értesítésiközpont-műveletek", "notificationsList": "Értesítések listája" diff --git a/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json index 1360b8af1f1..6bbb36e90ae 100644 --- a/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,17 @@ "windowConfigurationTitle": "Ablak", "window.openFilesInNewWindow.on": "A fájlok új ablakban nyílnak meg", "window.openFilesInNewWindow.off": "A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban", - "window.openFilesInNewWindow.default": "A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban, kivéve, ha a dokkról vagy a Finderből lettek megnyitva (csak macOS-en)", - "openFilesInNewWindow": "Meghatározza, hogy a fájlok új ablakban legyenek-e megnyitva.\n- default: A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban, kivéve, ha a dokkról vagy a Finderből lettek megnyitva (csak macOS-en)\n- on: A fájlok új ablakban nyílnak meg.\n- off: A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban\nMegjegyzés: vannak esetek, amikor ez a beállítás figyelmen kívül van hagyva (pl. a -new-window vagy a -reuse-window parancssori beállítás használata esetén).", + "window.openFilesInNewWindow.defaultMac": "A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban, kivéve, ha a dokkról vagy a Finderből lettek megnyitva", + "window.openFilesInNewWindow.default": "A fájlok új ablakban nyílnak meg, kivéve akkor, ha az alkalmazáson belül lettek kiválasztva (pl. a Fájl menüből)", + "openFilesInNewWindowMac": "Meghatározza, hogy a fájlok új ablakban legyenek-e megnyitva.\n- default: A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban, kivéve, ha a dokkról vagy a Finderből lettek megnyitva\n- on: A fájlok új ablakban nyílnak meg.\n- off: A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban\nMegjegyzés: vannak esetek, amikor ez a beállítás figyelmen kívül van hagyva (pl. a -new-window vagy a -reuse-window parancssori beállítás használata esetén).", + "openFilesInNewWindow": "Meghatározza, hogy a fájlok új ablakban legyenek-e megnyitva.\n- default: A fájlok új ablakban nyílnak meg, kivéve akkor, ha az alkalmazáson belül lettek kiválasztva (pl. a Fájl menüből).\n- on: A fájlok új ablakban nyílnak meg.\n- off: A fájlok abban az ablakban nyílnak meg, ahol a mappájuk meg van nyitva vagy a legutoljára aktív ablakban\nMegjegyzés: vannak esetek, amikor ez a beállítás figyelmen kívül van hagyva (pl. a -new-window vagy a -reuse-window parancssori beállítás használata esetén).", "window.openFoldersInNewWindow.on": "A mappák új ablakban nyílnak meg", "window.openFoldersInNewWindow.off": "A mappák lecserélik a legutoljára aktív ablakot", "window.openFoldersInNewWindow.default": "A mappák új ablakban nyílnak meg, kivéve akkor, ha a mappát az alkalmazáson belül lett kiválasztva (pl. a Fájl menüből)", "openFoldersInNewWindow": "Meghatározza, hogy a mappák új ablakban legyenek-e megnyitva.\n- alapértelmezett: A mappák új ablakban nyílnak meg, kivéve akkor, ha a mappát az alkalmazáson belül lett kiválasztva (pl. a Fájl menüből)\n- on: A mappák új ablakban nyílnak meg\n- off: A mappák lecserélik a legutoljára aktív ablakot\nMegjegyzés: vannak esetek, amikor ez a beállítás figyelmen kívül van hagyva (pl. a -new-window vagy a -reuse-window parancssori beállítás használata esetén).", + "window.openWithoutArgumentsInNewWindow.on": "Új, üres ablak megnyitása", + "window.openWithoutArgumentsInNewWindow.off": "Váltás a legutóbb aktív, futó példányra", + "openWithoutArgumentsInNewWindow": "Meghatározza, hogy egy új, üres ablak nyíljon-e meg, ha egy új példány indul paraméterek nélkül, vagy váltson a legutóbb aktív, futó példányra.\n- on: Új, üres ablak megnyitása.\n- off: váltás a legutóbb aktív, futó példányra\nMegjegyzés: vannak esetek, amikor ez a beállítás figyelmen kívül van hagyva (pl. a -new-window vagy a -reuse-window parancssori beállítás használata esetén).", "window.reopenFolders.all": "Összes ablak újranyitása.", "window.reopenFolders.folders": "Összes mappa újranyitása. Az üres munkaterületek nem lesznek helyreállítva.", "window.reopenFolders.one": "A legutóbbi aktív ablak újranyitása.", @@ -58,7 +63,7 @@ "restoreWindows": "Meghatározza, hogy újraindítás után hogyan vannak ismét megnyitva az ablakok. A 'none' választása esetén mindig üres munkaterület indul, 'one' esetén a legutóbb használt ablak nyílik meg újra, a 'folders' megnyitja az összes megnyitott mappát, míg az 'all' újranyitja az összes ablakot az előző munkamenetből.", "restoreFullscreen": "Meghatározza, hogy az ablak teljesképernyős módban nyíljon-e meg, ha kilépéskor teljes képernyős módban volt.", "zoomLevel": "Meghatározza az ablak nagyítási szintjét. Az eredei méret 0, és minden egyes plusz (pl. 1) vagy mínusz (pl. -1) 20%-kal nagyobb vagy kisebb nagyítási szintet jelent. Tizedestört megadása esetén a nagyítási szint finomabban állítható.", - "title": "Meghatározza az ablak címét az aktív szerkesztőablak alapján. A változók a környezet alapján vannak behelyettesítve:\n${activeEditorShort}: a fájl neve (pl. myFile.txt)\n${activeEditorMedium}: a fájl relatív elérési útja a munkaterület mappájához képest (pl. myFolder/myFile.txt)\n${activeEditorLong}: a fájl teljes elérési útja (pl. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: azon munkaterületi mappa a neve, amelyben a fájl található (pl. myFolder)\n${folderPath}: azon munkaterületi mappa elérési útja, amelyben a fájl található (pl. /Users/Development/myFolder)\n${rootName}: a munkaterület neve (pl. myFolder vagy myWorkspace)\n${rootPath}: a munkaterület elérési útja (pl. /Users/Development/myWorkspace)\n${appName}: pl. VS Code\n${dirty}: módosításjelző, ami jelzi, ha az aktív szerkesztőablak tartalma módosítva lett\n${separator}: feltételes elválasztó (\" - \"), ami akkor jelenik meg, ha olyan változókkal van körülvéve, amelyeknek van értéke", + "title": "Meghatározza az ablak címét az aktív szerkesztőablak alapján. A változók a környezet alapján vannak behelyettesítve:\n${activeEditorShort}: az aktív fájl neve (pl. myFile.txt)\n${activeEditorMedium}: a fájl relatív elérési útja a munkaterület mappájához képest (pl. myFolder/myFile.txt)\n${activeEditorLong}: a fájl teljes elérési útja (pl. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: azon munkaterületi mappa a neve, amelyben a fájl található (pl. myFolder)\n${folderPath}: azon munkaterületi mappa elérési útja, amelyben a fájl található (pl. /Users/Development/myFolder)\n${rootName}: a munkaterület neve (pl. myFolder vagy myWorkspace)\n${rootPath}: a munkaterület elérési útja (pl. /Users/Development/myWorkspace)\n${appName}: pl. VS Code\n${dirty}: módosításjelző, ami jelzi, ha az aktív szerkesztőablak tartalma módosítva lett\n${separator}: feltételes elválasztó (\" - \"), ami akkor jelenik meg, ha statikus szöveggek vagy olyan változókkal van körülvéve, amelyeknek van értéke\n", "window.newWindowDimensions.default": "Az új ablakok a képernyő közepén nyílnak meg.", "window.newWindowDimensions.inherit": "Az új ablakok ugyanolyan méretben és ugyanazon a helyen jelennek meg, mint a legutoljára aktív ablak.", "window.newWindowDimensions.maximized": "Az új ablakok teljes méretben nyílnak meg.", @@ -74,6 +79,7 @@ "autoDetectHighContrast": "Ha engedélyezve van, az alkalmazás automatikusan átvált a nagy kontrasztos témára, ha a WIndows a nagy kontrasztos témát használ, és a sötét témára, ha a Windows átvált a nagy kontrasztos témáról.", "titleBarStyle": "Módosítja az ablak címsorának megjelenését. A változtatás teljes újraindítást igényel.", "window.nativeTabs": "Engedélyezi a macOS Sierra ablakfüleket. Megjegyzés: a változtatás teljes újraindítást igényel, és a natív fülek letiltják az egyedi címsorstílust, ha azok be vannak konfigurálva.", + "window.smoothScrollingWorkaround": "Akkor engedélyezze ezt a kerülőmegoldást, ha a görgetés nem egyenletes egy kis méretre rakott VS Code-ablak helyreállítása után. Ez egy kerülőmegoldás arra a problémára (https://github.com/Microsoft/vscode/issues/13612), amely a trackpadokkal rendelkező eszközöket érinti, például a Microsoft Surface készülékeit. A kerülőmegoldás engedélyezése a felület elrendezésének ugrálásával járhat az ablak kis méretből való helyreállítása után, de egyébként nem okoz más problémát.", "zenModeConfigurationTitle": "Zen-mód", "zenMode.fullScreen": "Meghatározza, hogy zen-módban a munakterület teljes képernyős módba vált-e.", "zenMode.centerLayout": "Meghatározza, hogy zen-módban középre igazított elrendezés van-e.", diff --git a/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 37fc52be33c..9682e0aa906 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Nem megerősített töréspont", "functionBreakpointUnsupported": "Ez a hibakereső nem támogatja a függvénytöréspontokat", "breakpointDirtydHover": "Nem megerősített töréspont. A fájl módosult, indítsa újra a hibakeresési munkamenetet.", + "logBreakpointUnsupported": "Ez a hibakereső nem támogatja a naplózási pontokat", "conditionalBreakpointUnsupported": "Ez a hibakereső nem támogatja a feltételes töréspontokat", "hitBreakpointUnsupported": "Ez a hibakereső nem támogatja az érintési feltételes töréspontokat" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 21b6e93773f..621a6e08120 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -24,16 +24,12 @@ "restartFrame": "Keret újraindítása", "removeBreakpoint": "Töréspont eltávolítása", "removeAllBreakpoints": "Összes töréspont eltávolítása", - "enableBreakpoint": "Töréspont engedélyezése", - "disableBreakpoint": "Töréspont letiltása", "enableAllBreakpoints": "Összes töréspont engedélyezése", "disableAllBreakpoints": "Összes töréspont letiltása", "activateBreakpoints": "Töréspontok aktiválása", "deactivateBreakpoints": "Töréspontok deaktiválása", "reapplyAllBreakpoints": "Töréspontok felvétele ismét", "addFunctionBreakpoint": "Függvénytöréspont hozzáadása", - "addConditionalBreakpoint": "Feltételes töréspont hozzáadása...", - "editConditionalBreakpoint": "Töréspont szerkesztése...", "setValue": "Érték beállítása", "addWatchExpression": "Kifejezés hozzáadása", "editWatchExpression": "Kifejezés szerkesztése", diff --git a/i18n/hun/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 37ae84d50a7..a6f8cf46fb3 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Hibakeresés: Töréspont be- és kikapcsolása", "conditionalBreakpointEditorAction": "Hibakeresés: Feltételes töréspont...", + "logPointEditorAction": "Hibakeresés: Naplózási pont hozzáadása...", "runToCursor": "Futtatás a kurzorig", "debugEvaluate": "Hibakeresés: Kiértékelés", "debugAddToWatch": "Hibakeresés: Hozzáadás a figyelőlistához", diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..07aae479f50 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetLogMessagePlaceholder": "A töréspont érintése esetén naplózandó üzenet. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", + "breakpointWidgetHitCountPlaceholder": "Futás megállítása, ha adott alkalommal érintve lett. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", + "breakpointWidgetExpressionPlaceholder": "Futás megállítása, ha a kifejezés értéke igazra értékelődik ki. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", + "breakpointWidgetLogMessageAriaLabel": "A program ezt üzenetet naplózza a töréspont minden egyes érintése során. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", + "breakpointWidgetHitCountAriaLabel": "A program akkor fog megállni itt, ha adott alkalommal érintette ezt a pontot. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", + "breakpointWidgetAriaLabel": "A program csak akkor áll meg itt, ha a feltétel igaz. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", + "expression": "Kifejezés", + "hitCount": "Érintések száma", + "logMessage": "Üzenet naplózása" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 7b054714fb8..ee50c51ea05 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Töréspont szerkesztése...", + "disableBreakpoint": "Töréspont letiltása", + "enableBreakpoint": "Töréspont engedélyezése", "removeBreakpoints": "Töréspontok eltávolítása", "removeBreakpointOnColumn": "{0}. oszlopban található töréspont eltávolítása", "removeLineBreakpoint": "Sorra vonatkozó töréspont eltávolítása", @@ -18,5 +21,7 @@ "enableBreakpoints": "{0}. oszlopban található töréspont engedélyezése", "enableBreakpointOnLine": "Sorszintű töréspont engedélyezése", "addBreakpoint": "Töréspont hozzáadása", + "conditionalBreakpoint": "Feltételes töréspont hozzáadása...", + "addLogPoint": "Naplózási pont hozzáadása...", "addConfiguration": "Konfiguráció hozzáadása..." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 709e548fd91..d46bba56fc8 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,6 +29,6 @@ "showErrors": "Hibák megjelenítése", "noFolderWorkspaceDebugError": "Az aktív fájlon nem lehet hibakeresést végezni. Bizonyosodjon meg róla, hogy el van mentve a lemezre, és hogy az adott fájltípushoz telepítve van a megfelelő hibakeresési kiegészítő.", "cancel": "Mégse", - "DebugTaskNotFound": "A(z) '{0}' preLaunchTask nem található.", - "taskNotTracked": "A(z) ${0} preLaunchTaskot nem lehet követni." + "DebugTaskNotFound": "A(z) '{0}' feladat nem található.", + "taskNotTracked": "A(z) '{0}' feladatot nem lehet követni." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 1cd253cec32..f20852131e1 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -18,6 +18,7 @@ "debugRequest": "A konfiguráció kérési típusa. Lehet \"launch\" vagy \"attach\".", "debugServer": "Csak hibakeresési kiegészítők fejlesztéséhez: ha a port meg van adva, akkor a VS Code egy szerver módban futó hibakeresési illesztőhöz próbál meg csatlakozni.", "debugPrelaunchTask": "A hibakeresési folyamat előtt futtatandó feladat.", + "debugPostDebugTask": "A hibakeresési folyamat vége után futtatandó feladat.", "debugWindowsConfiguration": "Windows-specifikus indítási konfigurációs attribútumok.", "debugOSXConfiguration": "OS X-specifikus indítási konfigurációs attribútumok.", "debugLinuxConfiguration": "Linux-specifikus indítási konfigurációs attribútumok.", diff --git a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index cea278e8b7c..7a913054b25 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "Ajánlott kiegészítők konfigurálása (munkaterület-mappára vonatkozóan)", "malicious tooltip": "A kiegészítőt korábban problémásnak jelezték.", "malicious": "Rosszindulatú", + "disabled": "Letiltva", + "disabled globally": "Letiltva", + "disabled workspace": "Letiltva ezen a munkaterületen", "disableAll": "Összes telepített kiegészítő letiltása", "disableAllWorkspace": "Összes telepített kiegészítő letiltása a munkaterületre vonatkozóan", "enableAll": "Összes kiegészítő engedélyezése", diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..70f8aa798f7 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,61 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Kiegészítő neve", + "extension id": "Kiegészítő azonosítója", + "preview": "Betekintő", + "builtin": "Beépített", + "publisher": "Kiadó neve", + "install count": "Telepítések száma", + "rating": "Értékelés", + "repository": "Forráskódtár", + "license": "Licenc", + "details": "Részletek", + "contributions": "Szolgáltatások", + "changelog": "Változtatási napló", + "dependencies": "Függőségek", + "noReadme": "Leírás nem található.", + "noChangelog": "Változtatási napló nem található.", + "noContributions": "Nincsenek szolgáltatások", + "noDependencies": "Nincsenek függőségek", + "settings": "Beállítások ({0})", + "setting name": "Név", + "description": "Leírás", + "default": "Alapértelmezett", + "debuggers": "Hibakeresők ({0})", + "debugger name": "Név", + "debugger type": "Típus", + "views": "Nézetek ({0})", + "view id": "Azonosító", + "view name": "Név", + "view location": "Hol?", + "localizations": "Lokalizációk ({0})", + "localizations language id": "Nyelv azonosítója", + "localizations language name": "Nyelv neve", + "localizations localized language name": "Nyelv neve (lokalizálva)", + "colorThemes": "Színtémák ({0})", + "iconThemes": "Ikontémák ({0})", + "colors": "Színek ({0})", + "colorId": "Azonosító", + "defaultDark": "Alapértelmezett sötét", + "defaultLight": "Alapértelmezett világos", + "defaultHC": "Alapértelmezett nagy kontrasztú", + "JSON Validation": "JSON-validációk ({0})", + "fileMatch": "Fájlegyezés", + "schema": "Séma", + "commands": "Parancsok ({0})", + "command name": "Név", + "keyboard shortcuts": "Billentyűparancsok", + "menuContexts": "Helyi menük", + "languages": "Nyelvek ({0})", + "language id": "Azonosító", + "language name": "Név", + "file extensions": "Fájlkiterjesztések", + "grammar": "Nyelvtan", + "snippets": "Kódtöredékek" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 51523b2194e..f355d1508ab 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,7 +8,7 @@ ], "neverShowAgain": "Ne jelenítse meg újra", "searchMarketplace": "Keresés a piactéren", - "showLanguagePackExtensions": "A piactéren található olyan kiegészítő, ami lefordítja a(z) '.{0}' VS Code-ot '{0}' nyelvre", + "showLanguagePackExtensions": "A piactéren található olyan kiegészítő, ami lefordítja a VS Code-ot '{0}' nyelvre", "dynamicWorkspaceRecommendation": "Ez a kiegészítő lehet, hogy érdekelni fogja, mert népszerű a(z) {0} forráskódtár felhasználói körében.", "exeBasedRecommendation": "Ez a kiegészítő azért ajánlott, mert a következő telepítve van: {0}.", "fileBasedRecommendation": "Ez a kiegészítő a közelmúltban megnyitott fájlok alapján ajánlott.", diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 33a83814b95..5ef5e09669c 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,9 @@ "recommendedExtensions": "Ajánlott", "otherRecommendedExtensions": "További ajánlatok", "workspaceRecommendedExtensions": "Ajánlott a munkaterülethez", - "builtInExtensions": "Beépített", + "builtInExtensions": "Funkciók", + "builtInThemesExtensions": "Témák", + "builtInBasicsExtensions": "Nyelvek", "searchExtensions": "Kiegészítők keresése a piactéren", "sort by installs": "Rendezés a telepítések száma szerint", "sort by rating": "Rendezés értékelés szerint", diff --git a/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 7b1855ae0b2..5aaad4bc1e6 100644 --- a/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,6 +8,8 @@ ], "textFileEditor": "Szövegfájlszerkesztő", "createFile": "Fájl létrehozása", + "relaunchWithIncreasedMemoryLimit": "Újraindítás", + "configureMemoryLimit": "Beállítás", "fileEditorWithInputAriaLabel": "{0}. Szövegfájlszerkesztő.", "fileEditorAriaLabel": "Szövegfájlszerkesztő" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index fd4fbe037e7..95afc5f3a16 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -34,8 +34,10 @@ "confirmDeleteMessageFolder": "Törli a(z) '{0}' nevű mappát és annak teljes tartalmát? ", "confirmDeleteMessageFile": "Véglegesen törli a(z) '{0}' nevű fájlt?", "irreversible": "A művelet nem vonható vissza!", - "cancel": "Mégse", - "permDelete": "Végleges törlés", + "binFailed": "Nem sikerült törölni a lomtár használatával. Szeretné helyette véglegesen törölni?", + "trashFailed": "Nem sikerült törölni a kuka használatával. Szeretné helyette véglegesen törölni?", + "deletePermanentlyButtonLabel": "&&Törlés véglegesen", + "retryButtonLabel": "Új&&rapróbálkozás", "importFiles": "Fájlok importálása", "confirmOverwrite": "A célmappában már van ilyen nevű mappa vagy fájl. Le szeretné cserélni?", "replaceButtonLabel": "&&Csere", diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 03c5761aece..3cbfd1d59d4 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,8 +35,10 @@ "hotExit": "Meghatározza, hogy a nem mentett fájlokra emlékezzen-e az alkalmazás a munkamenetek között, így ki lehet hagyni a mentéssel kapcsolatos felugró ablakokat kilépésnél.", "useExperimentalFileWatcher": "Új, kísérleti fájlfigyelő használata.", "defaultLanguage": "Az új fájlokhoz alapértelmezetten hozzárendelt nyelv.", + "maxMemoryForLargeFilesMB": "Az alkalmazás által nagy fájlok megnyitása során használható memória új korlátja megabájtban. Ha nagyobb korláttal szeretné indítani az alkalmazást, használja a --max-memory=ÚJMÉRET kapcsolót a parancssorban.", "editorConfigurationTitle": "Szerkesztőablak", "formatOnSave": "Fájlok formázása mentéskor. Az adott nyelvhez rendelkezésre kell állni formázónak, nem lehet beállítva automatikus mentés, és a szerkesztő nem állhat éppen lefelé.", + "formatOnSaveTimeout": "Időkorlát mentéskor végzett formázások esetén. Meghatároz egy időkorlátot ezredmásodpercben a formatOnSave-parancsok számára. Az ennél hosszabb ideig tartó parancsok meg lesznek szakítva.", "explorerConfigurationTitle": "Fájlkezelő", "openEditorsVisible": "A megnyitott szerkesztőablakok panelen megjelenített szerkesztőablakok száma.", "autoReveal": "Meghatározza, hogy a fájlkezelőben automatikusan fel legyenek fedve és ki legyenek jelölve a fájlok, amikor megnyitják őket.", diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index c0be92f2f54..dcbc1b87cbf 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -13,7 +13,9 @@ "dropFolder": "Szeretné hozzáadni a mappát a munkaterülethez?", "addFolders": "Mappák hozzá&&adása", "addFolder": "Mappa hozzá&&adása", + "confirmRootsMove": "Szeretné módosítani több gyökérmappa sorrendjét a munkaterületen belül?", "confirmMultiMove": "Át szeretné helyezni a következő {0} fájlt?", + "confirmRootMove": "Szeretné módosítani a(z) '{0}' gyökérmappa sorrendjét a munkaterületen belül?", "confirmMove": "Át szeretné helyezni a(z) '{0}' nevű fájlt?", "doNotAskAgain": "Ne kérdezze meg újra", "moveButtonLabel": "&&Áthelyezés", diff --git a/i18n/hun/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..c2a0ca800e8 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "HTML-előnézet" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/hun/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..d5c321fd607 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Érvénytelen bemenet a szerkesztőablakból." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..6f1887b8477 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Fejlesztői" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/hun/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..89f213109cf --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview-fejlesztőeszközök megnyitása", + "refreshWebviewLabel": "Webview-k újratöltése" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index ecee49b1a31..cb2d1444c69 100644 --- a/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Szeretné a VS Code felületét {0} nyelvűre állítani és újraindítani az alkalmazást?", + "yes": "Igen", + "no": "Nem", + "doNotAskAgain": "Ne kérdezze meg újra", "JsonSchema.locale": "A felhasználói felületen használt nyelv.", "vscode.extension.contributes.localizations": "Lokalizációkat szolgáltat a szerkesztőhöz", "vscode.extension.contributes.localizations.languageId": "Annak a nyelvnek az azonosítója, amelyre a megjelenített szövegek fordítva vannak.", diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..c1008a9652d --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Másolás", + "copyMarkerMessage": "Üzenet másolása" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..0eecc9c3575 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Összesen {0} probléma", + "filteredProblems": "{0} probléma megjelenítve (összesen: {1})" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..e26c8c27c96 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Problémák", + "tooltip.1": "A fájlban 1 probléma található", + "tooltip.N": "A fájlban {0} probléma található", + "markers.showOnFile": "Fájlokban és mappákban található hibák és figyelmeztetések megjelenítése" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..692df32c15d --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,44 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Nézet", + "problems.view.toggle.label": "Problémák be- és kikapcsolása (hiba, figyelmeztetés, információ)", + "problems.view.focus.label": "Váltás a problémákra (hiba, figyelmeztetés, információ)", + "problems.panel.configuration.title": "Problémák-nézet", + "problems.panel.configuration.autoreveal": "Meghatározza, hogy a problémák nézet automatikusan felfedje-e a fájlokat, amikor megnyitja őket.", + "markers.panel.title.problems": "Problémák", + "markers.panel.aria.label.problems.tree": "Problémák fájlonként csoportosítva", + "markers.panel.no.problems.build": "A munkaterületen eddig egyetlen hiba sem lett érzékelve.", + "markers.panel.no.problems.filters": "A megadott szűrőfeltételnek egyetlen elem sem felel meg.", + "markers.panel.action.filter": "Problémák szűrése", + "markers.panel.filter.placeholder": "Szűrés típus vagy szöveg alapján", + "markers.panel.filter.errors": "hibák", + "markers.panel.filter.warnings": "figyelmeztetések", + "markers.panel.filter.infos": "információk", + "markers.panel.single.error.label": "1 hiba", + "markers.panel.multiple.errors.label": "{0} hiba", + "markers.panel.single.warning.label": "1 figyelmeztetés", + "markers.panel.multiple.warnings.label": "{0} figyelmeztetés", + "markers.panel.single.info.label": "1 információ", + "markers.panel.multiple.infos.label": "{0} információ", + "markers.panel.single.unknown.label": "1 ismeretlen", + "markers.panel.multiple.unknowns.label": "{0} ismeretlen", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} {1} problémával", + "problems.tree.aria.label.marker.relatedInformation": "Ez a probléma {0} helyre hivatkozik.", + "problems.tree.aria.label.error.marker": "{0} által generált hiba: {1}, sor: {2}, oszlop: {3}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Hiba: {0}, sor: {1}, oszlop: {2}.{3}", + "problems.tree.aria.label.warning.marker": "{0} által generált figyelmeztetés: {1}, sor: {2}, oszlop: {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Figyelmeztetés: {0}, sor: {1}, oszlop: {2}.{3}", + "problems.tree.aria.label.info.marker": "{0} által generált információ: {1}, sor: {2}, oszlop: {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Információ: {0}, sor: {1}, oszlop: {2}.{3}", + "problems.tree.aria.label.marker": "{0} által generált probléma: {1}, sor: {2}, oszlop: {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Probléma: {0}, sor: {1}, oszlop: {2}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{0}, sor: {1}, oszlop: {2}, a következő helyen: {3}", + "errors.warnings.show.label": "Hibák és figyelmezetések megjelenítése" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/hun/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 65dac081944..b0047af883c 100644 --- a/i18n/hun/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Kimenet be- és kikapcsolása", "clearOutput": "Kimenet törlése", "toggleOutputScrollLock": "Kimenet görgetési zárának be- és kikapcsolása", - "switchToOutput.label": "Váltás a kimenetre" + "switchToOutput.label": "Váltás a kimenetre", + "openInLogViewer": "Naplófájl megnyitása" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index 3745c84cea4..0e30f573276 100644 --- a/i18n/hun/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Kimenet", "logViewer": "Naplófájl-megjelenítő", "viewCategory": "Nézet", - "clearOutput.label": "Kimenet törlése" + "clearOutput.label": "Kimenet törlése", + "openActiveLogOutputFile": "Nézet: Aktív napló kimeneti fájljának megnyitása" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index e26ae7fdac0..76f9adaac9a 100644 --- a/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -7,6 +7,8 @@ "Do not edit this file. It is machine generated." ], "keybindingsInputName": "Billentyűparancsok", + "showDefaultKeybindings": "Alapértelmezett billentyűparancsok megjelenítése", + "showUserKeybindings": "Felhasználói billentyűparancsok megjelenítése", "SearchKeybindings.AriaLabel": "Billentyűparancsok keresése", "SearchKeybindings.Placeholder": "Billentyűparancsok keresése", "sortByPrecedene": "Rendezés precedencia szerint", diff --git a/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 6c9f746df9e..28936cbbe73 100644 --- a/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Következő bele foglalt keresési minta megjelenítése", "previousSearchIncludePattern": "Előző bele foglalt keresési minta megjelenítése", - "nextSearchExcludePattern": "Következő kizáró keresési minta megjelenítése", - "previousSearchExcludePattern": "Előző kizáró keresési minta megjelenítése", "nextSearchTerm": "Következő keresőkifejezés megjelenítése", "previousSearchTerm": "Előző keresőkifejezés megjelenítése", "showSearchViewlet": "Keresés megjelenítése", diff --git a/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json index 414222489bd..5e9fc946994 100644 --- a/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,9 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Keresési részletek be- és kikapcsolása", - "searchScope.includes": "bele foglalt fájlok", - "label.includes": "Keresésbe bele foglalt fájlok", - "searchScope.excludes": "kizárt fájlok", - "label.excludes": "Keresésből kizárt fájlok", + "searchIncludeExclude.label": "belefoglalt és kizárt fájlok", + "searchIncludeExclude.ariaLabel": "Keresésbe belefoglalási és kizárási minták", + "searchIncludeExclude.placeholder": "Példa: src,!*.ts, test/**/*.log", "replaceAll.confirmation.title": "Összes cseréje", "replaceAll.confirm.button": "&&Csere", "replaceAll.occurrence.file.message": "{0} előfordulás cserélve {1} fájlban a következőre: '{2}'.", diff --git a/i18n/hun/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/hun/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 72c95a38758..45757d97a23 100644 --- a/i18n/hun/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Egy problémaminta vagy egy szolgáltatott vagy elődefiniált problémaminta neve. Elhagyható, ha az alapként használandó minta meg van adva.", "ProblemMatcherSchema.base": "A alapként használni kívánt problémaillesztő neve.", "ProblemMatcherSchema.owner": "A probléma tulajdonosa a Code-on belül. Elhagyható, ha az alapként használt minta meg van adva. Alapértelmezett értéke 'external', ha nem létezik és az alapként használt minta nincs meghatározva.", + "ProblemMatcherSchema.source": "A diagnosztika forrásának emberek által is értelmezhető leírása, pl. 'typescript' vagy 'super lint'.", "ProblemMatcherSchema.severity": "Az elkapott problémák alapértelmezett súlyossága. Ez az érték van használva, ha a minta nem definiál illesztési csoportot a súlyossághoz.", "ProblemMatcherSchema.applyTo": "Meghatározza, hogy a szöveges dokumentumhoz jelentett probléma megnyitott, bezárt vagy minden dokumentumra legyen alkalmazva.", "ProblemMatcherSchema.fileLocation": "Meghatározza, hogy a problémamintában talált fájlnevek hogyan legyenek értelmezve.", diff --git a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 65bf3fa4359..5971de78c2e 100644 --- a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,15 @@ "JsonSchema.tasks.group.none": "A feladatot egyetlen csoporthoz sem rendeli", "JsonSchema.tasks.group": "Meghatározza a feladat végrehajtási csoportját. A \"build\" esetén a buildelési csoportba, a \"test\" esetén a tesztelési csoportba kerül bele a feladat.", "JsonSchema.tasks.type": "Meghatározza, hogy a feladat folyamatként van-e végrehajtva vagy egy parancsként a shellben.", + "JsonSchema.command.quotedString.value": "A parancs tényleges értéke", + "JsonSchema.tasks.quoting.escape": "A karaktereket a shell saját feloldókarakterével oldja fel (pl. PowerShell alatt a `, míg bash alatt a \\ karakterrel).", + "JsonSchema.tasks.quoting.strong": "Az argumentumot a shell erős idézőjel-karakterével veszi körül (pl. PowerShell és bash alatt a \" karakterrel). ", + "JsonSchema.tasks.quoting.weak": "Az argumentumot a shell erős idézőjel-karakterével veszi körül (pl. PowerShell és bash alatt a ' karakterrel). ", + "JsonSchema.command.quotesString.quote": "Hogyan legyen idézőjelezve a parancs értéke.", + "JsonSchema.command": "A végrehajtandó parancs. Lehet egy külső parancs vagy egy rendszerparancs.", + "JsonSchema.args.quotedString.value": "Az argumentum tényleges értéke", + "JsonSchema.args.quotesString.quote": "Hogyan legyen idézőjelezve az argumentum értéke.", + "JsonSchema.tasks.args": "A parancs meghívásakor átadott argumentumok.", "JsonSchema.tasks.label": "A feladat felhasználói felületen megjelenő neve", "JsonSchema.version": "A konfiguráció verziószáma", "JsonSchema.tasks.identifier": "A feladat felhasználó által definiált azonosítója, amivel hivatkozni lehet a feladatra a lauch.json-ban vagy egy dependsOn-utasításban.", diff --git a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index efbb0ead2d7..ab9830c1cef 100644 --- a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,11 @@ ], "tasksCategory": "Feladatok", "ConfigureTaskRunnerAction.label": "Feladat beállítása", - "problems": "Problémák", + "totalErrors": "{0} hiba", + "totalWarnings": "{0} figyelmeztetés", + "totalInfos": "{0} információ", "building": "Buildelés...", - "manyMarkers": "99+", + "manyProblems": "10k+", "runningTasks": "Futó feladatok megjelenítése", "tasks": "Feladatok", "TaskSystem.noHotSwap": "A feladatvégrehajtó motor megváltoztatása egy futó, aktív feladat esetén az ablak újraindítását igényli.", @@ -46,8 +48,8 @@ "recentlyUsed": "legutóbb futtatott feladatok", "configured": "konfigurált feladatok", "detected": "talált feladatok", - "TaskService.ignoredFolder": "A következő munkaterületi mappák figyelmen kívül vannak hagyva, mert 0.1.0-s verziójú feladatkonfigurációt használnak: {0}", "TaskService.notAgain": "Ne jelenítse meg újra", + "TaskService.ignoredFolder": "A következő munkaterületi mappák figyelmen kívül vannak hagyva, mert 0.1.0-s verziójú feladatkonfigurációt használnak: {0}", "TaskService.pickRunTask": "Válassza ki a futtatandó feladatot!", "TaslService.noEntryToRun": "Nincs futtatandó feladat. Feladatok konfigurálása...", "TaskService.fetchingBuildTasks": "Buildelési feladatok lekérése...", diff --git a/i18n/hun/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/hun/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 859b71eada3..fc54f4c27dc 100644 --- a/i18n/hun/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Figyelmeztetés: az options.cwd értékének string típusúnak kell lennie. A következő érték figyelmen kívül van hagyva: {0}.", + "ConfigurationParser.inValidArg": "Hiba: a parancssori argumentum egy string vagy egy idézőjeles string lehet. A megadott érték:\n{0}", "ConfigurationParser.noargs": "Hiba: a parancssori argumentumokat string típusú tömbként kell megadni. A megadott érték:\n{0}", "ConfigurationParser.noShell": "Figyelmeztetés: a shellkonfiguráció csak akkor támogatott, ha a feladat a terminálban van végrehajtva.", "ConfigurationParser.noName": "Hiba: a deklarációs hatókörben lévő problémailleszőnek kötelező nevet adni:\n{0}\n", @@ -17,7 +18,6 @@ "ConfigurationParser.missingRequiredProperty": "Hiba: a(z) '{0}' feladatkonfigurációból hiányzik a kötelező '{1}' tulajdonság. A feladatkonfiguráció figyelmen kívül lesz hagyva.", "ConfigurationParser.notCustom": "Hiba: a feladat nem egyedi feladatként van definiálva. A konfiguráció figyelmen kívül lesz hagyva.\n{0}\n", "ConfigurationParser.noTaskName": "Hiba: a feladatnak rendelkeznie kell adni taskName tulajdonsággal. A feladat figyelmen kívül lesz hagyva.\n{0}\n", - "taskConfiguration.shellArgs": "Figyelmeztetés: a(z) '{0}' feladat egy rendszerparancs, és az argumentumok egyikében escape-elés nélküli szóköz található. A megfelelő idézőjelezés érdekében olvassza bele az argumentumokat a parancsba.", "taskConfiguration.noCommandOrDependsOn": "Hiba: a(z) '{0}' feladat nem ad meg parancsot, és nem definiálja a dependsOn tulajdonságot sem. A feladat figyelmen kívül lesz hagyva. A definíciója:\n{1}", "taskConfiguration.noCommand": "Hiba: a(z) '{0}' feladathoz nincs definiálva a parancs. A feladat figyelmen kívül lesz hagyva. A definíciója:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "A feladatok 2.0.0-s verziója nem támogatja a globális, operációs rendszer-specifikus feladatokat. Alakítsa át őket operációs rendszer-specifikus parancsot tartalmazó feladattá. Az érintett feladatok:\n{0}" diff --git a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 6ebf74d1655..a1e04bdb7c0 100644 --- a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,9 @@ "workbench.action.terminal.hideFindWidget": "Keresőmodul elrejtése", "nextTerminalFindTerm": "Következő keresési kifejezés megjelenítése", "previousTerminalFindTerm": "Előző keresési kifejezés megjelenítése", - "quickOpenTerm": "Aktív terminál váltása" + "quickOpenTerm": "Aktív terminál váltása", + "workbench.action.terminal.focusPreviousCommand": "Váltás az előző parancsra", + "workbench.action.terminal.focusNextCommand": "Váltás a következő parancsra", + "workbench.action.terminal.selectToPreviousCommand": "Előző parancs kiválasztása", + "workbench.action.terminal.selectToNextCommand": "Következő parancs kiválasztása" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index b869ee23431..f1c61bd70f2 100644 --- a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Másolás", + "split": "Kettéosztás", "paste": "Beillesztés", "selectAll": "Összes kijelölése", - "clear": "Törlés", - "split": "Kettéosztás" + "clear": "Törlés" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..d682cbdfb4c --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Kiadási jegyzék: {0}", + "unassigned": "nincs hozzárendelve" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 41b05f04072..150b707b38f 100644 --- a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Később", - "unassigned": "nincs hozzárendelve", "releaseNotes": "Kiadási jegyzék", "showReleaseNotes": "Kiadási jegyzék megjelenítése", "read the release notes": "Üdvözöljük a {0} v{1} verziójában. Szeretné megtekinteni a kiadási jegyzéket?", diff --git a/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..983527bcdae --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "webview-szerkesztő" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/hun/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..37523ae01ca --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.optOutNotice": "Segítsen a VS Code tökéletesítésében azzal, hogy engedélyezi a Microsoft számára a használati adatok gyűjtését! Olvasssa el az [adatvédelmi nyilatkozatot]({0}), és tudja meg, hogyan [kapcsolhatja ki]({1}) ezt a funkciót.", + "telemetryOptOut.optInNotice": "Segítsen a VS Code tökéletesítésében azzal, hogy engedélyezi a Microsoft számára a használati adatok gyűjtését! Olvasssa el az [adatvédelmi nyilatkozatot]({0}), és tudja meg, hogyan [kapcsolhatja be]({1}) ezt a funkciót.", + "telemetryOptOut.readMore": "További információk" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..4dd179c8823 --- /dev/null +++ b/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,21 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolderMultiRoot": "A ${workspaceFolder} értékét nem lehet feloldani egy többmappás munkaterületen. Pontosítsa a változó hatókörét a : karakterrel és a mappa nevének megadásával.", + "canNotResolveWorkspaceFolder": "A ${workspaceFolder} értékét nem lehet feloldani. Nyisson meg egy mappát!", + "canNotResolveFolderBasenameMultiRoot": "A ${workspaceFolderBasename} értékét nem lehet feloldani egy többmappás munkaterületen. Pontosítsa a változó hatókörét a : karakterrel és a mappa nevének megadásával.", + "canNotResolveFolderBasename": "A ${workspaceFolderBasename} értékét nem lehet feloldani. Nyisson meg egy mappát!", + "canNotResolveLineNumber": "A ${lineNumber} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveSelectedText": "A ${selectedText} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveFile": "A ${file} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveRelativeFile": "A ${relativeFile} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveFileDirname": "A ${fileDirname} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveFileExtname": "A ${fileExtname} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveFileBasename": "A ${fileBasename} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", + "canNotResolveFileBasenameNoExtension": "A ${fileBasenameNoExtension} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/hun/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..a1522b0bc3e --- /dev/null +++ b/i18n/hun/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Igen", + "cancelButton": "Mégse" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index b79eb0a2991..3008795a9ef 100644 --- a/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,7 @@ "neverShowAgain": "Ne jelenítse meg újra", "netVersionError": "A működéshez Microsoft .NET-keretrendszer 4.5 szükséges. A telepítéshez kövesse az alábbi hivatkozást!", "learnMore": "Utasítások", - "enospcError": "A {0} kezd kifogyni a fájlleírókból. Kövesse az utasításokat az alábbi hivatkozáson a probléma megoldásához!", + "enospcError": "A {0} nem tudja figyelni a fájlváltozásokat egy ilyen nagy munkaterületen. Kövesse az utasításokat az alábbi hivatkozáson a probléma megoldásához!", "binFailed": "A következő fájlt nem sikerült a lomtárba helyezni: '{0}'", "trashFailed": "A(z) {0} kukába helyezése nem sikerült" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/hun/src/vs/workbench/services/files/node/fileService.i18n.json index 64e3d8c1f61..639f690d07a 100644 --- a/i18n/hun/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,7 @@ "fileInvalidPath": "Érvénytelen fájlerőforrás ({0})", "fileIsDirectoryError": "A fájl egy könyvtár", "fileNotModifiedError": "A fájl azóta nem módosult", - "fileTooLargeForHeapError": "A fájlméret nagyobb, mint az ablak memóriakorlátja. Próbálja meg a következő parancsot futtatni: code --max-memory=<ÚJ MÉRET>", + "fileTooLargeForHeapError": "A fájlméret túllépi az alapértelmezett memóriakorlátot. A jelenlegi beállítás szerint az alkalmazás újraindul {0}MB-os korláttal.", "fileTooLargeError": "A fájl túl nagy a megnyitáshoz", "fileNotFoundError": "Fájl nem található ({0})", "fileBinaryError": "A fájl binárisnak tűnik és nem nyitható meg szövegként", diff --git a/i18n/hun/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/hun/src/vs/workbench/services/progress/browser/progressService2.i18n.json index 9a73f11d6e7..d15b9a685b2 100644 --- a/i18n/hun/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/hun/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} – {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Mégse" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index ca563e236ba..b6c32f7bccf 100644 --- a/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -10,6 +10,7 @@ "vscode.extension.contributes.grammars.language": "Annak a nyelvnek az azonosítója, amely számára szolgáltatva van ez a szintaxis.", "vscode.extension.contributes.grammars.scopeName": "A tmLanguage-fájl által használt TextMate-hatókör neve.", "vscode.extension.contributes.grammars.path": "A tmLanguage-fájl elérési útja. Az elérési út relatív a kiegészítő mappájához képest, és általában './syntaxes/'-zal kezdődik.", - "vscode.extension.contributes.grammars.embeddedLanguages": "Hatókörnév-nyelvazonosító kulcs-érték párokat tartalmazó objektum, ha a nyelvtan tartalmaz beágyazott nyelveket.", + "vscode.extension.contributes.grammars.embeddedLanguages": "Hatókörnevek leképezése nyelvazonosítókra, ha a nyelvtan tartalmaz beágyazott nyelveket.", + "vscode.extension.contributes.grammars.tokenTypes": "Hatókörnevek leképezése tokentípusokra.", "vscode.extension.contributes.grammars.injectTo": "Azon nyelvi hatókörök nevei, ahová be lesz ágyazva ez a nyelvtan." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 2afc247830d..83e21414598 100644 --- a/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/hun/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "Hiányzó karakterlánc a `contributes.{0}.path`-ban. A megadott érték: {1}", "invalid.injectTo": "A `contributes.{0}.injectTo` értéke érvénytelen. Az értéke egy tömb lehet, ami nyelvhatókörök neveit tartalmazza. A megadott érték: {1}", "invalid.embeddedLanguages": "A `contributes.{0}.embeddedLanguages` értéke érvénytelen. Az értéke egy hatókörnév-nyelv kulcs-érték párokat tartalmazó objektum lehet. A megadott érték: {1}", + "invalid.tokenTypes": "A `contributes.{0}.tokenTypes` értéke érvénytelen. Az értéke egy hatókörnév-tokentípus kulcs-érték párokat tartalmazó objektum lehet. A megadott érték: {1}", "invalid.path.1": "A `contributes.{0}.path` ({1}) nem a kiegészítő mappáján belül található ({2}). Emiatt előfordulhat, hogy a kiegészítő nem lesz hordozható.", "no-tm-grammar": "Nincs TM Grammar regisztrálva ehhez a nyelvhez." } \ No newline at end of file diff --git a/i18n/ita/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/ita/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..49766496907 --- /dev/null +++ b/i18n/ita/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "Server di linguaggio CSS", + "folding.start": "Inizio di una regione riducibile", + "folding.end": "Fine di una regione riducibile" +} \ No newline at end of file diff --git a/i18n/ita/extensions/css-language-features/package.i18n.json b/i18n/ita/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..35517becb5b --- /dev/null +++ b/i18n/ita/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Funzionalità del linguaggio CSS", + "description": "Offre un supporto avanzato per i file CSS, LESS e SCSS", + "css.title": "CSS", + "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", + "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.trace.server.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio CSS.", + "css.validate.title": "Controlla la convalida CSS e le gravità dei problemi.", + "css.validate.desc": "Abilita o disabilita tutte le convalide", + "less.title": "LESS", + "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", + "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.title": "Controlla la convalida LESS e le gravità dei problemi.", + "less.validate.desc": "Abilita o disabilita tutte le convalide", + "scss.title": "SCSS (Sass)", + "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", + "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.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.title": "Controlla la convalida SCSS e le gravità dei problemi.", + "scss.validate.desc": "Abilita o disabilita tutte le convalide", + "less.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", + "scss.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", + "css.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", + "css.colorDecorators.enable.deprecationMessage": "L'impostazione `css.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", + "scss.colorDecorators.enable.deprecationMessage": "L'impostazione `scss.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", + "less.colorDecorators.enable.deprecationMessage": "L'impostazione `less.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`." +} \ No newline at end of file diff --git a/i18n/ita/extensions/css/package.i18n.json b/i18n/ita/extensions/css/package.i18n.json index 35517becb5b..35229bd6699 100644 --- a/i18n/ita/extensions/css/package.i18n.json +++ b/i18n/ita/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Funzionalità del linguaggio CSS", - "description": "Offre un supporto avanzato per i file CSS, LESS e SCSS", - "css.title": "CSS", - "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", - "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.trace.server.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio CSS.", - "css.validate.title": "Controlla la convalida CSS e le gravità dei problemi.", - "css.validate.desc": "Abilita o disabilita tutte le convalide", - "less.title": "LESS", - "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", - "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.title": "Controlla la convalida LESS e le gravità dei problemi.", - "less.validate.desc": "Abilita o disabilita tutte le convalide", - "scss.title": "SCSS (Sass)", - "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.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.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", - "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.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.title": "Controlla la convalida SCSS e le gravità dei problemi.", - "scss.validate.desc": "Abilita o disabilita tutte le convalide", - "less.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", - "scss.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", - "css.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", - "css.colorDecorators.enable.deprecationMessage": "L'impostazione `css.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", - "scss.colorDecorators.enable.deprecationMessage": "L'impostazione `scss.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", - "less.colorDecorators.enable.deprecationMessage": "L'impostazione `less.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`." + ] } \ No newline at end of file diff --git a/i18n/ita/extensions/git/out/commands.i18n.json b/i18n/ita/extensions/git/out/commands.i18n.json index 3ce147e64bc..13f1df3d818 100644 --- a/i18n/ita/extensions/git/out/commands.i18n.json +++ b/i18n/ita/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "OK", "push with tags success": "Il push con tag è riuscito.", "pick remote": "Selezionare un repository remoto in cui pubblicare il ramo '{0}':", - "sync is unpredictable": "Questa azione consentirà di effettuare il push e il pull di commit da e verso '{0}'.", "never again": "OK, non visualizzare più", "no remotes to publish": "Il repository non contiene elementi remoti configurati come destinazione della pubblicazione.", "no changes stash": "Non ci sono modifiche da accantonare.", diff --git a/i18n/ita/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/ita/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..8313a5f7e1b --- /dev/null +++ b/i18n/ita/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "Server di linguaggio HTML", + "folding.start": "Inizio di una regione riducibile", + "folding.end": "Fine di una regione riducibile" +} \ No newline at end of file diff --git a/i18n/ita/extensions/html-language-features/package.i18n.json b/i18n/ita/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..b237335f1d3 --- /dev/null +++ b/i18n/ita/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Funzionalità del linguaggio HTML", + "description": "Offre un supporto avanzato sul linguaggio per i file HTML, Razor e Handlebars", + "html.format.enable.desc": "Abilita/Disabilita il formattatore HTML predefinito", + "html.format.wrapLineLength.desc": "Numero massimo di caratteri per riga (0 = disabilita).", + "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.contentUnformatted.desc": "Elenco di tag, separati da virgole, in cui il contenuto non deve essere riformattato. Per impostazione predefinita, con 'null' viene usato il tag 'pre'.", + "html.format.indentInnerHtml.desc": "Imposta un rientro per le sezioni e .", + "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.maxPreserveNewLines.desc": "Numero massimo di interruzioni di riga da mantenere in un unico blocco. Per non impostare un numero massimo, usare 'null'.", + "html.format.indentHandlebars.desc": "Applica la formattazione e imposta un rientro per {{#foo}} e {{/foo}}.", + "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.wrapAttributes.desc": "Esegue il wrapping degli attributi.", + "html.format.wrapAttributes.auto": "Esegue il wrapping degli attributi solo quando viene superata la lunghezza di riga.", + "html.format.wrapAttributes.force": "Esegue il wrapping di ogni attributo ad eccezione del primo.", + "html.format.wrapAttributes.forcealign": "Esegue il wrapping di ogni attributo ad eccezione del primo e mantiene l'allineamento.", + "html.format.wrapAttributes.forcemultiline": "Esegue il wrapping di ogni attributo.", + "html.suggest.angular1.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag e proprietà di Angular V1.", + "html.suggest.ionic.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di Ionic.", + "html.suggest.html5.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di HTML5.", + "html.trace.server.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio HTML.", + "html.validate.scripts": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli script incorporati.", + "html.validate.styles": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli stili incorporati.", + "html.autoClosingTags": "Abilita/Disabilita la chiusura automatica dei tag HTML." +} \ 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 08d31d44db6..35229bd6699 100644 --- a/i18n/ita/extensions/html/package.i18n.json +++ b/i18n/ita/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Funzionalità del linguaggio HTML", - "description": "Offre un supporto avanzato sul linguaggio per i file HTML, Razor e Handlebars", - "html.format.enable.desc": "Abilita/Disabilita il formattatore HTML predefinito", - "html.format.wrapLineLength.desc": "Numero massimo di caratteri per riga (0 = disabilita).", - "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.contentUnformatted.desc": "Elenco di tag, separati da virgole, in cui il contenuto non deve essere riformattato. Per impostazione predefinita, con 'null' viene usato il tag 'pre'.", - "html.format.indentInnerHtml.desc": "Imposta un rientro per le sezioni e .", - "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.maxPreserveNewLines.desc": "Numero massimo di interruzioni di riga da mantenere in un unico blocco. Per non impostare un numero massimo, usare 'null'.", - "html.format.indentHandlebars.desc": "Applica la formattazione e imposta un rientro per {{#foo}} e {{/foo}}.", - "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.wrapAttributes.desc": "Esegue il wrapping degli attributi.", - "html.format.wrapAttributes.auto": "Esegue il wrapping degli attributi solo quando viene superata la lunghezza di riga.", - "html.format.wrapAttributes.force": "Esegue il wrapping di ogni attributo ad eccezione del primo.", - "html.format.wrapAttributes.forcealign": "Esegue il wrapping di ogni attributo ad eccezione del primo e mantiene l'allineamento.", - "html.format.wrapAttributes.forcemultiline": "Esegue il wrapping di ogni attributo.", - "html.suggest.angular1.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag e proprietà di Angular V1.", - "html.suggest.ionic.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di Ionic.", - "html.suggest.html5.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di HTML5.", - "html.trace.server.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio HTML.", - "html.validate.scripts": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli script incorporati.", - "html.validate.styles": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli stili incorporati.", - "html.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi.", - "html.autoClosingTags": "Abilita/Disabilita la chiusura automatica dei tag HTML." + ] } \ No newline at end of file diff --git a/i18n/ita/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/ita/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..b9cca5241bb --- /dev/null +++ b/i18n/ita/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "Server di linguaggio JSON" +} \ No newline at end of file diff --git a/i18n/ita/extensions/json-language-features/package.i18n.json b/i18n/ita/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..6ae49c6efe4 --- /dev/null +++ b/i18n/ita/extensions/json-language-features/package.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "description": "Fornisce supporto avanzato del linguaggio per i file JSON.", + "json.schemas.desc": "Associa schemi a file JSON nel progetto corrente", + "json.schemas.url.desc": "URL di uno schema o percorso relativo di uno schema nella directory 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.format.enable.desc": "Abilita/Disabilita il formattatore JSON predefinito (richiede il riavvio)", + "json.tracing.desc": "Traccia le comunicazioni tra Visual Studio Code e il server di linguaggio JSON.", + "json.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", + "json.colorDecorators.enable.deprecationMessage": "L'impostazione `json.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`." +} \ 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 b6f387db316..35229bd6699 100644 --- a/i18n/ita/extensions/json/package.i18n.json +++ b/i18n/ita/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Funzionalità del linguaggio JSON", - "description": "Fornisce supporto avanzato del linguaggio per i file JSON.", - "json.schemas.desc": "Associa schemi a file JSON nel progetto corrente", - "json.schemas.url.desc": "URL di uno schema o percorso relativo di uno schema nella directory 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.format.enable.desc": "Abilita/Disabilita il formattatore JSON predefinito (richiede il riavvio)", - "json.tracing.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio JSON.", - "json.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", - "json.colorDecorators.enable.deprecationMessage": "L'impostazione `json.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", - "json.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi." + ] } \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/ita/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..eb5c477e4c1 --- /dev/null +++ b/i18n/ita/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "Impossibile caricare 'markdown.styles': {0}" +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/ita/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..c46a3464cc4 --- /dev/null +++ b/i18n/ita/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Anteprima] {0}", + "previewTitle": "Anteprima {0}" +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/ita/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..991ae221d10 --- /dev/null +++ b/i18n/ita/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "Alcuni contenuti sono stati disabilitati in questo documento", + "preview.securityMessage.title": "Contenuti potenzialmente non sicuri sono stati disattivati nell'anteprima del Markdown. Modificare l'impostazione di protezione dell'anteprima del Markdown per consentire la visualizzazione di contenuto insicuro o abilitare gli script", + "preview.securityMessage.label": "Avviso di sicurezza contenuto disabilitato" +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-language-features/out/security.i18n.json b/i18n/ita/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..17900416bd6 --- /dev/null +++ b/i18n/ita/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Strict", + "strict.description": "Carica solo contenuto protetto", + "insecureContent.title": "Consenti contenuto non protetto", + "insecureContent.description": "Consente il caricamento di contenuti tramite HTTP", + "disable.title": "Disabilita", + "disable.description": "Consente l'esecuzione di tutti i contenuti e script. Scelta non consigliata", + "moreInfo.title": "Altre informazioni", + "enableSecurityWarning.title": "Abilita anteprima degli avvisi di protezione in questa area di lavoro", + "disableSecurityWarning.title": "Disabilita anteprima degli avvisi di protezione in questa area di lavoro", + "toggleSecurityWarning.description": "Non influisce sul livello di sicurezza del contenuto", + "preview.showPreviewSecuritySelector.title": "Seleziona impostazioni di protezione per le anteprime Markdown in questa area di lavoro" +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-language-features/package.i18n.json b/i18n/ita/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..eeb708af9fa --- /dev/null +++ b/i18n/ita/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Funzionalità del linguaggio Markdown", + "description": "Fornisce un supporto avanzato del linguaggio per Markdown.", + "markdown.preview.breaks.desc": "Imposta come le interruzioni di riga vengono visualizzate nell'anteprima di markdown. Impostarlo a 'true' crea un
per ogni carattere di nuova riga.", + "markdown.preview.linkify": "Abilita o disabilita la conversione di testo simile a URL in collegamenti nell'anteprima markdown.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Fare doppio clic nell'anteprima markdown per passare all'editor.", + "markdown.preview.fontFamily.desc": "Consente di controllare la famiglia di caratteri usata nell'anteprima markdown.", + "markdown.preview.fontSize.desc": "Consente di controllare le dimensioni del carattere in pixel usate nell'anteprima markdown.", + "markdown.preview.lineHeight.desc": "Consente di controllare l'altezza della riga usata nell'anteprima markdown. Questo numero è relativo alle dimensioni del carattere.", + "markdown.preview.markEditorSelection.desc": "Contrassegna la selezione dell'editor corrente nell'anteprima markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Quando si scorre l'anteprima markdown, aggiorna la visualizzazione dell'editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Quando si scorre l'editor markdown, aggiorna la visualizzazione dell'anteprima.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Deprecato] Scorre l'anteprima markdown in modo da visualizzare la riga attualmente selezionata dall'editor.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Questa impostazione è stata sostituita da 'markdown.preview.scrollPreviewWithEditor' e non ha più effetto.", + "markdown.preview.title": "Apri anteprima", + "markdown.previewFrontMatter.dec": "Consente di impostare il rendering del front matter YAML nell'anteprima markdown. Con 'hide' il front matter viene rimosso; altrimenti il front matter viene considerato come contenuto markdown.", + "markdown.previewSide.title": "Apri anteprima lateralmente", + "markdown.showLockedPreviewToSide.title": "Apri anteprima bloccata lateralmente", + "markdown.showSource.title": "Mostra origine", + "markdown.styles.dec": "Elenco di URL o percorsi locali dei fogli di stile CSS da usare dall'anteprima markdown. I percorsi relativi vengono interpretati come relativi alla cartella aperta nella finestra di esplorazione. Se non è presente alcuna cartella aperta, vengono interpretati come relativi al percorso del file markdown. Tutti i caratteri '\\' devono essere scritti come '\\\\'.", + "markdown.showPreviewSecuritySelector.title": "Modifica impostazioni di sicurezza anteprima", + "markdown.trace.desc": "Abilitare la registrazione debug per l'estensione markdown.", + "markdown.preview.refresh.title": "Aggiorna anteprima", + "markdown.preview.toggleLock.title": "Attiva/Disattiva blocco anteprima" +} \ No newline at end of file diff --git a/i18n/ita/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/ita/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..7a30dfbedfe --- /dev/null +++ b/i18n/ita/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Consentire l'esecuzione di {0} (definito come impostazione dell'area di lavoro) per il lint dei file PHP?", + "php.yes": "Consenti", + "php.no": "Non consentire", + "wrongExecutable": "Non è possibile eseguire la convalida perché {0} non è un file eseguibile di PHP valido. Usare l'impostazione 'php.validate.executablePath' per convalidare il file eseguibile di PHP.", + "noExecutable": "Non è possibile eseguire la convalida perché non è impostato alcun file eseguibile di PHP. Usare l'impostazione 'php.validate.executablePath' per convalidare il file eseguibile di PHP.", + "unknownReason": "Non è stato possibile eseguire php con il percorso {0}. Il motivo è sconosciuto." +} \ No newline at end of file diff --git a/i18n/ita/extensions/php-language-features/package.i18n.json b/i18n/ita/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..ea44ea91d9f --- /dev/null +++ b/i18n/ita/extensions/php-language-features/package.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Consente di configurare l'abilitazione dei suggerimenti predefiniti per il linguaggio PHP. Il supporto suggerisce variabili e variabili globali PHP.", + "configuration.validate.enable": "Abilita/Disabilita la convalida PHP predefinita.", + "configuration.validate.executablePath": "Punta all'eseguibile di PHP.", + "configuration.validate.run": "Indica se il linter viene eseguito durante il salvataggio o la digitazione.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)" +} \ No newline at end of file diff --git a/i18n/ita/extensions/php/package.i18n.json b/i18n/ita/extensions/php/package.i18n.json index f2707697f23..59850c0a057 100644 --- a/i18n/ita/extensions/php/package.i18n.json +++ b/i18n/ita/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Consente di configurare l'abilitazione dei suggerimenti predefiniti per il linguaggio PHP. Il supporto suggerisce variabili e variabili globali PHP.", - "configuration.validate.enable": "Abilita/Disabilita la convalida PHP predefinita.", - "configuration.validate.executablePath": "Punta all'eseguibile di PHP.", - "configuration.validate.run": "Indica se il linter viene eseguito durante il salvataggio o la digitazione.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)", - "displayName": "Funzionalità del linguaggio PHP", - "description": "Offre IntelliSense, linting e nozioni di base sul linguaggio per i file PHP." + "displayName": "Funzionalità del linguaggio PHP" } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 24c38320db5..2b9d73ba3f9 100644 --- a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Non sono stati trovati risultati", "settingsSearchIssue": "Problema di ricerca impostazioni", "bugReporter": "Segnalazione bug", - "performanceIssue": "Problema di prestazioni", "featureRequest": "Richiesta di funzionalità", + "performanceIssue": "Problema di prestazioni", "stepsToReproduce": "Passi da riprodurre", "bugDescription": "Indicare i passaggi necessari per riprodurre il problema in modo affidabile. Includere i risultati effettivi e quelli previsti. È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", "performanceIssueDesciption": "Quando si è verificato questo problema di prestazioni? All'avvio o dopo una serie specifiche di azioni? È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", diff --git a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json index d51e843ddbf..75512d966b7 100644 --- a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "Colore del bordo degli squggle di avviso nell'editor.", "infoForeground": "Colore primo piano degli squiggle di informazione nell'editor", "infoBorder": "Colore del bordo degli squiggle di informazione nell'editor", - "overviewRulerRangeHighlight": "Colore del marcatore del righello delle annotazioni per le evidenziazioni degli intervalli.", "overviewRuleError": "Colore del marcatore del righello delle annotazioni per gli errori.", "overviewRuleWarning": "Colore del marcatore del righello delle annotazioni per gli avvisi.", "overviewRuleInfo": "Colore del marcatore del righello delle annotazioni per i messaggi di tipo informativo." diff --git a/i18n/ita/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/ita/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 4a3430ffb99..a06753ebfa8 100644 --- a/i18n/ita/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Vai al problema successivo (Errore, Avviso, Informazioni)", - "markerAction.previous.label": "Vai al problema precedente (Errore, Avviso, Info)", - "editorMarkerNavigationError": "Colore per gli errori del widget di spostamento tra marcatori dell'editor.", - "editorMarkerNavigationWarning": "Colore per gli avvisi del widget di spostamento tra marcatori dell'editor.", - "editorMarkerNavigationInfo": "Colore delle informazioni del widget di navigazione marcatori dell'editor.", - "editorMarkerNavigationBackground": "Sfondo del widget di spostamento tra marcatori dell'editor." + "markerAction.previous.label": "Vai al problema precedente (Errore, Avviso, Info)" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/ita/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..a69e81d71e3 --- /dev/null +++ b/i18n/ita/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Colore per gli errori del widget di spostamento tra marcatori dell'editor.", + "editorMarkerNavigationWarning": "Colore per gli avvisi del widget di spostamento tra marcatori dell'editor.", + "editorMarkerNavigationInfo": "Colore delle informazioni del widget di navigazione marcatori dell'editor.", + "editorMarkerNavigationBackground": "Sfondo del widget di spostamento tra marcatori dell'editor." +} \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 0129c5330e3..1ce97a983c4 100644 --- a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "Colore di sfondo di un simbolo durante l'accesso in scrittura, per esempio durante la scrittura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "wordHighlightBorder": "Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.", "wordHighlightStrongBorder": "Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.", - "overviewRulerWordHighlightForeground": "Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli.", - "overviewRulerWordHighlightStrongForeground": "Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli di accesso in scrittura.", "wordHighlight.next.label": "Vai al prossimo simbolo evidenziato", "wordHighlight.previous.label": "Vai al precedente simbolo evidenziato" } \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/ita/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..6b01687be11 --- /dev/null +++ b/i18n/ita/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 altro file non visualizzato", + "moreFiles": "...{0} altri file non visualizzati" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/ita/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..37c77254e7c --- /dev/null +++ b/i18n/ita/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Annulla" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 2dbb832ebf5..91d39114cd9 100644 --- a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,12 @@ "errorInstallingDependencies": "Errore durante l'installazione delle dipendenze. {0}", "MarketPlaceDisabled": "Il Marketplace non è abilitato", "removeError": "Errore durante la rimozione dell'estensione: {0}. Chiudere e riavviare VS Code prima di riprovare.", - "Not Market place extension": "Solo le Estensioni del Marketplace possono essere reinstallate", "notFoundCompatible": "Impossibile installare '{0}'; non è presente alcuna versione compatibile con VS Code '{1}'.", "malicious extension": "Non è possibile installare l'estensione poiché è stata segnalata come problematica.", "notFoundCompatibleDependency": "Impossibile installare perché non è stata trovata l'estensione dipendente '{0}' compatibile con la versione corrente '{1}' di VS Code.", "quitCode": "Impossibile installare l'estensione. Riavviare VS Code prima di procedere ad un nuovo setup.", "exitCode": "Impossibile installare l'estensione. Riavviare VS Code prima di procedere ad un nuovo setup.", "uninstallDependeciesConfirmation": "Disinstallare solo '{0}' o anche le relative dipendenze?", - "uninstallOnly": "Solo", - "uninstallAll": "Tutto", "uninstallConfirmation": "Disinstallare '{0}'?", "ok": "OK", "singleDependentError": "Non è possibile disinstallare l'estensione '{0}'. L'estensione '{1}' dipende da tale estensione.", diff --git a/i18n/ita/src/vs/platform/markers/common/markers.i18n.json b/i18n/ita/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..f585e5046c6 --- /dev/null +++ b/i18n/ita/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Errore", + "sev.warning": "Avviso", + "sev.info": "Informazioni" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json index 52b0e204cb5..2e5c4543ebf 100644 --- a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "Colore bordo su intestazioni e sulla barra di divisione di conflitti di merge in linea.", "overviewRulerCurrentContentForeground": "Colore primo piano righello panoramica attuale per i conflitti di merge in linea.", "overviewRulerIncomingContentForeground": "Colore primo piano del righello panoramica modifiche in arrivo per i conflitti di merge in linea.", - "overviewRulerCommonContentForeground": "Colore primo piano righello panoramica dell'antenato comune per i conflitti di merge in linea.", - "overviewRulerFindMatchForeground": "Colore del marcatore del righello delle annotazioni per le corrispondenze della ricerca.", - "overviewRulerSelectionHighlightForeground": "Colore del marcatore del righello delle annotazioni per le evidenziazioni delle selezioni." + "overviewRulerCommonContentForeground": "Colore primo piano righello panoramica dell'antenato comune per i conflitti di merge in linea." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index d3570a7296b..52332d26b60 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Sposta stato attivo sul gruppo successivo", "openToSide": "Apri lateralmente", "closeEditor": "Chiudi editor", + "closeOneEditor": "Chiudi", "revertAndCloseActiveEditor": "Ripristina e chiudi editor", "closeEditorsToTheLeft": "Chiudi editor a sinistra", "closeAllEditors": "Chiudi tutti gli editor", diff --git a/i18n/ita/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 550f000183a..87ef247c949 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Chiudi", "araLabelEditorActions": "Azioni editor" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json index c4f1db5d289..e548589e82c 100644 --- a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Finestra", "window.openFilesInNewWindow.on": "I file verranno aperti in una nuova finestra", "window.openFilesInNewWindow.off": "I file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva", - "window.openFilesInNewWindow.default": "I file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva a meno che non vengano aperti tramite il pannello Dock o da Finder (solo MacOS)", - "openFilesInNewWindow": "Controlla se i file devono essere aperti in una nuova finestra.\n- default: i file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva a meno che non vengano aperti tramite il pannello Dock o da Finder (solo MacOS)\n- on: i file verranno aperti in una nuova finestra\n- off: i file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva\nNota: possono comunque verificarsi casi in cui questa impostazione viene ignorata, ad esempio quando si usa l'opzione della riga di comando -new-window o -reuse-window.", "window.openFoldersInNewWindow.on": "Le cartelle verranno aperte in una nuova finestra", "window.openFoldersInNewWindow.off": "Le cartelle sostituiranno l'ultima finestra attiva", "window.openFoldersInNewWindow.default": "Le cartelle verranno aperte in una nuova finestra a meno che non si selezioni una cartella dall'interno dell'applicazione, ad esempio tramite il menu File", @@ -58,7 +56,6 @@ "restoreWindows": "Controlla la modalità di riapertura delle finestre dopo un riavvio. Selezionare 'none' per iniziare sempre con un'area di lavoro vuota, 'one' per riaprire l'ultima finestra usata, 'folders' per riaprire tutte le finestre con cartelle aperte oppure 'all' per riaprire tutte le finestre dell'ultima sessione.", "restoreFullscreen": "Controlla se una finestra deve essere ripristinata a schermo intero se è stata chiusa in questa modalità.", "zoomLevel": "Consente di modificare il livello di zoom della finestra. Il valore originale è 0 e ogni incremento superiore (ad esempio 1) o inferiore (ad esempio -1) rappresenta un aumento o una diminuzione del 20% della percentuale di zoom. È anche possibile immettere valori decimali per modificare il livello di zoom con maggiore granularità.", - "title": "Controlla il titolo della finestra in base all'editor attivo. Le variabili vengono sostituite in base al contesto:\n${activeEditorShort}: il nome del file (ad es. MyFile.txt)\n${activeEditorMedium}: il percorso del file relativo alla cartella dell'area di lavoro (ad es. myFolder/myFile.txt)\n${activeEditorLong}: il percorso completo del file (ad es. / Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: nome della cartella dell'area di lavoro in cui è contenuto il file (ad es. myFolder)\n${folderPath}: percorso della cartella dell'area di lavoro in cui è contenuto il file (ad es. /Users/Development/myFolder)\n${rootName}: nome dell'area di lavoro (ad es. myFolder o myWorkspace)\n${rootPath}: percorso dell'area di lavoro (ad es. /Users/Development/myWorkspace)\n$(appName): ad esempio VS Code\n${dirty}: indica se l'editor attivo è in fase di modifica\n${separator}: un separatore condizionale (\" - \") che viene visualizzato solo quando circondato da variabili con valori", "window.newWindowDimensions.default": "Apre nuove finestre al centro della schermata.", "window.newWindowDimensions.inherit": "Apre nuove finestre le cui dimensioni sono uguali a quelle dell'ultima finestra attiva.", "window.newWindowDimensions.maximized": "Apre nuove finestre ingrandite a schermo intero.", 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 3afac9d9582..7459163ddb4 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 @@ -24,16 +24,12 @@ "restartFrame": "Riavvia frame", "removeBreakpoint": "Rimuovi punto di interruzione", "removeAllBreakpoints": "Rimuovi tutti i punti di interruzione", - "enableBreakpoint": "Abilita punto di interruzione", - "disableBreakpoint": "Disabilita punto di interruzione", "enableAllBreakpoints": "Abilita tutti i punti di interruzione", "disableAllBreakpoints": "Disabilita tutti i punti di interruzione", "activateBreakpoints": "Attiva punti di interruzione", "deactivateBreakpoints": "Disattiva punti di interruzione", "reapplyAllBreakpoints": "Riapplica tutti i punti di interruzione", "addFunctionBreakpoint": "Aggiungi punto di interruzione della funzione", - "addConditionalBreakpoint": "Aggiungi punto di interruzione condizionale...", - "editConditionalBreakpoint": "Modifica punto di interruzione...", "setValue": "Imposta valore", "addWatchExpression": "Aggiungi espressione", "editWatchExpression": "Modifica espressione", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..885d74b575b --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Interrompe quando viene soddisfatta la condizione del numero di passaggi. Premere 'INVIO' per accettare oppure 'ESC' per annullare.", + "breakpointWidgetExpressionPlaceholder": "Interrompe quando l'espressione restituisce true. Premere 'INVIO' per accettare oppure 'ESC' per annullare.", + "breakpointWidgetHitCountAriaLabel": "Il programma si arresterà in questo punto solo se viene raggiunto il numero di passaggi. Premere INVIO per accettare oppure ESC per annullare.", + "breakpointWidgetAriaLabel": "Il programma si arresterà in questo punto solo se la condizione è vera. Premere INVIO per accettare oppure ESC per annullare.", + "expression": "Espressione", + "hitCount": "Numero di passaggi" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index ce0f5ac7e16..171d99b96d1 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Modifica punto di interruzione...", + "disableBreakpoint": "Disabilita punto di interruzione", + "enableBreakpoint": "Abilita punto di interruzione", "removeBreakpoints": "Rimuovi punti di interruzione", "removeBreakpointOnColumn": "Rimuovi punto di interruzione a colonna {0}", "removeLineBreakpoint": "Rimuovi punto di interruzione riga", @@ -18,5 +21,6 @@ "enableBreakpoints": "Abilita punto di interruzione a colonna {0}", "enableBreakpointOnLine": "Abilita punto di interruzione riga", "addBreakpoint": "Aggiungi punto di interruzione", + "conditionalBreakpoint": "Aggiungi punto di interruzione condizionale...", "addConfiguration": "Aggiungi configurazione..." } \ No newline at end of file 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 1418cb86caf..05a9304ef54 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 @@ -28,7 +28,5 @@ "preLaunchTaskExitCode": "L'attività di preavvio '{0}' è stata terminata ed è stato restituito il codice di uscita {1}.", "showErrors": "Mostra errori", "noFolderWorkspaceDebugError": "Non è possibile eseguire il debug del file attivo. Assicurarsi che sia salvato su disco e che sia installata un'estensione di debug per tale tipo di file.", - "cancel": "Annulla", - "DebugTaskNotFound": "L'attività di preavvio '{0}' non è stata trovata.", - "taskNotTracked": "Non è possibile tenere traccia del preLaunchTask '{0}'." + "cancel": "Annulla" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..bf455524ce9 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,57 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Nome dell'estensione", + "extension id": "Identificatore dell'estensione", + "builtin": "Predefinita", + "publisher": "Nome dell'editore", + "install count": "Conteggio delle installazioni", + "rating": "Valutazione", + "license": "Licenza", + "details": "Dettagli", + "contributions": "Contributi", + "changelog": "Log delle modifiche", + "dependencies": "Dipendenze", + "noReadme": "File LEGGIMI non disponibile.", + "noChangelog": "Changelog non disponibile.", + "noContributions": "Nessun contributo", + "noDependencies": "Nessuna dipendenza", + "settings": "Impostazioni ({0})", + "setting name": "Nome", + "description": "Descrizione", + "default": "Impostazione predefinita", + "debuggers": "Debugger ({0})", + "debugger name": "Nome", + "debugger type": "Tipo", + "views": "Visualizzazioni ({0})", + "view id": "ID", + "view name": "Nome", + "view location": "Dove", + "localizations language id": "ID lingua", + "localizations language name": "Nome lingua", + "localizations localized language name": "Nome lingua (localizzato)", + "colorThemes": "Temi colore ({0})", + "iconThemes": "Temi icona ({0})", + "colorId": "ID", + "defaultDark": "Predefinito scuro", + "defaultLight": "Predefinito chiaro", + "defaultHC": "Predefinito contrasto elevato", + "JSON Validation": "Convalida JSON ({0})", + "fileMatch": "Corrispondenza file", + "schema": "Schema", + "commands": "Comandi ({0})", + "command name": "Nome", + "keyboard shortcuts": "Scelte rapide da tastiera", + "menuContexts": "Contesti menu", + "languages": "Linguaggi ({0})", + "language id": "ID", + "language name": "Nome", + "file extensions": "Estensioni di file", + "grammar": "Grammatica", + "snippets": "Frammenti" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 96e949cb24a..d9192794c71 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Consigliate", "otherRecommendedExtensions": "Altri consigli", "workspaceRecommendedExtensions": "Consigli per l'area di lavoro", - "builtInExtensions": "Predefinite", "searchExtensions": "Cerca le estensioni nel Marketplace", "sort by installs": "Ordina per: conteggio installazioni", "sort by rating": "Ordina per: classificazione", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 1dfea4391db..3939225c04f 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Sei sicuro di voler eliminarei seguenti {0} file?", "confirmMoveTrashMessageFolder": "Eliminare '{0}' e il relativo contenuto?", "confirmMoveTrashMessageFile": "Eliminare '{0}'?", - "undoBin": "È possibile ripristinare dal Cestino.", - "undoTrash": "È possibile ripristinare dal cestino.", "doNotAskAgain": "Non chiedermelo di nuovo", "confirmDeleteMessageMultiple": "Sei sicuro di voler eliminare permanentemente i seguenti {0} file?", "confirmDeleteMessageFolder": "Eliminare definitivamente '{0}' e il relativo contenuto?", "confirmDeleteMessageFile": "Eliminare definitivamente '{0}'?", "irreversible": "Questa azione è irreversibile.", - "cancel": "Annulla", - "permDelete": "Elimina definitivamente", "importFiles": "Importa file", "confirmOverwrite": "Nella cartella di destinazione esiste già un file o una cartella con lo stesso nome. Sovrascrivere?", "replaceButtonLabel": "&&Sostituisci", diff --git a/i18n/ita/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..4d04454a2ac --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Anteprima HTML" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/ita/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..6ad886b279b --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "L'input dell'editor non è valido." +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..2011975d153 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Sviluppatore" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/ita/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..ee36d0bcec9 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Apri strumenti di sviluppo Webview", + "refreshWebviewLabel": "Ricarica Webview" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 3e7cf3f5df4..1677c2679d4 100644 --- a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Sì", + "no": "No", + "doNotAskAgain": "Non chiedermelo di nuovo", "JsonSchema.locale": "Linguaggio dell'interfaccia utente da usare.", "vscode.extension.contributes.localizations": "Contribuisce traduzioni all'editor", "vscode.extension.contributes.localizations.languageId": "Id della lingua in cui sono tradotte le stringhe visualizzate.", diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..cd233dbc352 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Copia" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..8c26d708058 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Totale {0} problemi", + "filteredProblems": "Mostrando {0} di {1} problemi" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..54af867231c --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Problemi", + "tooltip.N": "{0} problemi in questo file" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..8425fd2a247 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Visualizza", + "problems.view.toggle.label": "Attiva/Disattiva Problemi (Errori, Avvisi, Informazioni)", + "problems.view.focus.label": "Sposta lo stato attivo su problemi (Errori, Avvisi, Informazioni)", + "problems.panel.configuration.title": "Visualizzazione Problemi", + "problems.panel.configuration.autoreveal": "Controlla se la visualizzazione Problemi deve visualizzare automaticamente i file durante l'apertura", + "markers.panel.title.problems": "Problemi", + "markers.panel.aria.label.problems.tree": "Problemi raggruppati per file", + "markers.panel.no.problems.build": "Finora non sono stati rilevati problemi nell'area di lavoro.", + "markers.panel.no.problems.filters": "Non sono stati trovati risultati corrispondenti ai criteri di filtro specificati", + "markers.panel.action.filter": "Filtra problemi", + "markers.panel.filter.placeholder": "Filtra per tipo o testo", + "markers.panel.filter.errors": "errori", + "markers.panel.filter.warnings": "avvisi", + "markers.panel.filter.infos": "messaggi informativi", + "markers.panel.single.error.label": "1 errore", + "markers.panel.multiple.errors.label": "{0} errori", + "markers.panel.single.warning.label": "1 avviso", + "markers.panel.multiple.warnings.label": "{0} avvisi", + "markers.panel.single.info.label": "1 messaggio informativo", + "markers.panel.multiple.infos.label": "{0} messaggi informativi", + "markers.panel.single.unknown.label": "1 sconosciuto", + "markers.panel.multiple.unknowns.label": "{0} sconosciuti", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} con {1} problemi", + "errors.warnings.show.label": "Mostra errori e avvisi" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json index d4755072966..4fdc0d624d6 100644 --- a/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Mostra i criteri di inclusione per la ricerca successivi", "previousSearchIncludePattern": "Mostra i criteri di inclusione per la ricerca precedenti", - "nextSearchExcludePattern": "Mostra i criteri di esclusione per la ricerca successivi", - "previousSearchExcludePattern": "Mostra i criteri di esclusione per la ricerca precedenti", "nextSearchTerm": "Mostra il termine di ricerca successivo", "previousSearchTerm": "Mostra il termine di ricerca precedente", "showSearchViewlet": "Mostra Cerca", diff --git a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json index e2aee106234..a0d921fec70 100644 --- a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Attiva/Disattiva dettagli ricerca", - "searchScope.includes": "file da includere", - "label.includes": "Criteri di inclusione per la ricerca", - "searchScope.excludes": "file da escludere", - "label.excludes": "Criteri di esclusione per la ricerca", "replaceAll.confirmation.title": "Sostituisci tutto", "replaceAll.confirm.button": "&&Sostituisci", "replaceAll.occurrence.file.message": "{0} occorrenza in {1} file è stata sostituita con '{2}'.", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 8d36733b39a..d2e532ded80 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "Non assegna l'attività ad alcun gruppo", "JsonSchema.tasks.group": "Definisce il gruppo di esecuzione a cui appartiene questa attività. Supporta \"build\" per aggiungerlo al gruppo di compilazione e \"test\" per aggiungerlo al gruppo di test.", "JsonSchema.tasks.type": "Definisce se l'attività viene eseguita come un processo o come un comando all'interno di una shell.", + "JsonSchema.command": "Comando da eseguire. Può essere un programma esterno o un comando della shell.", + "JsonSchema.tasks.args": "Argomenti passati al comando quando viene richiamata questa attività.", "JsonSchema.tasks.label": "Etichetta dell'attività per l'interfaccia utente ", "JsonSchema.version": "Numero di versione della configurazione", "JsonSchema.tasks.identifier": "Identificatore definito dall'utente per fare riferimento all'attività in launch.json o in una clausola dependsOn.", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index b2e3a492ebb..72ae41d5c50 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,10 @@ ], "tasksCategory": "Attività", "ConfigureTaskRunnerAction.label": "Configura attività", - "problems": "Problemi", + "totalErrors": "{0} errori", + "totalWarnings": "{0} avvisi", + "totalInfos": "{0} messaggi informativi", "building": "Compilazione in corso...", - "manyMarkers": "Più di 99", "runningTasks": "Visualizza attività in esecuzione", "tasks": "Attività", "TaskSystem.noHotSwap": "Se si cambia il motore di esecuzione delle attività con un'attività attiva in esecuzione, è necessario ricaricare la finestra", @@ -46,8 +47,8 @@ "recentlyUsed": "attività usate di recente", "configured": "attività configurate", "detected": "attività rilevate", - "TaskService.ignoredFolder": "Le cartelle dell'area di lavoro seguenti verranno ignorate perché usano la versione 0.1.0 delle attività: {0}", "TaskService.notAgain": "Non visualizzare più questo messaggio", + "TaskService.ignoredFolder": "Le cartelle dell'area di lavoro seguenti verranno ignorate perché usano la versione 0.1.0 delle attività: {0}", "TaskService.pickRunTask": "Selezionare l'attività da eseguire", "TaslService.noEntryToRun": "Non è stata trovata alcuna attività da eseguire. Configurare le attività...", "TaskService.fetchingBuildTasks": "Recupero delle attività di compilazione...", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 5984bf9e6f1..5cf7f264969 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Errore: nella configurazione di attività '{0}' manca la proprietà obbligatoria '{1}'. La configurazione dell'attività verrà ignorata.", "ConfigurationParser.notCustom": "Errore: tasks non è dichiarato come un'attività personalizzata. La configurazione verrà ignorata.\n{0}\n", "ConfigurationParser.noTaskName": "Errore: un'attività deve specificare una proprietà label. L'attività verrà ignorata.\n{0}\n", - "taskConfiguration.shellArgs": "Avviso: l'attività '{0}' è un comando di shell e uno dei suoi argomenti potrebbe avere spazi indesiderati. Per garantire la correttezza della riga di comando unire args nel comando stesso.", "taskConfiguration.noCommandOrDependsOn": "Errore: l'attività '{0}' non specifica un comando né una proprietà dependsOn. L'attività verrà ignorata. La sua definizione è:\n{1}", "taskConfiguration.noCommand": "Errore: l'attività '{0}' non definisce un comando. L'attività verrà ignorata. Definizione dell'attività:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "L'attività versione 2.0.0 non supporta attività specifiche globali del sistema operativo. Convertirle in un'attività con un comando specifico del sistema operativo. Attività interessate:\n{0}" diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index e0033bb7d61..9e38fa8a7e0 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Copia", + "split": "Dividi", "paste": "Incolla", "selectAll": "Seleziona tutto", - "clear": "Cancella", - "split": "Dividi" + "clear": "Cancella" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..a720e18d093 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Note sulla versione: {0}", + "unassigned": "non assegnato" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json index e675aaedcf6..f16acee2d3f 100644 --- a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "In seguito", - "unassigned": "non assegnato", "releaseNotes": "Note sulla versione", "showReleaseNotes": "Mostra note sulla versione", "read the release notes": "Benvenuti in {0} versione {1}. Leggere le note sulla versione?", diff --git a/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..6162c44dea8 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "editor Webview" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..184feafb8ac --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Altre informazioni" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/ita/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/ita/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..bb1f14b4fcf --- /dev/null +++ b/i18n/ita/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Sì", + "cancelButton": "Annulla" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 1b3859ecb50..50a2d3795ee 100644 --- a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Non visualizzare più questo messaggio", "netVersionError": "Microsoft .NET Framework 4.5 è obbligatorio. Selezionare il collegamento per installarlo.", "learnMore": "Istruzioni", - "enospcError": "{0} sta esaurendo gli handle di file. Per risolvere questo problema, seguire il collegamento alle istruzioni.", "binFailed": "Non è stato possibile spostare '{0}' nel Cestino", "trashFailed": "Non è stato possibile spostare '{0}' nel Cestino" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json index 6e9f57076de..e98cc6a8898 100644 --- a/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Risorsa del file non valida ({0})", "fileIsDirectoryError": "Il File è una Directory", "fileNotModifiedError": "File non modificato dal giorno", - "fileTooLargeForHeapError": "Le dimensioni del file superano il limite di memoria della finestra. Provare a eseguire il codice --max-memory=NEWSIZE", "fileTooLargeError": "File troppo grande per essere aperto", "fileNotFoundError": "Il file non è stato trovato ({0})", "fileBinaryError": "Il file sembra essere binario e non può essere aperto come file di testo", diff --git a/i18n/ita/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/ita/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..4fa1f89e7ff 100644 --- a/i18n/ita/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/ita/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Annulla" } \ No newline at end of file diff --git a/i18n/jpn/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/jpn/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..6d6b061cb73 --- /dev/null +++ b/i18n/jpn/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS 言語サーバー", + "folding.start": "折りたたみ領域の開始", + "folding.end": "折りたたみ領域の終了" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/css-language-features/package.i18n.json b/i18n/jpn/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..f77f0b75a07 --- /dev/null +++ b/i18n/jpn/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS 言語機能", + "description": "CSS、LESS、SCSS ファイルに豊富な言語サポートを提供。", + "css.title": "CSS", + "css.lint.argumentsInColorFunction.desc": "無効なパラメーター数値", + "css.lint.boxModel.desc": "padding や border を使用するときに width や height を使用しないでください", + "css.lint.compatibleVendorPrefixes.desc": "ベンダー プレフィックス を使用するときは、他すべてのベンダー プレフィックスも必ず含めてください", + "css.lint.duplicateProperties.desc": "重複するスタイル定義を使用しないでください", + "css.lint.emptyRules.desc": "空の規則セットを使用しないでください", + "css.lint.float.desc": "'float' の使用を避けてください。float は脆弱な CSS につながり、レイアウトの一部が変更されたときに CSS が破損しやすくなります。", + "css.lint.fontFaceProperties.desc": "@font-face 規則で 'src' プロパティと 'font-family' プロパティを定義する必要があります", + "css.lint.hexColorLength.desc": "Hex には 3 つまたは 6 つの 16 進数が含まれる必要があります", + "css.lint.idSelector.desc": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", + "css.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", + "css.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", + "css.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", + "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.trace.server.desc": "VS Code と CSS 言語サーバー間の通信をトレースします。", + "css.validate.title": "CSS の検証と問題の重大度を制御します。", + "css.validate.desc": "すべての検証を有効または無効にします", + "less.title": "LESS", + "less.lint.argumentsInColorFunction.desc": "無効なパラメーター数値", + "less.lint.boxModel.desc": "padding や border を使用するときに width や height を使用しないでください", + "less.lint.compatibleVendorPrefixes.desc": "ベンダー プレフィックス を使用するときは、他すべてのベンダー プレフィックスも必ず含めてください", + "less.lint.duplicateProperties.desc": "重複するスタイル定義を使用しないでください", + "less.lint.emptyRules.desc": "空の規則セットを使用しないでください", + "less.lint.float.desc": "'float' の使用を避けてください。float は脆弱な CSS につながり、レイアウトの一部が変更されたときに CSS が破損しやすくなります。", + "less.lint.fontFaceProperties.desc": "@font-face 規則で 'src' プロパティと 'font-family' プロパティを定義する必要があります", + "less.lint.hexColorLength.desc": "Hex には 3 つまたは 6 つの 16 進数が含まれる必要があります", + "less.lint.idSelector.desc": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", + "less.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", + "less.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", + "less.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", + "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.title": "LESS の検証と問題の重大度を制御します。", + "less.validate.desc": "すべての検証を有効または無効にします", + "scss.title": "SCSS (Sass)", + "scss.lint.argumentsInColorFunction.desc": "無効なパラメーター数値", + "scss.lint.boxModel.desc": "padding や border を使用するときに width や height を使用しないでください", + "scss.lint.compatibleVendorPrefixes.desc": "ベンダー プレフィックス を使用するときは、他すべてのベンダー プレフィックスも必ず含めてください", + "scss.lint.duplicateProperties.desc": "重複するスタイル定義を使用しないでください", + "scss.lint.emptyRules.desc": "空の規則セットを使用しないでください", + "scss.lint.float.desc": "'float' の使用を避けてください。float は脆弱な CSS につながり、レイアウトの一部が変更されたときに CSS が破損しやすくなります。", + "scss.lint.fontFaceProperties.desc": "@font-face 規則で 'src' プロパティと 'font-family' プロパティを定義する必要があります", + "scss.lint.hexColorLength.desc": "Hex には 3 つまたは 6 つの 16 進数が含まれる必要があります", + "scss.lint.idSelector.desc": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", + "scss.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", + "scss.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", + "scss.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", + "scss.lint.propertyIgnoredDueToDisplay.desc": "display によってプロパティを無視します。例: 'display: inline' の場合、width、height、margin-top、margin-bottom、float プロパティには効果がありません。", + "scss.lint.universalSelector.desc": "ユニバーサル セレクター (*) を使用すると処理速度が低下することが分かっています", + "scss.lint.unknownProperties.desc": "不明なプロパティ。", + "scss.lint.unknownVendorSpecificProperties.desc": "不明なベンダー固有のプロパティ。", + "scss.lint.vendorPrefix.desc": "ベンダー固有のプレフィックスを使用する場合は、標準のプロパティも含めます", + "scss.lint.zeroUnits.desc": "0 に単位は必要ありません", + "scss.validate.title": "SCSS の検証と問題の重大度を制御します。", + "scss.validate.desc": "すべての検証を有効または無効にします", + "less.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", + "scss.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", + "css.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", + "css.colorDecorators.enable.deprecationMessage": "設定 `css.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。", + "scss.colorDecorators.enable.deprecationMessage": "設定 `scss.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。", + "less.colorDecorators.enable.deprecationMessage": "設定 `less.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/css/package.i18n.json b/i18n/jpn/extensions/css/package.i18n.json index 920c3c933e8..afbe11a31b6 100644 --- a/i18n/jpn/extensions/css/package.i18n.json +++ b/i18n/jpn/extensions/css/package.i18n.json @@ -6,76 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS 言語機能", - "description": "CSS、LESS、SCSS ファイルに豊富な言語サポートを提供。", - "css.title": "CSS", - "css.lint.argumentsInColorFunction.desc": "無効なパラメーター数値", - "css.lint.boxModel.desc": "padding や border を使用するときに width や height を使用しないでください", - "css.lint.compatibleVendorPrefixes.desc": "ベンダー プレフィックス を使用するときは、他すべてのベンダー プレフィックスも必ず含めてください", - "css.lint.duplicateProperties.desc": "重複するスタイル定義を使用しないでください", - "css.lint.emptyRules.desc": "空の規則セットを使用しないでください", - "css.lint.float.desc": "'float' の使用を避けてください。float は脆弱な CSS につながり、レイアウトの一部が変更されたときに CSS が破損しやすくなります。", - "css.lint.fontFaceProperties.desc": "@font-face 規則で 'src' プロパティと 'font-family' プロパティを定義する必要があります", - "css.lint.hexColorLength.desc": "Hex には 3 つまたは 6 つの 16 進数が含まれる必要があります", - "css.lint.idSelector.desc": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", - "css.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", - "css.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", - "css.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", - "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.trace.server.desc": "VS Code と CSS 言語サーバー間の通信をトレースします。", - "css.validate.title": "CSS の検証と問題の重大度を制御します。", - "css.validate.desc": "すべての検証を有効または無効にします", - "less.title": "LESS", - "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": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", - "less.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", - "less.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", - "less.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", - "less.lint.propertyIgnoredDueToDisplay.desc": "表示によりプロパティが無視されます。たとえば、'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.title": "LESS の検証と問題の重大度を制御します。", - "less.validate.desc": "すべての検証を有効または無効にします", - "scss.title": "SCSS (Sass)", - "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": "セレクターには ID を含めないでください。これらの規則と HTML の結合が密接すぎます。", - "scss.lint.ieHack.desc": "IE ハックは、IE7 以前をサポートする場合にのみ必要です", - "scss.lint.important.desc": "!important は使用しないでください。これは CSS 全体の特定性が制御不能になり、リファクタリングが必要なことを示しています。", - "scss.lint.importStatement.desc": "複数の Import ステートメントを同時に読み込むことはできません", - "scss.lint.propertyIgnoredDueToDisplay.desc": "表示によりプロパティが無視されます。たとえば、'display: inline' の場合、width、height、margin-top、margin-bottom、および float のプロパティには効果がありません", - "scss.lint.universalSelector.desc": "ユニバーサル セレクター (*) を使用すると処理速度が低下することが分かっています", - "scss.lint.unknownProperties.desc": "不明なプロパティ。", - "scss.lint.unknownVendorSpecificProperties.desc": "不明なベンダー固有のプロパティ。", - "scss.lint.vendorPrefix.desc": "ベンダー固有のプレフィックスを使用する場合は、標準のプロパティも含めます", - "scss.lint.zeroUnits.desc": "0 の単位は必要ありません", - "scss.validate.title": "SCSS の検証と問題の重大度を制御します。", - "scss.validate.desc": "すべての検証を有効または無効にします", - "less.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", - "scss.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", - "css.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", - "css.colorDecorators.enable.deprecationMessage": "設定 `css.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。", - "scss.colorDecorators.enable.deprecationMessage": "設定 `scss.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。", - "less.colorDecorators.enable.deprecationMessage": "設定 `less.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。" + "displayName": "CSS の基本言語サポート", + "description": "CSS、LESS、SCSS ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/emmet/package.i18n.json b/i18n/jpn/extensions/emmet/package.i18n.json index b9dfede7063..6989669cdcb 100644 --- a/i18n/jpn/extensions/emmet/package.i18n.json +++ b/i18n/jpn/extensions/emmet/package.i18n.json @@ -59,5 +59,6 @@ "emmetPreferencesCssWebkitProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'webkit' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'webkit' プレフィックスを避ける場合は空の文字列に設定します。", "emmetPreferencesCssMozProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'moz' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'moz' プレフィックスを避ける場合は空の文字列に設定します。", "emmetPreferencesCssOProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'o' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'o' プレフィックスを避ける場合は空の文字列に設定します。", - "emmetPreferencesCssMsProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'ms' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'ms' プレフィックスを避ける場合は空の文字列に設定します。" + "emmetPreferencesCssMsProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'ms' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'ms' プレフィックスを避ける場合は空の文字列に設定します。", + "emmetPreferencesCssFuzzySearchMinScore": "あいまい検索の省略形が達成すべき (0 から 1 の) 最小スコア。値が低ければ多くの誤検出が発生する可能性があります。値が高ければ一致する見込みが減る可能性があります。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/git/out/commands.i18n.json b/i18n/jpn/extensions/git/out/commands.i18n.json index 8b6874c3974..9b386d3755b 100644 --- a/i18n/jpn/extensions/git/out/commands.i18n.json +++ b/i18n/jpn/extensions/git/out/commands.i18n.json @@ -75,7 +75,7 @@ "ok": "OK", "push with tags success": "タグが正常にプッシュされました。", "pick remote": "リモートを選んで、ブランチ '{0}' を次に公開します:", - "sync is unpredictable": "このアクションはコミットを '{0}' との間でプッシュしたりプルしたりします。", + "sync is unpredictable": "このアクションはコミットを '{0}/{1}' との間でプッシュしたりプルしたりします。", "never again": "OK、今後は表示しない", "no remotes to publish": "リポジトリには、発行先として構成されているリモートがありません。", "no changes stash": "スタッシュする変更がありません。", diff --git a/i18n/jpn/extensions/git/package.i18n.json b/i18n/jpn/extensions/git/package.i18n.json index ed4c2c13c62..5f3a79c4800 100644 --- a/i18n/jpn/extensions/git/package.i18n.json +++ b/i18n/jpn/extensions/git/package.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Git", - "description": "Git SCM の統合", + "description": "Git SCM統合", "command.clone": "クローン", "command.init": "リポジトリの初期化", "command.close": "リポジトリを閉じる", @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Git 変更の表示内にインラインのファイルを開くアクションを表示するかどうかを制御します。", "config.inputValidation": "コミット メッセージの入力検証をいつ表示するかを制御します。", "config.detectSubmodules": "Git のサブモジュールを自動的に検出するかどうかを制御します。", + "config.detectSubmodulesLimit": "Git サブモジュールの検出の制限を制御します。", "colors.modified": "リソースを改変した場合の配色", "colors.deleted": "リソースを検出した場合の配色", "colors.untracked": "リソースを追跡しない場合の配色", diff --git a/i18n/jpn/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/jpn/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..ed3272fd709 --- /dev/null +++ b/i18n/jpn/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML 言語サーバー", + "folding.start": "折りたたみ領域の開始", + "folding.end": "折りたたみ領域の終了" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/html-language-features/package.i18n.json b/i18n/jpn/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..18b6e348d48 --- /dev/null +++ b/i18n/jpn/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML 言語機能", + "description": "HTML、Razor、Handlebar ファイルに豊富な言語サポートを提供。", + "html.format.enable.desc": "既定の HTML フォーマッタを有効/無効にします", + "html.format.wrapLineLength.desc": "1 行あたりの最大文字数 (0 = 無効にする)。", + "html.format.unformatted.desc": "再フォーマットしてはならないタグの、コンマ区切りの一覧。'null' の場合、既定で https://www.w3.org/TR/html5/dom.html#phrasing-content にリストされているすべてのタグになります。", + "html.format.contentUnformatted.desc": "コンテンツを再フォーマットしてはならないタグをコンマで区切ってリストにします。'null' は、既定値の 'pre' タグを表します。", + "html.format.indentInnerHtml.desc": " セクションと セクションをインデントします。", + "html.format.preserveNewLines.desc": "要素の前にある既存の改行を保持するかどうか。要素の前でのみ機能し、タグの内側やテキストに対しては機能しません。", + "html.format.maxPreserveNewLines.desc": "1 つのチャンク内に保持できる改行の最大数。無制限にするには、'null' を使います。", + "html.format.indentHandlebars.desc": "書式設定とインデント {{#foo}} および {{/foo}}。", + "html.format.endWithNewline.desc": "末尾に改行を入れます。", + "html.format.extraLiners.desc": "直前に改行を 1 つ入れるタグの、コンマで区切られたリストです。'null' は、既定値の \"head, body, /html\" を表します。", + "html.format.wrapAttributes.desc": "属性を折り返します。", + "html.format.wrapAttributes.auto": "行の長さが超過した場合のみ属性を折り返します。", + "html.format.wrapAttributes.force": "先頭以外の各属性を折り返します。", + "html.format.wrapAttributes.forcealign": "先頭以外の各属性を折り返して位置を合わせます。", + "html.format.wrapAttributes.forcemultiline": "各属性を折り返します。", + "html.suggest.angular1.desc": "ビルトイン HTML 言語サポートが Angular V1 のタグおよびプロパティを候補表示するかどうかを構成します。", + "html.suggest.ionic.desc": "ビルトイン HTML 言語サポートが Ionic のタグ、プロパティ、および値を候補表示するかどうかを構成します。", + "html.suggest.html5.desc": "ビルトイン HTML 言語サポートが HTML5 のタグ、プロパティ、および値を候補表示するかどうかを構成します。", + "html.trace.server.desc": "VS Code と HTML 言語サーバー間の通信をトレースします。", + "html.validate.scripts": "ビルトイン HTML 言語サポートが埋め込みスクリプトを検証するかどうかを構成します。", + "html.validate.styles": "ビルトイン HTML 言語サポートが埋め込みスタイルを検証するかどうかを構成します。", + "html.autoClosingTags": "HTML タグの自動クローズを有効/無効にします。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/html/package.i18n.json b/i18n/jpn/extensions/html/package.i18n.json index 047a45d6e23..965c8b85db9 100644 --- a/i18n/jpn/extensions/html/package.i18n.json +++ b/i18n/jpn/extensions/html/package.i18n.json @@ -6,29 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "HTML 言語機能", - "description": "HTML、Razor、Handlebar ファイルに豊富な言語サポートを提供。", - "html.format.enable.desc": "既定の HTML フォーマッタを有効/無効にします", - "html.format.wrapLineLength.desc": "1 行あたりの最大文字数 (0 = 無効にする)。", - "html.format.unformatted.desc": "再フォーマットしてはならないタグの、コンマ区切りの一覧。'null' の場合、既定で https://www.w3.org/TR/html5/dom.html#phrasing-content にリストされているすべてのタグになります。", - "html.format.contentUnformatted.desc": "コンテンツを再フォーマットしてはならないタグをコンマで区切ってリストにします。'null' は、既定値の 'pre' タグを表します。", - "html.format.indentInnerHtml.desc": " セクションと セクションをインデントします。", - "html.format.preserveNewLines.desc": "要素の前にある既存の改行を保持するかどうか。要素の前でのみ機能し、タグの内側やテキストに対しては機能しません。", - "html.format.maxPreserveNewLines.desc": "1 つのチャンク内に保持できる改行の最大数。無制限にするには、'null' を使います。", - "html.format.indentHandlebars.desc": "書式設定とインデント {{#foo}} および {{/foo}}。", - "html.format.endWithNewline.desc": "末尾に改行を入れます。", - "html.format.extraLiners.desc": "直前に改行を 1 つ入れるタグの、コンマで区切られたリストです。'null' は、既定値の \"head, body, /html\" を表します。", - "html.format.wrapAttributes.desc": "属性を折り返します。", - "html.format.wrapAttributes.auto": "行の長さが超過した場合のみ属性を折り返します。", - "html.format.wrapAttributes.force": "先頭以外の各属性を折り返します。", - "html.format.wrapAttributes.forcealign": "先頭以外の各属性を折り返して位置を合わせます。", - "html.format.wrapAttributes.forcemultiline": "各属性を折り返します。", - "html.suggest.angular1.desc": "ビルトイン HTML 言語サポートが Angular V1 のタグおよびプロパティを候補表示するかどうかを構成します。", - "html.suggest.ionic.desc": "ビルトイン HTML 言語サポートが Ionic のタグ、プロパティ、および値を候補表示するかどうかを構成します。", - "html.suggest.html5.desc": "ビルトイン HTML 言語サポートが HTML5 のタグ、プロパティ、および値を候補表示するかどうかを構成します。", - "html.trace.server.desc": "VS Code と HTML 言語サーバー間の通信をトレースします。", - "html.validate.scripts": "ビルトイン HTML 言語サポートが埋め込みスクリプトを検証するかどうかを構成します。", - "html.validate.styles": "ビルトイン HTML 言語サポートが埋め込みスタイルを検証するかどうかを構成します。", - "html.experimental.syntaxFolding": "構文の折りたたみマーカー認識を有効/無効にします。", - "html.autoClosingTags": "HTML タグの自動クローズを有効/無効にします。" + "displayName": "HTML の基本言語サポート", + "description": "HTML ファイル内で構文ハイライト、かっこ一致、スニペットを提供" } \ No newline at end of file diff --git a/i18n/jpn/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/jpn/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..2700229f8e7 --- /dev/null +++ b/i18n/jpn/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON 言語サーバー" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/json-language-features/package.i18n.json b/i18n/jpn/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..2960f3fa69e --- /dev/null +++ b/i18n/jpn/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON 言語機能", + "description": "JSON ファイルに豊富な言語サポートを提供。", + "json.schemas.desc": "スキーマを現在のプロジェクトの JSON ファイルに関連付けます", + "json.schemas.url.desc": "スキーマへの URL または現在のディレクトリのスキーマへの相対パス", + "json.schemas.fileMatch.desc": "JSON ファイルをスキーマに解決する場合に一致するファイル パターンの配列です。", + "json.schemas.fileMatch.item.desc": "JSON ファイルをスキーマに解決する場合に一致するよう '*' を含む可能性があるファイル パターンです。", + "json.schemas.schema.desc": "指定された URL のスキーマ定義です。スキーマは、スキーマ URL へのアクセスを避けるためにのみ指定する必要があります。", + "json.format.enable.desc": "既定の JSON フォーマッタを有効/無効にします (再起動が必要です)", + "json.tracing.desc": "VS Code と JSON 言語サーバー間の通信をトレースします。", + "json.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", + "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/json/package.i18n.json b/i18n/jpn/extensions/json/package.i18n.json index e060790f4dc..2ec4d67b799 100644 --- a/i18n/jpn/extensions/json/package.i18n.json +++ b/i18n/jpn/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "JSON 言語機能", - "description": "JSON ファイルに豊富な言語サポートを提供。", - "json.schemas.desc": "スキーマを現在のプロジェクトの JSON ファイルに関連付けます", - "json.schemas.url.desc": "スキーマへの URL または現在のディレクトリのスキーマへの相対パス", - "json.schemas.fileMatch.desc": "JSON ファイルをスキーマに解決する場合に一致するファイル パターンの配列です。", - "json.schemas.fileMatch.item.desc": "JSON ファイルをスキーマに解決する場合に一致するよう '*' を含む可能性があるファイル パターンです。", - "json.schemas.schema.desc": "指定された URL のスキーマ定義です。スキーマは、スキーマ URL へのアクセスを避けるためにのみ指定する必要があります。", - "json.format.enable.desc": "既定の JSON フォーマッタを有効/無効にします (再起動が必要です)", - "json.tracing.desc": "VS Code と JSON 言語サーバー間の通信をトレースします。", - "json.colorDecorators.enable.desc": "カラー デコレーターを有効または無効にします", - "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` は使用されなくなりました。`editor.colorDecorators` を使用してください。", - "json.experimental.syntaxFolding": "構文の折りたたみマーカー認識を有効/無効にします。" + "displayName": "JSON の基本言語サポート", + "description": "JSON ファイル内で構文ハイライト、かっこ一致を提供" } \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/jpn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..0489b0c3667 --- /dev/null +++ b/i18n/jpn/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "'markdown.styles' を読み込むことができません: {0}" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/jpn/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..21f810889f0 --- /dev/null +++ b/i18n/jpn/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[プレビュー] {0}", + "previewTitle": "プレビュー {0}" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/jpn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..8031d3c647d --- /dev/null +++ b/i18n/jpn/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "このドキュメントで一部のコンテンツが無効になっています", + "preview.securityMessage.title": "安全でない可能性があるか保護されていないコンテンツは、マークダウン プレビューで無効化されています。保護されていないコンテンツやスクリプトを有効にするには、マークダウン プレビューのセキュリティ設定を変更してください", + "preview.securityMessage.label": "セキュリティが無効なコンテンツの警告" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json b/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..22ad7c7170c --- /dev/null +++ b/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "高レベル", + "strict.description": "セキュリティで保護されたコンテンツのみを読み込む", + "insecureContent.title": "セキュリティで保護されていないコンテンツを許可する", + "insecureContent.description": "HTTP を介したコンテンツの読み込みを有効にする", + "disable.title": "無効にする", + "disable.description": "すべてのコンテンツとスクリプトの実行を許可します。推奨されません。", + "moreInfo.title": "詳細情報", + "enableSecurityWarning.title": "このワークスペースでプレビューのセキュリティ警告を有効にする", + "disableSecurityWarning.title": "このワークスペースでプレビューのセキュリティ警告を有効にする", + "toggleSecurityWarning.description": "コンテンツのセキュリティ レベルに影響しません", + "preview.showPreviewSecuritySelector.title": "ワークスペースのマークダウン プレビューに関するセキュリティ設定を選択 " +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/package.i18n.json b/i18n/jpn/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..58b68df0b74 --- /dev/null +++ b/i18n/jpn/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 言語機能", + "description": "Markdown に豊富な言語サポートを提供。", + "markdown.preview.breaks.desc": "マークダウン プレビューで改行をレンダリングする方法を設定します。'true' に設定すると改行ごとに
を作成します。", + "markdown.preview.linkify": "マークダウン プレビューで URL 形式のテキストからリンクへの変換を有効または無効にします。", + "markdown.preview.doubleClickToSwitchToEditor.desc": "マークダウンのプレビューでダブルクリックすると、エディターに切り替わります。", + "markdown.preview.fontFamily.desc": "マークダウン プレビューで使用されるフォント ファミリを制御します。", + "markdown.preview.fontSize.desc": "マークダウン プレビューで使用されるフォント サイズ (ピクセル単位) を制御します。", + "markdown.preview.lineHeight.desc": "マークダウン プレビューで使用される行の高さを制御します。この数値はフォント サイズを基準とします。", + "markdown.preview.markEditorSelection.desc": "マークダウンのプレビューに、エディターの現在の選択範囲を示すマークが付きます。", + "markdown.preview.scrollEditorWithPreview.desc": "マークダウンのプレビューをスクロールすると、エディターのビューが更新されます 。", + "markdown.preview.scrollPreviewWithEditor.desc": "マークダウンのエディターをスクロールすると、プレビューのビューが更新されます。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[非推奨] エディターの現在選択されている行を表示するためにマークダウン プレビューをスクロールします。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "この設定は 'markdown.preview.scrollPreviewWithEditor' に置き換えられ、もはや有効ではありません。", + "markdown.preview.title": "プレビューを開く", + "markdown.previewFrontMatter.dec": "マークダウン プレビューで YAML front matter がレンダリングされる方法を設定します。'hide' の場合、front matter が削除されます。その他の場合には、front matter はマークダウン コンテンツとして処理されます。", + "markdown.previewSide.title": "プレビューを横に表示", + "markdown.showLockedPreviewToSide.title": "ロックされたプレビューを横に表示", + "markdown.showSource.title": "ソースの表示", + "markdown.styles.dec": "マークダウン プレビューから使用する CSS スタイル シートの URL またはローカル パスの一覧。相対パスは、エクスプローラーで開かれているフォルダーへの絶対パスと解釈されます。開かれているフォルダーがない場合、マークダウン ファイルの場所を基準としていると解釈されます。'\\' はすべて '\\\\' と入力する必要があります。", + "markdown.showPreviewSecuritySelector.title": "プレビュー のセキュリティ設定を変更", + "markdown.trace.desc": "マークダウン拡張機能のデバッグ ログを有効にします。", + "markdown.preview.refresh.title": "プレビューを更新", + "markdown.preview.toggleLock.title": "プレビュー ロックの切り替え" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/jpn/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..3f34bb85eac --- /dev/null +++ b/i18n/jpn/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "PHP ファイルを lint するために {0} (ワークスペースの設定として定義されている) を実行することを許可しますか?", + "php.yes": "許可", + "php.no": "許可しない", + "wrongExecutable": "{0} が有効な PHP 実行可能ファイルではないため、検証できません。設定 'php.validate.executablePath' を使用して PHP 実行可能ファイルを構成してください。", + "noExecutable": "PHP 実行可能ファイルが設定されていないため、検証できません。設定 'php.validate.executablePath' を使用して PHP 実行可能ファイルを構成してください。", + "unknownReason": "パス {0} を使用して php を実行できませんでした。理由は不明です。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/php-language-features/package.i18n.json b/i18n/jpn/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..15a98a885de --- /dev/null +++ b/i18n/jpn/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "組み込みの PHP 言語候補機能を有効にするかどうかを設定します。このサポートによって、PHP グローバルと変数の候補が示されます。", + "configuration.validate.enable": "組み込みの PHP 検証を有効/無効にします。", + "configuration.validate.executablePath": "PHP 実行可能ファイルを指定します。", + "configuration.validate.run": "リンターを保存時に実行するか、入力時に実行するか。", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "PHP の検証を無効にします (ワークスペース設定として定義)。", + "displayName": "PHP 言語機能", + "description": "PHP ファイルに豊富な言語サポートを提供します。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/php/package.i18n.json b/i18n/jpn/extensions/php/package.i18n.json index c5c7d5d62ef..5989177b903 100644 --- a/i18n/jpn/extensions/php/package.i18n.json +++ b/i18n/jpn/extensions/php/package.i18n.json @@ -6,13 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "組み込みの PHP 言語候補機能を有効にするかどうかを設定します。このサポートによって、PHP グローバルと変数の候補が示されます。", - "configuration.validate.enable": "組み込みの PHP 検証を有効/無効にします。", - "configuration.validate.executablePath": "PHP 実行可能ファイルを指定します。", - "configuration.validate.run": "リンターを保存時に実行するか、入力時に実行するか。", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP の検証を無効にします (ワークスペース設定として定義)。", "displayName": "PHP 言語機能", - "description": "PHP ファイルの IntelliSense、リンティング、および基本言語サポートを提供します。" + "description": "PHP ファイル内に構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 2abf82cf890..17b19815820 100644 --- a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "一致する項目はありません", "settingsSearchIssue": "設定検索の問題", "bugReporter": "バグ レポート", - "performanceIssue": "パフォーマンスの問題", "featureRequest": "機能欲求", + "performanceIssue": "パフォーマンスの問題", "stepsToReproduce": "再現手順", "bugDescription": "問題を再現するための正確な手順を共有します。このとき、期待する結果と実際の結果を提供してください。GitHub-flavored Markdown に対応しています。GitHub 上で確認するときに問題を編集してスクリーンショットを追加できます。", "performanceIssueDesciption": "このパフォーマンスの問題はいつ発生しましたか? それは起動時ですか? それとも特定のアクションのあとですか? GitHub-flavored Markdown に対応しています。GitHub 上で確認するときに問題を編集してスクリーンショットを追加できます。", diff --git a/i18n/jpn/src/vs/code/electron-main/menus.i18n.json b/i18n/jpn/src/vs/code/electron-main/menus.i18n.json index 93732a981f0..764bb3ddb5f 100644 --- a/i18n/jpn/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/jpn/src/vs/code/electron-main/menus.i18n.json @@ -57,7 +57,7 @@ "miPaste": "貼り付け(&&P)", "miFind": "検索(&&F)", "miReplace": "置換(&&R)", - "miFindInFiles": "ファイル内を検索(&&I)", + "miFindInFiles": "複数ファイルから検索(&&I)", "miReplaceInFiles": "複数のファイルで置換(&&I)", "miEmmetExpandAbbreviation": "Emmet: 略語の展開(&&X)", "miShowEmmetCommands": "Emmet(&&M)...", diff --git a/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json index be93b06c5a6..d5e55bf5dc9 100644 --- a/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,9 @@ "warningBorder": "エディターで警告を示す波線の境界線の色。", "infoForeground": "エディターで情報を示す波線の前景色。", "infoBorder": "エディターで情報を示す波線の境界線の色。", - "overviewRulerRangeHighlight": "範囲を強調表示するときの概要ルーラーのマーカー色。", + "hintForeground": "エディターでヒントを示す波線の前景色。", + "hintBorder": "エディターでヒントを示す波線の境界線の色。", + "overviewRulerRangeHighlight": "範囲を強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。", "overviewRuleError": "エラーを示す概要ルーラーのマーカー色。", "overviewRuleWarning": "警告を示す概要ルーラーのマーカー色。", "overviewRuleInfo": "情報を示す概要ルーラーのマーカー色。" diff --git a/i18n/jpn/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/jpn/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 765d78bc6cf..3f023b18ed0 100644 --- a/i18n/jpn/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/jpn/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "次の問題 (エラー、警告、情報) へ移動", - "markerAction.previous.label": "前の問題 (エラー、警告、情報) へ移動", - "editorMarkerNavigationError": "エディターのマーカー ナビゲーション ウィジェットのエラーの色。", - "editorMarkerNavigationWarning": "エディターのマーカー ナビゲーション ウィジェットの警告の色。", - "editorMarkerNavigationInfo": "エディターのマーカー ナビゲーション ウィジェットの情報の色。", - "editorMarkerNavigationBackground": "エディターのマーカー ナビゲーション ウィジェットの背景。" + "markerAction.previous.label": "前の問題 (エラー、警告、情報) へ移動" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/jpn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..a523dd78325 --- /dev/null +++ b/i18n/jpn/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "エディターのマーカー ナビゲーション ウィジェットのエラーの色。", + "editorMarkerNavigationWarning": "エディターのマーカー ナビゲーション ウィジェットの警告の色。", + "editorMarkerNavigationInfo": "エディターのマーカー ナビゲーション ウィジェットの情報の色。", + "editorMarkerNavigationBackground": "エディターのマーカー ナビゲーション ウィジェットの背景。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/jpn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..7c0d7d8f473 --- /dev/null +++ b/i18n/jpn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,47 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "日曜日", + "Monday": "月曜日", + "Tuesday": "火曜日", + "Wednesday": "水曜日", + "Thursday": "木曜日", + "Friday": "金曜日", + "Saturday": "土曜日", + "SundayShort": "日", + "MondayShort": "月", + "TuesdayShort": "火", + "WednesdayShort": "水", + "ThursdayShort": "木", + "FridayShort": "金", + "SaturdayShort": "土", + "January": "1 月", + "February": "2 月", + "March": "3 月", + "April": "4 月", + "May": "5 月", + "June": "6 月", + "July": "7 月", + "August": "8 月", + "September": "9 月", + "October": "10 月", + "November": "11 月", + "December": "12 月", + "JanuaryShort": "1 月", + "FebruaryShort": "2 月", + "MarchShort": "3 月", + "AprilShort": "4 月", + "MayShort": "5 月", + "JuneShort": "6 月", + "JulyShort": "7 月", + "AugustShort": "8 月", + "SeptemberShort": "9 月", + "OctoberShort": "10 月", + "NovemberShort": "11 月", + "DecemberShort": "12 月" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/jpn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index b0186480893..04ae521063b 100644 --- a/i18n/jpn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/jpn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,8 @@ "wordHighlightStrong": "変数への書き込みなど書き込みアクセス中のシンボルの背景色。下にある装飾を隠さないために、色は不透過であってはなりません。", "wordHighlightBorder": "変数の読み取りなど読み取りアクセス中のシンボルの境界線の色。", "wordHighlightStrongBorder": "変数への書き込みなど書き込みアクセス中のシンボルの境界線の色。", - "overviewRulerWordHighlightForeground": "シンボルを強調表示するときの概要ルーラーのマーカー色。", - "overviewRulerWordHighlightStrongForeground": "書き込みアクセス シンボルを強調表示するときの概要ルーラーのマーカー色。", + "overviewRulerWordHighlightForeground": "シンボルを強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。", + "overviewRulerWordHighlightStrongForeground": "書き込みアクセス シンボルを強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。", "wordHighlight.next.label": "次のシンボル ハイライトに移動", "wordHighlight.previous.label": "前のシンボル ハイライトに移動" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/jpn/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..7921873c1f8 --- /dev/null +++ b/i18n/jpn/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 つの追加ファイルが表示されていません", + "moreFiles": "...{0} 個の追加ファイルが表示されていません" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/jpn/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..c2ef06b51ea --- /dev/null +++ b/i18n/jpn/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "キャンセル" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index d9c8c1e7d10..9b0afc0667c 100644 --- a/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,15 @@ "errorInstallingDependencies": "依存関係のインストール中にエラーが発生しました。{0}", "MarketPlaceDisabled": "Marketplace が有効になっていません", "removeError": "拡張機能の削除中にエラーが発生しました: {0}。もう一度やり直す前に、VS Code の終了と起動を実施してください。", - "Not Market place extension": "Marketplace の拡張機能のみ再インストールできます", + "Not a Marketplace extension": "Marketplace の拡張機能のみ再インストールできます", "notFoundCompatible": "'{0}' をインストールできません。VS Code '{1}' と互換性がある利用可能なバージョンがありません。", "malicious extension": "問題が報告されたので、拡張機能をインストールできません。", "notFoundCompatibleDependency": "VS Code の現在のバージョン '{1}' と互換性を持つ、依存関係がある拡張機能 '{0}' が見つからないため、インストールできません。", "quitCode": "拡張機能をインストールできません。再インストールの前に VS Code の終了と起動を実施してください。", "exitCode": "拡張機能をインストールできません。再インストールの前に VS Code の終了と起動を実施してください。", "uninstallDependeciesConfirmation": "'{0}' のみをアンインストールしますか、または依存関係もアンインストールしますか?", - "uninstallOnly": "限定", - "uninstallAll": "すべて", + "uninstallOnly": "拡張機能のみ", + "uninstallAll": "すべてアンインストール", "uninstallConfirmation": "'{0}' をアンインストールしてもよろしいですか?", "ok": "OK", "singleDependentError": "拡張機能 '{0}' をアンインストールできません。拡張機能 '{1}' がこの拡張機能に依存しています。", diff --git a/i18n/jpn/src/vs/platform/list/browser/listService.i18n.json b/i18n/jpn/src/vs/platform/list/browser/listService.i18n.json index 92abbc3a7e9..b221fed5770 100644 --- a/i18n/jpn/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/jpn/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "マウスで複数の選択肢にツリーおよびリストの項目を追加するために使用される修飾子 (たとえば、エクスプローラーでエディターと scm ビューを開くなど)。`ctrlCmd` は、Windows と Linux では `Control` にマップされ、macOS では `Command` にマップされます。'横に並べて開く' マウス ジェスチャー (サポートされている場合) は、複数選択修飾子と競合しないように調整されます。", "openMode.singleClick": "マウスのシングル クリックで項目を開きます。", "openMode.doubleClick": "マウスのダブル クリックで項目を開きます。", - "openModeModifier": "マウスを使用して、ツリーとリストで項目を開く方法を制御します (サポートされている場合)。'SingleClick' に設定すると、項目をマウスのシングル クリックで開き、'doubleClick' に設定すると、ダブル クリックでのみ開きます。ツリーで子を持つ親の場合、この設定で、親をシングル クリックで展開するか、ダブル クリックで展開するかを制御します。該当しない場合、一部のツリーとリストでは、この設定が無視される場合があることに注意してください。" + "openModeModifier": "マウスを使用して、ツリーとリストで項目を開く方法を制御します (サポートされている場合)。'SingleClick' に設定すると、項目をマウスのシングル クリックで開き、'doubleClick' に設定すると、ダブル クリックでのみ開きます。ツリーで子を持つ親の場合、この設定で、親をシングル クリックで展開するか、ダブル クリックで展開するかを制御します。該当しない場合、一部のツリーとリストでは、この設定が無視される場合があることに注意してください。", + "horizontalScrolling setting": "ワークベンチでツリーが水平スクロールをサポートするかどうかを制御します。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/markers/common/markers.i18n.json b/i18n/jpn/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..5842e6fd343 --- /dev/null +++ b/i18n/jpn/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "エラー", + "sev.warning": "警告", + "sev.info": "情報" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/jpn/src/vs/platform/theme/common/colorRegistry.i18n.json index 66a264ff6b9..9652da2b67e 100644 --- a/i18n/jpn/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/jpn/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -93,6 +93,6 @@ "overviewRulerCurrentContentForeground": "行内マージ競合の現在の概要ルーラー前景色。", "overviewRulerIncomingContentForeground": "行内マージ競合の入力側の概要ルーラー前景色。", "overviewRulerCommonContentForeground": "行内マージ競合の共通の祖先概要ルーラー前景色。", - "overviewRulerFindMatchForeground": "一致項目を示す概要ルーラーのマーカー色。", - "overviewRulerSelectionHighlightForeground": "選択対象を強調表示するときの概要ルーラーのマーカー色。" + "overviewRulerFindMatchForeground": "検索一致項目を示す概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。", + "overviewRulerSelectionHighlightForeground": "選択範囲を強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index d396a84c05a..68ec7e9afd8 100644 --- a/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "保存時のフォーマットは {0}ms 後に中止されました", + "timeout.onWillSave": "onWillSaveTextDocument-event は 1750ms 後に中止されました", "saveParticipants": "Save Participants が実行中です..." } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/jpn/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..c56e83de881 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (拡張機能)" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 658a3853560..9d31ab7234a 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "次のグループにフォーカス", "openToSide": "横に並べて開く", "closeEditor": "エディターを閉じる", + "closeOneEditor": "閉じる", "revertAndCloseActiveEditor": "元に戻してエディターを閉じる", "closeEditorsToTheLeft": "左側のエディターを閉じる", "closeAllEditors": "すべてのエディターを閉じる", diff --git a/i18n/jpn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index ea110628335..8d15ea098f8 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "閉じる", "araLabelEditorActions": "エディター操作" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 75172e53e1f..9cfb4721d40 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "新しい通知はありません", "notifications": "通知", "notificationsToolbar": "通知センターのアクション", "notificationsList": "通知リスト" diff --git a/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json index 3f7b9fa43c0..78f2e08e8dc 100644 --- a/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,17 @@ "windowConfigurationTitle": "ウィンドウ", "window.openFilesInNewWindow.on": "新しいウィンドウでファイルを開きます", "window.openFilesInNewWindow.off": "ファイルのフォルダーが開かれていたウィンドウまたは最後のアクティブ ウィンドウでファイルを開きます", - "window.openFilesInNewWindow.default": "ファイルのフォルダーが開かれていたウィンドウでファイルを開くか、Dock または Finder を使用して開く場合以外は最後のアクティブ ウィンドウでファイルを開きます (macOS のみ)", - "openFilesInNewWindow": "ファイルを新しいウィンドウで開くかどうかを制御します。\n- default: ファイルのフォルダーが開かれていたウィンドウでファイルを開くか、Dock または Finder を使用して開く場合以外は最後のアクティブ ウィンドウでファイルを開きます (macOS のみ\n- on: 新しいウィンドウでファイルを開きます\n- off: ファイルのフォルダーが開かれていたウィンドウまたは最後のアクティブ ウィンドウでファイルを開きます\nこの設定は無視される場合もあります (-new-window または -reuse-window コマンド ライン オプションを使用する場合など)。", + "window.openFilesInNewWindow.defaultMac": "Dock または Finder を使用して開いたときを除き、ファイルのフォルダーを開いているウィンドウまたは最後のアクティブ ウィンドウでファイルを開きます", + "window.openFilesInNewWindow.default": "アプリケーション内から選択したとき (例: ファイル メニュー介したとき) を除き 、新しいウィンドウでファイルを開きます", + "openFilesInNewWindowMac": "ファイルを新しいウィンドウで開くかどうかを制御します。\n- default: Dock または Finder を使用して開いたときを除き、ファイルのフォルダーを開いているウィンドウまたは最後のアクティブ ウィンドウでファイルを開きます\n- on: 新しいウィンドウでファイルを開きます\n- off: ファイルのフォルダーを開いているフォルダーまたは最後のアクティブ ウィンドウでファイルを開きます\nこの設定は無視される場合もあります (例: -new-window または -reuse-window コマンド ライン オプションを使用する場合など)。", + "openFilesInNewWindow": "ファイルを新しいウィンドウで開くかどうかを制御します。\n- default: アプリケーション内から選択したとき (例: ファイル メニュー介したとき) を除き 、新しいウィンドウでファイルを開きます\n- on: 新しいウィンドウでファイルを開きます\n- off: ファイルのフォルダーを開いているフォルダーまたは最後のアクティブ ウィンドウでファイルを開きます\nこの設定は無視される場合もあります (例: -new-window または -reuse-window コマンド ライン オプションを使用する場合など)。", "window.openFoldersInNewWindow.on": "新しいウィンドウでフォルダーを開きます", "window.openFoldersInNewWindow.off": "フォルダーは、最後のアクティブ ウィンドウで開きます", "window.openFoldersInNewWindow.default": "フォルダーがアプリケーション内から (たとえば、[ファイル] メニューから) 選択された場合を除いて、新しいウィンドウでフォルダーを開きます", "openFoldersInNewWindow": "フォルダーを新しいウィンドウで開くか、最後のアクティブ ウィンドウで開くかを制御します。\n- default: アプリケーション内で ([ファイル] メニューなどから) 選択したものでなければ、新しいウィンドウでフォルダーを開く\n- on: 新しいウィンドウでフォルダーを開く\n- off: 最後のアクティブ ウィンドウでフォルダーを開く\nこの設定は無視される場合もあります (-new-window または -reuse-window コマンド ライン オプションを使用する場合など)。", + "window.openWithoutArgumentsInNewWindow.on": "新しい空のウィンドウを開く", + "window.openWithoutArgumentsInNewWindow.off": "最後にアクティブだった実行中のインスタンスにフォーカスする", + "openWithoutArgumentsInNewWindow": "引数なしで 2 つ目のインスタンスを起動するとき、新しい空のウィンドウを開くか、最後に実行されていたウィンドウにフォーカスするかを制御します。\n- on: 新しい空のウィンドウを開く\n- off: 最後に実行されていたウィンドウにフォーカスする\nこの設定は無視される場合もあります (-new-window または -reuse-window コマンド ライン オプションを使用する場合など)。", "window.reopenFolders.all": "すべてのウィンドウを再度開きます。", "window.reopenFolders.folders": "すべてのフォルダーを再度開きます。空のワークスペースは復元されません。", "window.reopenFolders.one": "最後にアクティブだったウィンドウを再び開きます。", @@ -58,7 +63,7 @@ "restoreWindows": "再起動後にワークスペースを再度開く方法を制御します。'none' を選択すると常に空のワークスペースで開始します。'one' を選択すると最後に使用したウィンドウを再度開きます。'folders' を選択すると開かれていたフォルダーとすべてのウィンドウを再度開きます。'all' を選択すると前回のセッションのすべてのウィンドウを再度開きます。", "restoreFullscreen": "全画面表示モードで終了した場合に、ウィンドウを全画面表示モードに復元するかどうかを制御します。", "zoomLevel": "ウィンドウのズーム レベルを調整します。元のサイズは 0 で、1 つ上げるごとに (1 など) 20% ずつ拡大することを表し、1 つ下げるごとに (-1 など) 20% ずつ縮小することを表します。小数点以下の桁数を入力して、さらに細かくズーム レベルを調整することもできます。", - "title": "アクティブなエディターに基づいてウィンドウのタイトルを制御します。変数は、コンテキストに基づいて置換されます:\n${activeEditorShort}: ファイル名 (例: myFile.txt)\n${activeEditorMedium}: ワークスペース フォルダーへの相対パス (例: myFolder/myFile.txt)\n${activeEditorLong}: ファイルの完全なパス (例: /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: ファイルが含まれているワークスペース フォルダー名 (例: myFolder)\n${folderPath}: ァイルが含まれているワークスペース フォルダーのファイルパス (例: /Users/Development/myFolder)\n${rootName}: ワークスペースの名前 (例: myFolder や myWorkspace)\n${rootPath}: ワークスペースのファイル パス (例: /Users/Development/myWorkspace)\n${appName}: 例: VS Code\n${dirty}: アクティブなエディターがダーティである場合のダーティ インジゲーター\n${separator}: 値のある変数で囲まれた場合にのみ表示される条件付き区切り記号 (\" - \")", + "title": "アクティブなエディターに基づいてウィンドウのタイトルを制御します。変数は、コンテキストに基づいて置換されます:\n${activeEditorShort}: ファイル名 (例: myFile.txt)\n${activeEditorMedium}: ワークスペース フォルダーへの相対パス (例: myFolder/myFile.txt)\n${activeEditorLong}: ファイルの完全なパス (例: /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: ファイルが含まれているワークスペース フォルダー名 (例: myFolder)\n${folderPath}: ァイルが含まれているワークスペース フォルダーのファイルパス (例: /Users/Development/myFolder)\n${rootName}: ワークスペースの名前 (例: myFolder や myWorkspace)\n${rootPath}: ワークスペースのファイル パス (例: /Users/Development/myWorkspace)\n${appName}: 例: VS Code\n${dirty}: アクティブなエディターがダーティである場合のダーティ インジゲーター\n${separator}: 値のある変数かスタティック テキストで囲まれた場合にのみ表示される条件付き区切り記号 (\" - \")", "window.newWindowDimensions.default": "新しいウィンドウを画面の中央に開きます。", "window.newWindowDimensions.inherit": "新しいウィンドウを、最後にアクティブだったウィンドウと同じサイズで開きます。", "window.newWindowDimensions.maximized": "新しいウィンドウを最大化した状態で開きます。", @@ -74,6 +79,7 @@ "autoDetectHighContrast": "有効にすると、Windows でハイ コントラスト テーマが使用されている場合にはハイ コントラスト テーマに自動的に変更され、Windows のハイ コントラスト テーマから切り替えられている場合にはダーク テーマに自動的に変更されます。", "titleBarStyle": "ウィンドウのタイトル バーの外観を調整します。変更を適用するには、完全に再起動する必要があります。", "window.nativeTabs": "macOS Sierra ウィンドウ タブを有効にします。この変更を適用するには完全な再起動が必要であり、ネイティブ タブでカスタムのタイトル バー スタイルが構成されていた場合はそれが無効になることに注意してください。", + "window.smoothScrollingWorkaround": "最小化した VS Code ウィンドウを元のサイズに戻したあと、スクロールが滑らかにならない場合はこの回避策を有効にしてください。これは Microsoft Surface のような高精度タッチパッドを備えたデバイスで、スクロールの開始が遅れる問題 (https://github.com/Microsoft/vscode/issues/13612) の回避策です。有効にすると、最小化の状態からウィンドウを元に戻したあとに少しレイアウトがちらつきますが、そうでなければ無害です。", "zenModeConfigurationTitle": "Zen Mode", "zenMode.fullScreen": "Zen Mode をオンにするとワークベンチを自動的に全画面モードに切り替えるかどうかを制御します。", "zenMode.centerLayout": "Zen Mode をオンにしたときにレイアウトを中央揃えにするかどうかを制御します。", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 0d52dc72f30..2f23d0808e7 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "未確認のブレークポイント", "functionBreakpointUnsupported": "このデバッグの種類では関数ブレークポイントはサポートされていません", "breakpointDirtydHover": "未確認のブレークポイント。ファイルは変更されているので、デバッグ セッションを再起動してください。", + "logBreakpointUnsupported": "このデバッグの種類では、ログ ポイントはサポートされていません。", "conditionalBreakpointUnsupported": "このデバッグの種類では、条件付きブレークポイントはサポートされていません。", "hitBreakpointUnsupported": "このデバッグの種類では、ヒットした条件付きブレークポイントはサポートされていません。" } \ 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 5a8bec4a4a4..f3b08e50093 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 @@ -24,16 +24,12 @@ "restartFrame": "フレームの再起動", "removeBreakpoint": "ブレークポイントの削除", "removeAllBreakpoints": "すべてのブレークポイントを削除する", - "enableBreakpoint": "ブレークポイントの有効化", - "disableBreakpoint": "ブレークポイントの無効化", "enableAllBreakpoints": "すべてのブレークポイントを有効にする", "disableAllBreakpoints": "すべてのブレークポイントを無効にする", "activateBreakpoints": "ブレークポイントのアクティブ化", "deactivateBreakpoints": "ブレークポイントの非アクティブ化", "reapplyAllBreakpoints": "すべてのブレークポイントを再適用する", "addFunctionBreakpoint": "関数ブレークポイントの追加", - "addConditionalBreakpoint": "条件付きブレークポイントの追加...", - "editConditionalBreakpoint": "ブレークポイントの編集...", "setValue": "値の設定", "addWatchExpression": "式の追加", "editWatchExpression": "式の編集", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 6a9b071674e..f610bb7f3a1 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "デバッグ: ブレークポイントの切り替え", "conditionalBreakpointEditorAction": "デバッグ: 条件付きブレークポイントの追加...", + "logPointEditorAction": "デバッグ: ログ ポイントの追加...", "runToCursor": "カーソル行の前まで実行", "debugEvaluate": "デバッグ: 評価", "debugAddToWatch": "デバッグ: ウォッチに追加", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..e5f19bbddb1 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetLogMessagePlaceholder": "ブレークポイントにヒットしたときにログに記録するメッセージ。'Enter' で決定、 'esc' でキャンセルします。", + "breakpointWidgetHitCountPlaceholder": "ヒット カウント条件が満たされる場合に中断します。'Enter' を押して受け入れるか 'Esc' を押して取り消します。", + "breakpointWidgetExpressionPlaceholder": "式が true と評価される場合に中断します。'Enter' を押して受け入れるか 'Esc' を押して取り消します。", + "breakpointWidgetLogMessageAriaLabel": "このブレークポイントがヒットするたびにプログラムはこのメッセージを記録します。Enter を押して受け入れるか、Esc を押して取り消します。", + "breakpointWidgetHitCountAriaLabel": "ヒット カウントが満たされる場合にのみプログラムはこの位置で停止します。Enter を押して受け入れるか、Esc を押して取り消します。", + "breakpointWidgetAriaLabel": "この条件が true の場合にのみプログラムはこの位置で停止します。Enter を押して受け入れるか、Esc を押して取り消します。", + "expression": "式", + "hitCount": "ヒット カウント", + "logMessage": "ログ メッセージ" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index b72557e3925..ab14921810e 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "ブレークポイントの編集...", + "disableBreakpoint": "ブレークポイントの無効化", + "enableBreakpoint": "ブレークポイントの有効化", "removeBreakpoints": "ブレークポイントの削除", "removeBreakpointOnColumn": "列 {0} のブレークポイントの削除", "removeLineBreakpoint": "行のブレークポイントの削除", @@ -18,5 +21,7 @@ "enableBreakpoints": "列 {0} のブレークポイントの有効化", "enableBreakpointOnLine": "行のブレークポイントの有効化", "addBreakpoint": "ブレークポイントの追加", + "conditionalBreakpoint": "条件付きブレークポイントの追加...", + "addLogPoint": "ログ ポイントを追加...", "addConfiguration": "構成の追加..." } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 252388aea65..94c8c8c8a16 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,6 +29,6 @@ "showErrors": "エラーの表示", "noFolderWorkspaceDebugError": "アクティブ ファイルをデバッグできません。ファイルがディスクに保存されており、そのファイル タイプのデバッグ拡張機能がインストールされていることを確認してください。", "cancel": "キャンセル", - "DebugTaskNotFound": "preLaunchTask '{0}' が見つかりませんでした。", - "taskNotTracked": "preLaunchTask '{0}' を追跡できません。" + "DebugTaskNotFound": "タスク '{0}' を見つけられませんでした。", + "taskNotTracked": "タスク '{0}' を追跡できません。" } \ No newline at end of file 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 f065f55154a..d8917f641c3 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 @@ -18,6 +18,7 @@ "debugRequest": "構成の要求の種類。\"launch\" または \"attach\" です。", "debugServer": "デバッグ拡張機能の開発のみ。ポートが指定の VS Code の場合、サーバー モードで実行中のデバッグ アダプターへの接続が試行されます。", "debugPrelaunchTask": "デバッグ セッションの開始前に実行するタスク。", + "debugPostDebugTask": "デバッグ セッションの終了後に実行するタスク。", "debugWindowsConfiguration": "Windows 固有の起動構成の属性。", "debugOSXConfiguration": "OS X 固有の起動構成の属性。", "debugLinuxConfiguration": "Linux 固有の起動構成の属性。", diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 66b62080027..a123669adde 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "推奨事項の拡張機能を構成 (ワークスペース フォルダー)", "malicious tooltip": "この拡張機能は問題ありと報告されました。", "malicious": "悪意がある", + "disabled": "無効", + "disabled globally": "無効", + "disabled workspace": "このワークスペースでは無効", "disableAll": "インストール済みのすべての拡張機能を無効にする", "disableAllWorkspace": "このワークスペースのインストール済みの拡張機能をすべて無効にする", "enableAll": "すべての拡張機能を有効にする", diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..039a3a0e4af --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,61 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "拡張機能名", + "extension id": "拡張機能の識別子", + "preview": "プレビュー", + "builtin": "ビルトイン", + "publisher": "発行者名", + "install count": "インストール数", + "rating": "評価", + "repository": "リポジトリ", + "license": "ライセンス", + "details": "詳細", + "contributions": "コントリビューション", + "changelog": "変更ログ", + "dependencies": "依存関係", + "noReadme": "利用できる README はありません。", + "noChangelog": "使用可能な変更ログはありません。", + "noContributions": "コントリビューションはありません", + "noDependencies": "依存関係はありません", + "settings": "設定 ({0})", + "setting name": "名前", + "description": "説明", + "default": "既定", + "debuggers": "デバッガー ({0})", + "debugger name": "名前", + "debugger type": "種類", + "views": "ビュー ({0})", + "view id": "ID", + "view name": "名前", + "view location": "場所", + "localizations": "ローカライズ ({0})", + "localizations language id": "言語 ID", + "localizations language name": "言語名", + "localizations localized language name": "言語名 (ローカライズ済み)", + "colorThemes": "配色テーマ ({0})", + "iconThemes": "アイコン テーマ ({0})", + "colors": "配色 ({0})", + "colorId": "Id", + "defaultDark": "ダーク テーマの既定値", + "defaultLight": "ライト テーマの既定値", + "defaultHC": "ハイ コントラストの既定値", + "JSON Validation": "JSON 検証 ({0})", + "fileMatch": "対象ファイル", + "schema": "スキーマ", + "commands": "コマンド ({0})", + "command name": "名前", + "keyboard shortcuts": "キーボード ショートカット", + "menuContexts": "メニュー コンテキスト", + "languages": "言語 ({0})", + "language id": "ID", + "language name": "名前", + "file extensions": "ファイル拡張子", + "grammar": "文章校正", + "snippets": "スニペット" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index b1fa2a06853..bab69eb2957 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,9 @@ "recommendedExtensions": "推奨", "otherRecommendedExtensions": "その他の推奨事項", "workspaceRecommendedExtensions": "ワークスペースの推奨事項", - "builtInExtensions": "ビルトイン", + "builtInExtensions": "機能", + "builtInThemesExtensions": "テーマ", + "builtInBasicsExtensions": "言語", "searchExtensions": "Marketplace で拡張機能を検索する", "sort by installs": "並べ替え: インストール数", "sort by rating": "並べ替え: 評価", diff --git a/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index df5c875d8b5..75b84f17fd8 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,6 +8,8 @@ ], "textFileEditor": "テキスト ファイル エディター", "createFile": "ファイルの作成", + "relaunchWithIncreasedMemoryLimit": "再起動", + "configureMemoryLimit": "構成", "fileEditorWithInputAriaLabel": "{0}。テキスト ファイル エディター。", "fileEditorAriaLabel": "テキスト ファイル エディター。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 84ba2651ad8..128e5ec3d69 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -17,7 +17,7 @@ "createNewFile": "新しいファイル", "createNewFolder": "新しいフォルダー", "deleteButtonLabelRecycleBin": "ごみ箱に移動(&&M)", - "deleteButtonLabelTrash": "ゴミ箱に移動(&&M)", + "deleteButtonLabelTrash": "ごみ箱に移動(&&M)", "deleteButtonLabel": "削除(&&D)", "dirtyMessageFilesDelete": "保存されていない変更があるファイルを削除します。続行しますか?", "dirtyMessageFolderOneDelete": "保存されていない変更がある 1 個のファイルを含むフォルダーを削除します。続行しますか?", @@ -28,14 +28,16 @@ "confirmMoveTrashMessageFolder": "'{0}' とその内容を削除しますか?", "confirmMoveTrashMessageFile": "'{0}' を削除しますか?", "undoBin": "ごみ箱から復元できます。", - "undoTrash": "ゴミ箱から復元できます。", + "undoTrash": "ごみ箱から復元できます。", "doNotAskAgain": "再度表示しない", "confirmDeleteMessageMultiple": "次の {0} 個のファイルを完全に削除してもよろしいですか?", "confirmDeleteMessageFolder": "'{0}' とその内容を完全に削除してもよろしいですか?", "confirmDeleteMessageFile": "'{0}' を完全に削除してもよろしいですか?", "irreversible": "このアクションは元に戻すことができません。", - "cancel": "キャンセル", - "permDelete": "完全に削除", + "binFailed": "ごみ箱を使用した削除に失敗しました。代わりに完全に削除しますか?", + "trashFailed": "ごみ箱を使用した削除に失敗しました。代わりに完全に削除しますか?", + "deletePermanentlyButtonLabel": "完全に削除(&&D)", + "retryButtonLabel": "再試行(&&R)", "importFiles": "ファイルのインポート", "confirmOverwrite": "保存先のフォルダーに同じ名前のファイルまたはフォルダーが既に存在します。置き換えてもよろしいですか?", "replaceButtonLabel": "置換(&&R)", diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 1e7ca7ba732..0f218645e33 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,8 +35,10 @@ "hotExit": "エディターを終了するときに保存を確認するダイアログを省略し、保存されていないファイルをセッション後も保持するかどうかを制御します。", "useExperimentalFileWatcher": "新しい試験的な File Watcher を使用します。", "defaultLanguage": "新しいファイルに割り当てられる既定の言語モード。", + "maxMemoryForLargeFilesMB": "大きなファイルを開くために再起動するときに、アプリケーションが使用する新しい MB 単位のメモリ制限。上限を再設定して起動する場合、 --max-memory=NEWSIZE をコマンド ラインで指定してアプリケーションを起動することもできます。", "editorConfigurationTitle": "エディター", "formatOnSave": "ファイルを保存するときにフォーマットしてください。フォーマッタを使用可能にして、ファイルを自動保存せず、エディターをシャットダウンしないでください。", + "formatOnSaveTimeout": "保存時フォーマットのタイムアウトを制御します。formatOnSave-コマンドの時間制限をミリ秒単位で指定してください。指定したタイムアウトよりも時間がかかるコマンドはキャンセルされます。", "explorerConfigurationTitle": "エクスプローラー", "openEditorsVisible": "[開いているエディター] ウィンドウに表示するエディターの数。", "autoReveal": "エクスプローラーでファイルを開くとき、自動的にファイルの内容を表示して選択するかどうかを制御します。", diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index b087bed0bc3..bc26deafdbb 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -13,7 +13,9 @@ "dropFolder": "ワークスペースにフォルダーを追加しますか?", "addFolders": "フォルダーの追加(&&A)", "addFolder": "フォルダーの追加(&&A)", + "confirmRootsMove": "ワークスペース内の複数のルート フォルダーの順序が変更されますがよろしいですか?", "confirmMultiMove": "次の {0} 個のファイルを移動してもよろしいですか?", + "confirmRootMove": "ワークスペース内のルート フォルダー '{0}' の順序が変更されますがよろしいですか?", "confirmMove": "'{0}' を移動しますか?", "doNotAskAgain": "再度表示しない", "moveButtonLabel": "移動(&&M)", diff --git a/i18n/jpn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..47e72aa69e4 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "HTML プレビュー" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..d8a322eb85e --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "エディター入力が正しくありません。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..e619da1dc8b --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "開発者" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..14a4dc22123 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview 開発者ツールを開く", + "refreshWebviewLabel": "WebView の再読み込み" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index a1fa540c1c5..a9659f21937 100644 --- a/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "VS Code の UI 言語を {0} にして再起動しますか?", + "yes": "はい", + "no": "いいえ", + "doNotAskAgain": "再度表示しない", "JsonSchema.locale": "使用する UI 言語。", "vscode.extension.contributes.localizations": "ローカリゼーションをエディターに提供します", "vscode.extension.contributes.localizations.languageId": "表示文字列が翻訳される言語の id。", diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..d2939459ebd --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "コピー", + "copyMarkerMessage": "メッセージのコピー" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..4d411c1a062 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "合計 {0} 個の問題", + "filteredProblems": "{1} 個中 {0} 個の問題を表示しています" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..c361cf56e9a --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "問題", + "tooltip.1": "このファイルに 1 つの問題", + "tooltip.N": "このファイルに {0} 個の問題", + "markers.showOnFile": "ファイルとフォルダーにエラーと警告を表示します。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..67dcb1da19f --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,44 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "表示", + "problems.view.toggle.label": "問題 (エラー、警告、情報) の切り替え", + "problems.view.focus.label": "問題 (エラー、警告、情報) にフォーカス", + "problems.panel.configuration.title": "問題ビュー", + "problems.panel.configuration.autoreveal": "ファイルを開くときに問題ビューに自動的にそのファイルを表示するかどうかを制御します", + "markers.panel.title.problems": "問題", + "markers.panel.aria.label.problems.tree": "ファイル別にグループ化した問題", + "markers.panel.no.problems.build": "現時点でワークスペースの問題は検出されていません。", + "markers.panel.no.problems.filters": "指定されたフィルター条件による結果はありません", + "markers.panel.action.filter": "問題のフィルター処理", + "markers.panel.filter.placeholder": "種類またはテキストでフィルター処理", + "markers.panel.filter.errors": "エラー", + "markers.panel.filter.warnings": "警告", + "markers.panel.filter.infos": "情報", + "markers.panel.single.error.label": "エラー 1", + "markers.panel.multiple.errors.label": "エラー {0}", + "markers.panel.single.warning.label": "警告 1", + "markers.panel.multiple.warnings.label": "警告 {0}", + "markers.panel.single.info.label": "情報 1", + "markers.panel.multiple.infos.label": "情報 {0}", + "markers.panel.single.unknown.label": "不明 1", + "markers.panel.multiple.unknowns.label": "不明 {0}", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} (問題あり {1})", + "problems.tree.aria.label.marker.relatedInformation": "この問題は {0} 個の箇所へ参照を持っています。", + "problems.tree.aria.label.error.marker": "{0}: {1} によって生成されたエラー (行 {2}、文字 {3}.{4})", + "problems.tree.aria.label.error.marker.nosource": "エラー: {0} (行 {1}、文字 {2}.{3})", + "problems.tree.aria.label.warning.marker": "{0}: {1} によって生成された警告 (行 {2}、文字 {3}.{4})", + "problems.tree.aria.label.warning.marker.nosource": "警告: {0} (行 {1}、文字 {2}.{3})", + "problems.tree.aria.label.info.marker": "{0}: {1} によって生成された情報 (行 {2}、文字 {3}.{4})", + "problems.tree.aria.label.info.marker.nosource": "情報: {0} (行 {1}、文字 {2}.{3})", + "problems.tree.aria.label.marker": "{0} によって生成された問題: {1} (行 {2}、文字 {3}.{4})", + "problems.tree.aria.label.marker.nosource": "問題: {0} (行 {1}、文字 {2}.{3})", + "problems.tree.aria.label.relatedinfo.message": "{0} ({3} の行 {1}、文字 {2})", + "errors.warnings.show.label": "エラーと警告の表示" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 539e4feb174..e980f87baa4 100644 --- a/i18n/jpn/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "出力の切り替え", "clearOutput": "出力のクリア", "toggleOutputScrollLock": "出力スクロール ロックの切り替え", - "switchToOutput.label": "出力に切り替え" + "switchToOutput.label": "出力に切り替え", + "openInLogViewer": "ログ ファイルを開く" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index 0cae9a24bb3..7ce6bdc9900 100644 --- a/i18n/jpn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "出力", "logViewer": "ログ ビューアー", "viewCategory": "表示", - "clearOutput.label": "出力のクリア" + "clearOutput.label": "出力のクリア", + "openActiveLogOutputFile": "表示: アクティブなログ出力ファイルを開く" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 1662eba1d89..15fc42aa021 100644 --- a/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -7,6 +7,8 @@ "Do not edit this file. It is machine generated." ], "keybindingsInputName": "キーボード ショートカット", + "showDefaultKeybindings": "既定のキーバインドを表示", + "showUserKeybindings": "ユーザーのキーバインドを表示", "SearchKeybindings.AriaLabel": "キー バインドの検索", "SearchKeybindings.Placeholder": "キー バインドの検索", "sortByPrecedene": "優先順位で並べ替え", diff --git a/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 64ef0f72b82..2f468e9bae1 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "次の検索包含パターンを表示", "previousSearchIncludePattern": "前の検索包含パターンを表示", - "nextSearchExcludePattern": "次の検索除外パターンを表示", - "previousSearchExcludePattern": "前の検索除外パターンを表示", "nextSearchTerm": "次の検索語句を表示", "previousSearchTerm": "前の検索語句を表示", "showSearchViewlet": "検索の表示", diff --git a/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json index e3bc313f762..641a488aa05 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,9 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "詳細検索の切り替え", - "searchScope.includes": "含めるファイル", - "label.includes": "検索包含パターン", - "searchScope.excludes": "除外するファイル", - "label.excludes": "検索除外パターン", + "searchIncludeExclude.label": "包含/除外するファイル", + "searchIncludeExclude.ariaLabel": "検索の包含/除外パターン", + "searchIncludeExclude.placeholder": "例: src, !*.ts, test/**/*.log", "replaceAll.confirmation.title": "すべて置換", "replaceAll.confirm.button": "置換(&&R)", "replaceAll.occurrence.file.message": "{1} 個のファイルで {0} 件の出現箇所を '{2}' に置換しました。", diff --git a/i18n/jpn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/jpn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index ed592ce8db9..c541ac646ed 100644 --- a/i18n/jpn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "問題パターン、あるいは提供されたか事前定義された問題パターンの名前。基本問題パターンが指定されている場合は省略できます。", "ProblemMatcherSchema.base": "使用する基本問題マッチャーの名前。", "ProblemMatcherSchema.owner": "Code 内の問題の所有者。base を指定すると省略できます。省略して base を指定しない場合、既定は 'external' になります。", + "ProblemMatcherSchema.source": "'typescript' または 'super lint' のような、この診断のソースを記述する解読可能な文字列", "ProblemMatcherSchema.severity": "キャプチャされた問題の既定の重大度。パターンが重要度の一致グループを定義していない場合に使用されます。", "ProblemMatcherSchema.applyTo": "テキスト ドキュメントで報告された問題が、開いているドキュメントのみ、閉じられたドキュメントのみ、すべてのドキュメントのいずれに適用されるかを制御します。", "ProblemMatcherSchema.fileLocation": "問題パターンで報告されたファイル名を解釈する方法を定義します。", diff --git a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index e7430be8b03..d81994154b1 100644 --- a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,15 @@ "JsonSchema.tasks.group.none": "タスクをグループに割り当てない", "JsonSchema.tasks.group": "このタスクが属する実行グループを定義します。ビルド グループに追加する \"build\" とテスト グループに追加する \"test\" をサポートしています。", "JsonSchema.tasks.type": "タスクをプロセスとして実行するか、またはシェル内部でコマンドとして実行するかどうかを定義します。", + "JsonSchema.command.quotedString.value": "実際のコマンド値", + "JsonSchema.tasks.quoting.escape": "シェルのエスケープ文字を使用して文字をエスケープします (例: PowerShell の ` 、bash の \\)。", + "JsonSchema.tasks.quoting.strong": "シェルの strong quote 文字を使用して引数を引用します (例: PowerShell や bash の下の \")。", + "JsonSchema.tasks.quoting.weak": "シェルの weak quote 文字を使用して引数を引用します (例: PowerShell や bash の下の ')。", + "JsonSchema.command.quotesString.quote": "どのようにコマンドの値を引用符で囲うかを制御します。", + "JsonSchema.command": "実行されるコマンド。外部プログラムかシェル コマンドです。", + "JsonSchema.args.quotedString.value": "実際の引数値", + "JsonSchema.args.quotesString.quote": "どのように引数の値を引用符で囲うかを制御します。", + "JsonSchema.tasks.args": "このタスクの起動時にコマンドに渡される引数。", "JsonSchema.tasks.label": "タスクのユーザー インターフェイス ラベル", "JsonSchema.version": "構成のバージョン番号", "JsonSchema.tasks.identifier": "launch.json または dependsOn 句のタスクを参照するユーザー定義の識別子。", diff --git a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 27d7f12255e..df1f241a2c9 100644 --- a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,11 @@ ], "tasksCategory": "タスク", "ConfigureTaskRunnerAction.label": "タスクの構成", - "problems": "問題", + "totalErrors": "エラー {0}", + "totalWarnings": "警告 {0}", + "totalInfos": "情報 {0}", "building": "ビルド中...", - "manyMarkers": "99+", + "manyProblems": "10K+", "runningTasks": "実行中のタスクを表示", "tasks": "タスク", "TaskSystem.noHotSwap": "アクティブなタスクを実行しているタスク実行エンジンを変更するには、ウィンドウの再読み込みが必要です", @@ -46,8 +48,8 @@ "recentlyUsed": "最近使用したタスク", "configured": "構成済みのタスク", "detected": "検出されたタスク", - "TaskService.ignoredFolder": "次のワークスペース フォルダーはタスク バージョン 0.1.0 を使用しているため無視されます: {0}", "TaskService.notAgain": "今後は表示しない", + "TaskService.ignoredFolder": "次のワークスペース フォルダーはタスク バージョン 0.1.0 を使用しているため無視されます: {0}", "TaskService.pickRunTask": "実行するタスクを選択してください", "TaslService.noEntryToRun": "実行するタスクがありません。タスクを構成する...", "TaskService.fetchingBuildTasks": "ビルド タスクをフェッチしています...", diff --git a/i18n/jpn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/jpn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index f540ee615ca..c7a264707a6 100644 --- a/i18n/jpn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "警告: options.cwd は、string 型でなければなりません。値 {0} を無視します", + "ConfigurationParser.inValidArg": "エラー: コマンド引数は文字列もしくは引用文字列のどちらかである必要があります。指定された値:\n{0}", "ConfigurationParser.noargs": "エラー: コマンド引数は文字列の配列でなければなりません。指定された値:\n{0}", "ConfigurationParser.noShell": "警告: シェル構成がサポートされるのは、ターミナルでタスクを実行している場合のみです。", "ConfigurationParser.noName": "エラー: 宣言スコープ内の問題マッチャーに次の名前がなければなりません:\n{0}\n", @@ -17,7 +18,6 @@ "ConfigurationParser.missingRequiredProperty": "エラー: タスク構成 '{0}' に必要な '{1}' プロパティがありません。構成は無視されます。 ", "ConfigurationParser.notCustom": "エラー: タスクがカスタム タスクとして定義されていません。この構成は無視されます。\n{0}\n", "ConfigurationParser.noTaskName": "エラー: タスクが label プロパティを提供しなければなりません。このタスクは無視されます。\n{0}\n", - "taskConfiguration.shellArgs": "警告: タスク '{0}' はシェル コマンドであり、その引数の 1 つにエスケープされていないスペースが含まれている可能性があります。コマンド ラインの引用が正しく解釈されるように、引数をコマンドにマージしてください。", "taskConfiguration.noCommandOrDependsOn": "エラー: タスク '{0}' は、コマンドも dependsOn プロパティも指定していません。このタスクは無視されます。定義は次のとおりです:\n{1}", "taskConfiguration.noCommand": "エラー: タスク '{0}' はコマンドを定義していません。このタスクは無視されます。定義は次のとおりです:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "バージョン 2.0.0 のタスクでは、OS に固有のグローバル タスクはサポートされません。OS に固有のコマンドを使用したタスクに変換してください。影響を受けるタスクは次のとおりです。\n{0}" diff --git a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index de2f0795edc..332b26ef5fc 100644 --- a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,9 @@ "workbench.action.terminal.hideFindWidget": "検索ウィジェットを非表示にする", "nextTerminalFindTerm": "次の検索語句を表示", "previousTerminalFindTerm": "前の検索語句を表示", - "quickOpenTerm": "アクティブなターミナルの切り替え" + "quickOpenTerm": "アクティブなターミナルの切り替え", + "workbench.action.terminal.focusPreviousCommand": "前のコマンドにフォーカス", + "workbench.action.terminal.focusNextCommand": "次のコマンドにフォーカス", + "workbench.action.terminal.selectToPreviousCommand": "前のコマンドを選択", + "workbench.action.terminal.selectToNextCommand": "次のコマンドを選択" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index ea4ba1b2cc4..ae2af92bf59 100644 --- a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "コピー", + "split": "分割", "paste": "貼り付け", "selectAll": "すべて選択", - "clear": "クリア", - "split": "分割" + "clear": "クリア" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..8bfa1cc30f1 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "リリース ノート: {0}", + "unassigned": "未割り当て" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 07e679a1ed8..a45d01fca51 100644 --- a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "後で", - "unassigned": "未割り当て", "releaseNotes": "リリース ノート", "showReleaseNotes": "リリース ノートの表示", "read the release notes": "{0} v{1} へようこそ! リリース ノートを確認しますか?", diff --git a/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..01bd67d78ca --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "webview エディター" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/jpn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..635368f9425 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.optOutNotice": "Microsoft による利用状況のデータ収集を許可することで VS Code の改善に役立てることができます。私たちの [プライバシーに関する声明]({0}) 参照し、[オプト アウト]({1}) する方法を確認してください。", + "telemetryOptOut.optInNotice": "Microsoft による利用状況のデータ収集を許可することで VS Code の改善に役立てることができます。私たちの [プライバシーに関する声明]({0}) 参照し、[オプト イン]({1}) する方法を確認してください。", + "telemetryOptOut.readMore": "詳細を参照" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..3f0c29658fc --- /dev/null +++ b/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,21 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolderMultiRoot": "マルチ フォルダー ワークスペースで ${workspaceFolder} を解決できません。この変数を : とフォルダー名を使用して範囲指定してください。", + "canNotResolveWorkspaceFolder": "${workspaceFolder} を解決できません。フォルダーを開いてください。", + "canNotResolveFolderBasenameMultiRoot": "マルチ フォルダー ワークスペースで ${workspaceFolderBasename} を解決できません。この変数を : とフォルダー名を使用してスコープしてください。", + "canNotResolveFolderBasename": "${workspaceFolderBasename} を解決できません。フォルダーを開いてください。", + "canNotResolveLineNumber": "${lineNumber} を解決できません。エディターを開いてください。", + "canNotResolveSelectedText": "${selectedText} を解決できません。エディターを開いてください。", + "canNotResolveFile": "${file} を解決できません。エディターを開いてください。", + "canNotResolveRelativeFile": "${relativeFile} を解決できません。エディターを開いてください。", + "canNotResolveFileDirname": "${fileDirname} を解決できません。エディターを開いてください。", + "canNotResolveFileExtname": "${fileExtname} を解決できません。エディターを開いてください。", + "canNotResolveFileBasename": "${fileBasename} を解決できません。エディターを開いてください。", + "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} を解決できません。エディターを開いてください。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/jpn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..d51266c5310 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "はい(&&Y)", + "cancelButton": "キャンセル" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index bf9d744746a..840a5a93e43 100644 --- a/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,7 @@ "neverShowAgain": "今後は表示しない", "netVersionError": "Microsoft .NET Framework 4.5 が必要です。リンクに移動してインストールしてください。", "learnMore": "説明書", - "enospcError": "{0} はファイル ハンドルを使い果たしています。この問題を解決するには、リンクの手順に従ってください。", + "enospcError": "{0} はこの大規模なワークスペース内のファイル変更を監視できません。この問題を解決するには、リンクの手順に従ってください。", "binFailed": "'{0}' をごみ箱に移動できませんでした", "trashFailed": "'{0}' をごみ箱に移動できませんでした" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/jpn/src/vs/workbench/services/files/node/fileService.i18n.json index e27a42f7132..15dc46337bb 100644 --- a/i18n/jpn/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,7 @@ "fileInvalidPath": "ファイルのリソース ({0}) が無効です", "fileIsDirectoryError": "ファイルはディレクトリです", "fileNotModifiedError": "ファイルは次の時点以後に変更されていません:", - "fileTooLargeForHeapError": "ファイル サイズがウィンドウのメモリ制限を超えました。code --max-memory=NEWSIZE をお試しください", + "fileTooLargeForHeapError": "ファイル サイズが既定のメモリ制限を超えています。より大きい制限値で再起動してください。現在の設定では {0}MB で再起動するよう構成されています", "fileTooLargeError": "開くファイルが大きすぎます", "fileNotFoundError": "ファイルが見つかりません ({0})", "fileBinaryError": "ファイルはバイナリのようなので、テキストとして開くことができません", diff --git a/i18n/jpn/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/jpn/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..0814f6f9f96 100644 --- a/i18n/jpn/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "キャンセル" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 43184408e5b..e2962bb3983 100644 --- a/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "tmLanguage ファイルにより使用される TextMate スコープ名。", "vscode.extension.contributes.grammars.path": "tmLanguage ファイルのパス。拡張機能フォルダーの相対パスであり、通常 './syntaxes/' で始まります。", "vscode.extension.contributes.grammars.embeddedLanguages": "この文法に言語が埋め込まれている場合は、言語 ID に対するスコープ名のマップ。", + "vscode.extension.contributes.grammars.tokenTypes": "スコープ名のトークン タイプへの割当て。", "vscode.extension.contributes.grammars.injectTo": "この文法が挿入される言語の範囲名の一覧。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index dc2fe3903e3..26bc6832aeb 100644 --- a/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "`contributes.{0}.path` に文字列が必要です。提供された値: {1}", "invalid.injectTo": "`contributes.{0}.injectTo` の値が無効です。言語の範囲名の配列である必要があります。指定された値: {1}", "invalid.embeddedLanguages": "`contributes.{0}.embeddedLanguages` の値が無効です。スコープ名から言語へのオブジェクト マップである必要があります。指定された値: {1}", + "invalid.tokenTypes": "`contributes.{0}.tokenTypes` の値が無効です。オブジェクトはスコープ名からトークン タイプへ割り当てられている必要があります。指定された値: {1}", "invalid.path.1": "拡張機能のフォルダー ({2}) の中に `contributes.{0}.path` ({1}) が含まれている必要があります。これにより拡張を移植できなくなる可能性があります。", "no-tm-grammar": "この言語に対して TM 文法は登録されていません。" } \ No newline at end of file diff --git a/i18n/kor/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/kor/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..18013d8de41 --- /dev/null +++ b/i18n/kor/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS 언어 서버", + "folding.start": "영역 접기 시작", + "folding.end": "접기 영역 끝" +} \ No newline at end of file diff --git a/i18n/kor/extensions/css-language-features/package.i18n.json b/i18n/kor/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..43cc6cb4724 --- /dev/null +++ b/i18n/kor/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS 언어 기능", + "description": "CSS, LESS 및 SCSS 파일에 대한 다양한 언어 지원을 제공합니다.", + "css.title": "CSS", + "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", + "css.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", + "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.trace.server.desc": "VS Code와 CSS 언어 서버 간 통신을 추적합니다.", + "css.validate.title": "CSS 유효성 검사 및 문제 심각도를 제어합니다.", + "css.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", + "less.title": "LESS", + "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", + "less.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", + "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.title": "LESS 유효성 검사 및 문제 심각도를 제어합니다.", + "less.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", + "scss.title": "SCSS(Sass)", + "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", + "scss.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", + "scss.lint.propertyIgnoredDueToDisplay.desc": "display 때문에 속성이 무시됩니다. 예를 들어 'display: inline'을 사용할 경우 width, height, margin-top, margin-bottom 및 float 속성은 적용되지 않습니다.", + "scss.lint.universalSelector.desc": "범용 선택기 (*)는 느린 것으로 알려져 있습니다.", + "scss.lint.unknownProperties.desc": "알 수 없는 속성입니다.", + "scss.lint.unknownVendorSpecificProperties.desc": "알 수 없는 공급업체 관련 속성입니다.", + "scss.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다.", + "scss.lint.zeroUnits.desc": "0에는 단위가 필요하지 않습니다.", + "scss.validate.title": "SCSS 유효성 검사 및 문제 심각도를 제어합니다.", + "scss.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", + "less.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", + "scss.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", + "css.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", + "css.colorDecorators.enable.deprecationMessage": "`css.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", + "scss.colorDecorators.enable.deprecationMessage": "`scss.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", + "less.colorDecorators.enable.deprecationMessage": "`less.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다." +} \ No newline at end of file diff --git a/i18n/kor/extensions/css/package.i18n.json b/i18n/kor/extensions/css/package.i18n.json index 43cc6cb4724..35229bd6699 100644 --- a/i18n/kor/extensions/css/package.i18n.json +++ b/i18n/kor/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "CSS 언어 기능", - "description": "CSS, LESS 및 SCSS 파일에 대한 다양한 언어 지원을 제공합니다.", - "css.title": "CSS", - "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", - "css.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", - "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.trace.server.desc": "VS Code와 CSS 언어 서버 간 통신을 추적합니다.", - "css.validate.title": "CSS 유효성 검사 및 문제 심각도를 제어합니다.", - "css.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", - "less.title": "LESS", - "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", - "less.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", - "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.title": "LESS 유효성 검사 및 문제 심각도를 제어합니다.", - "less.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", - "scss.title": "SCSS(Sass)", - "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.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", - "scss.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", - "scss.lint.propertyIgnoredDueToDisplay.desc": "display 때문에 속성이 무시됩니다. 예를 들어 'display: inline'을 사용할 경우 width, height, margin-top, margin-bottom 및 float 속성은 적용되지 않습니다.", - "scss.lint.universalSelector.desc": "범용 선택기 (*)는 느린 것으로 알려져 있습니다.", - "scss.lint.unknownProperties.desc": "알 수 없는 속성입니다.", - "scss.lint.unknownVendorSpecificProperties.desc": "알 수 없는 공급업체 관련 속성입니다.", - "scss.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다.", - "scss.lint.zeroUnits.desc": "0에는 단위가 필요하지 않습니다.", - "scss.validate.title": "SCSS 유효성 검사 및 문제 심각도를 제어합니다.", - "scss.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", - "less.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", - "scss.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", - "css.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", - "css.colorDecorators.enable.deprecationMessage": "`css.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", - "scss.colorDecorators.enable.deprecationMessage": "`scss.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", - "less.colorDecorators.enable.deprecationMessage": "`less.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다." + ] } \ No newline at end of file diff --git a/i18n/kor/extensions/git/out/commands.i18n.json b/i18n/kor/extensions/git/out/commands.i18n.json index 69fccaefa9f..bc4b7753a32 100644 --- a/i18n/kor/extensions/git/out/commands.i18n.json +++ b/i18n/kor/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "확인", "push with tags success": "태그와 함께 푸시되었습니다.", "pick remote": "'{0}' 분기를 다음에 게시하려면 원격을 선택하세요.", - "sync is unpredictable": "이 작업은 '{0}' 간에 커밋을 푸시하고 풀합니다.", "never again": "다시 표시 안 함", "no remotes to publish": "리포지토리에 게시하도록 구성된 원격이 없습니다.", "no changes stash": "스태시할 변경 내용이 없습니다.", diff --git a/i18n/kor/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/kor/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..d112b7520ae --- /dev/null +++ b/i18n/kor/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML 언어 서버", + "folding.start": "영역 접기 시작", + "folding.end": "접기 영역 끝" +} \ No newline at end of file diff --git a/i18n/kor/extensions/html-language-features/package.i18n.json b/i18n/kor/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..064a37a9634 --- /dev/null +++ b/i18n/kor/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML 언어 기능", + "description": "HTML, Razor 및 Handlebar 파일에 대한 다양한 언어 지원을 제공합니다.", + "html.format.enable.desc": "기본 HTML 포맷터를 사용하거나 사용하지 않습니다.", + "html.format.wrapLineLength.desc": "한 줄당 최대 문자 수입니다(0 = 사용 안 함).", + "html.format.unformatted.desc": "쉼표로 분리된 태그 목록으로, 서식을 다시 지정해서는 안 됩니다. https://www.w3.org/TR/html5/dom.html#phrasing-content에 나열된 모든 태그의 기본값은 'null'로 설정됩니다.", + "html.format.contentUnformatted.desc": "쉼표로 분리된 태그 목록으로, 콘텐츠의 서식을 다시 지정해서는 안 됩니다. 'pre' 태그의 기본값은 'null'로 설정됩니다.", + "html.format.indentInnerHtml.desc": " 및 섹션을 들여쓰기합니다.", + "html.format.preserveNewLines.desc": "요소 앞에 있는 기존 줄 바꿈의 유지 여부입니다. 요소 앞에만 적용되며 태그 안이나 텍스트에는 적용되지 않습니다.", + "html.format.maxPreserveNewLines.desc": "청크 한 개에 유지할 수 있는 최대 줄 바꿈 수입니다. 무제한일 때는 'null'을 사용합니다.", + "html.format.indentHandlebars.desc": "{{#foo}} 및 {{/foo}}를 서식 지정하고 들여쓰기합니다.", + "html.format.endWithNewline.desc": "줄 바꿈으로 끝납니다.", + "html.format.extraLiners.desc": "쉼표로 분리된 태그 목록으로 앞에 줄 바꿈을 추가로 넣어야 합니다. \"head, body, /html\"의 기본값은 'null'로 설정됩니다.", + "html.format.wrapAttributes.desc": "특성을 래핑합니다.", + "html.format.wrapAttributes.auto": "줄 길이를 초과하는 경우에만 특성을 래핑합니다.", + "html.format.wrapAttributes.force": "첫 번째 특성을 제외한 각 특성을 래핑합니다.", + "html.format.wrapAttributes.forcealign": "첫 번째 특성을 제외한 각 특성을 래핑하고 정렬된 상태를 유지합니다.", + "html.format.wrapAttributes.forcemultiline": "각 특성을 래핑합니다.", + "html.suggest.angular1.desc": "기본 제공 HTML 언어 지원에서 Angular V1 태그 및 속성을 제안하는지 여부를 구성합니다.", + "html.suggest.ionic.desc": "기본 제공 HTML 언어 지원에서 Ionic 태그, 속성 및 값을 제안하는지 여부를 구성합니다.", + "html.suggest.html5.desc": "기본 제공 HTML 언어 지원에서 HTML5 태그, 속성 및 값을 제안하는지 여부를 구성합니다.", + "html.trace.server.desc": "VS Code와 HTML 언어 서버 간 통신을 추적합니다.", + "html.validate.scripts": "기본 제공 HTML 언어 지원에서 포함 스크립트의 유효성을 검사하는지 여부를 구성합니다.", + "html.validate.styles": "기본 제공 HTML 언어 지원에서 포함 스타일의 유효성을 검사하는지 여부를 구성합니다.", + "html.autoClosingTags": "HTML 태그의 자동 닫기를 사용하거나 사용하지 않습니다." +} \ 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 a71b4df8880..35229bd6699 100644 --- a/i18n/kor/extensions/html/package.i18n.json +++ b/i18n/kor/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "HTML 언어 기능", - "description": "HTML, Razor 및 Handlebar 파일에 대한 다양한 언어 지원을 제공합니다.", - "html.format.enable.desc": "기본 HTML 포맷터를 사용하거나 사용하지 않습니다.", - "html.format.wrapLineLength.desc": "한 줄당 최대 문자 수입니다(0 = 사용 안 함).", - "html.format.unformatted.desc": "쉼표로 분리된 태그 목록으로, 서식을 다시 지정해서는 안 됩니다. https://www.w3.org/TR/html5/dom.html#phrasing-content에 나열된 모든 태그의 기본값은 'null'로 설정됩니다.", - "html.format.contentUnformatted.desc": "쉼표로 분리된 태그 목록으로, 콘텐츠의 서식을 다시 지정해서는 안 됩니다. 'pre' 태그의 기본값은 'null'로 설정됩니다.", - "html.format.indentInnerHtml.desc": " 및 섹션을 들여쓰기합니다.", - "html.format.preserveNewLines.desc": "요소 앞에 있는 기존 줄 바꿈의 유지 여부입니다. 요소 앞에만 적용되며 태그 안이나 텍스트에는 적용되지 않습니다.", - "html.format.maxPreserveNewLines.desc": "청크 한 개에 유지할 수 있는 최대 줄 바꿈 수입니다. 무제한일 때는 'null'을 사용합니다.", - "html.format.indentHandlebars.desc": "{{#foo}} 및 {{/foo}}를 서식 지정하고 들여쓰기합니다.", - "html.format.endWithNewline.desc": "줄 바꿈으로 끝납니다.", - "html.format.extraLiners.desc": "쉼표로 분리된 태그 목록으로 앞에 줄 바꿈을 추가로 넣어야 합니다. \"head, body, /html\"의 기본값은 'null'로 설정됩니다.", - "html.format.wrapAttributes.desc": "특성을 래핑합니다.", - "html.format.wrapAttributes.auto": "줄 길이를 초과하는 경우에만 특성을 래핑합니다.", - "html.format.wrapAttributes.force": "첫 번째 특성을 제외한 각 특성을 래핑합니다.", - "html.format.wrapAttributes.forcealign": "첫 번째 특성을 제외한 각 특성을 래핑하고 정렬된 상태를 유지합니다.", - "html.format.wrapAttributes.forcemultiline": "각 특성을 래핑합니다.", - "html.suggest.angular1.desc": "기본 제공 HTML 언어 지원에서 Angular V1 태그 및 속성을 제안하는지 여부를 구성합니다.", - "html.suggest.ionic.desc": "기본 제공 HTML 언어 지원에서 Ionic 태그, 속성 및 값을 제안하는지 여부를 구성합니다.", - "html.suggest.html5.desc": "기본 제공 HTML 언어 지원에서 HTML5 태그, 속성 및 값을 제안하는지 여부를 구성합니다.", - "html.trace.server.desc": "VS Code와 HTML 언어 서버 간 통신을 추적합니다.", - "html.validate.scripts": "기본 제공 HTML 언어 지원에서 포함 스크립트의 유효성을 검사하는지 여부를 구성합니다.", - "html.validate.styles": "기본 제공 HTML 언어 지원에서 포함 스타일의 유효성을 검사하는지 여부를 구성합니다.", - "html.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다.", - "html.autoClosingTags": "HTML 태그의 자동 닫기를 사용하거나 사용하지 않습니다." + ] } \ No newline at end of file diff --git a/i18n/kor/extensions/jake/package.i18n.json b/i18n/kor/extensions/jake/package.i18n.json index 2dcfc03464b..f83be6fbb64 100644 --- a/i18n/kor/extensions/jake/package.i18n.json +++ b/i18n/kor/extensions/jake/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "VSCode에 Jake 기능을 추가할 확장입니다.", "displayName": "VSCode에 대한 Jake 지원", "jake.taskDefinition.type.description": "사용자 지정할 Jake 작업입니다.", "jake.taskDefinition.file.description": "작업을 제공하는 Jake 파일이며 생략할 수 있습니다.", diff --git a/i18n/kor/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/kor/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..115ea612718 --- /dev/null +++ b/i18n/kor/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON 언어 서버" +} \ No newline at end of file diff --git a/i18n/kor/extensions/json-language-features/package.i18n.json b/i18n/kor/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..1f6c4dd2f4a --- /dev/null +++ b/i18n/kor/extensions/json-language-features/package.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "description": "JSON 파일에 대한 다양한 언어 지원을 제공합니다.", + "json.schemas.desc": "현재 프로젝트에서 스키마를 JSON 파일에 연결", + "json.schemas.url.desc": "현재 디렉터리에 있는 스키마의 URL 또는 상대 경로", + "json.schemas.fileMatch.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 파일 패턴의 배열입니다.", + "json.schemas.fileMatch.item.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 '*'를 포함할 수 있는 파일 패턴입니다.", + "json.schemas.schema.desc": "지정된 URL에 대한 스키마 정의입니다. 스키마 URL에 대한 액세스 방지를 위해서만 스키마를 제공해야 합니다.", + "json.format.enable.desc": "기본 JSON 포맷터 사용/사용 안 함(다시 시작해야 함)", + "json.tracing.desc": "VS Code와 JSON 언어 서버 간 통신을 추적합니다.", + "json.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", + "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다." +} \ 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 3adf4f967d1..35229bd6699 100644 --- a/i18n/kor/extensions/json/package.i18n.json +++ b/i18n/kor/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "JSON 언어 기능", - "description": "JSON 파일에 대한 다양한 언어 지원을 제공합니다.", - "json.schemas.desc": "현재 프로젝트에서 스키마를 JSON 파일에 연결", - "json.schemas.url.desc": "현재 디렉터리에 있는 스키마의 URL 또는 상대 경로", - "json.schemas.fileMatch.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 파일 패턴의 배열입니다.", - "json.schemas.fileMatch.item.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 '*'를 포함할 수 있는 파일 패턴입니다.", - "json.schemas.schema.desc": "지정된 URL에 대한 스키마 정의입니다. 스키마 URL에 대한 액세스 방지를 위해서만 스키마를 제공해야 합니다.", - "json.format.enable.desc": "기본 JSON 포맷터 사용/사용 안 함(다시 시작해야 함)", - "json.tracing.desc": "VS Code와 JSON 언어 서버 간 통신을 추적합니다.", - "json.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", - "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", - "json.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다." + ] } \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/kor/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..84643755d0a --- /dev/null +++ b/i18n/kor/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "'markdown.styles': {0}을 불러올 수 없음" +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..1c1e1aed9de --- /dev/null +++ b/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "previewTitle": "미리 보기 {0}" +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/kor/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..01370fa604b --- /dev/null +++ b/i18n/kor/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "이 문서에서 일부 콘텐츠가 사용하지 않도록 설정되었습니다.", + "preview.securityMessage.title": "Markdown 미리 보기에서 잠재적으로 안전하지 않거나 보안되지 않은 콘텐츠가 사용하지 않도록 설정되어 있습니다. 이 콘텐츠나 스크립트를 허용하려면 Markdown 미리 보기 보안 설정을 변경하세요.", + "preview.securityMessage.label": "콘텐츠 사용할 수 없음 보안 경고" +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/out/security.i18n.json b/i18n/kor/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..b7fd641e493 --- /dev/null +++ b/i18n/kor/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Strict", + "strict.description": "보안 콘텐츠만 로드", + "insecureContent.title": "안전하지 않은 콘텐츠 허용", + "insecureContent.description": "http를 통한 콘텐츠 로드 사용", + "disable.title": "사용 안 함", + "disable.description": "모든 콘텐츠 및 스크립트 실행을 허용합니다. 권장하지 않습니다.", + "moreInfo.title": "추가 정보", + "enableSecurityWarning.title": "이 작업 영역에서 미리 보기 보안 경고 사용", + "disableSecurityWarning.title": "이 작업 영역에서 미리보기 보안 경고 사용 안 함", + "toggleSecurityWarning.description": "콘텐츠 보안 수준에 영향을 주지 않습니다.", + "preview.showPreviewSecuritySelector.title": "이 작업 영역에 대해 Markdown 미리 보기의 보안 설정 선택" +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/package.i18n.json b/i18n/kor/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..ae5e530af4c --- /dev/null +++ b/i18n/kor/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,30 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "description": "Markdown에 대한 다양한 언어 지원을 제공합니다.", + "markdown.preview.breaks.desc": "마크다운 미리 보기에서 줄바꿈 렌더링 방식을 설정합니다. 'true'로 설정하면 모든 행에 대해
이(가) 생성됩니다.", + "markdown.preview.linkify": "Markdown 미리 보기에서 URL 같은 텍스트를 링크로 변환을 사용하거나 사용하지 않도록 설정합니다.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "markdown 미리 보기에서 두 번 클릭하여 편집기로 전환합니다.", + "markdown.preview.fontFamily.desc": "markdown 미리 보기에서 사용되는 글꼴 패밀리를 제어합니다.", + "markdown.preview.fontSize.desc": "markdown 미리 보기에서 사용되는 글꼴 크기(픽셀)를 제어합니다.", + "markdown.preview.lineHeight.desc": "markdown 미리 보기에 사용되는 줄 높이를 제어합니다. 이 숫자는 글꼴 크기에 상대적입니다.", + "markdown.preview.markEditorSelection.desc": "markdown 미리 보기에 현재 편집기 선택을 표시합니다.", + "markdown.preview.scrollEditorWithPreview.desc": "Markdown 미리 보기를 스크롤할 때 편집기의 보기를 업데이트합니다.", + "markdown.preview.scrollPreviewWithEditor.desc": "Markdown 편집기를 스크롤할 때 미리 보기의 보기를 업데이트합니다.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[사용되지 않음] markdown 미리 보기를 스크롤하여 편집기에서 현재 선택한 줄을 표시합니다.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "이 설정은 'markdown.preview.scrollPreviewWithEditor'로 대체되었으며 더 이상 영향을 주지 않습니다.", + "markdown.preview.title": "미리 보기 열기", + "markdown.previewFrontMatter.dec": "markdown 미리 보기에서 YAML 전문을 렌더링할 방법을 설정합니다. '숨기기' 기능을 사용하면 전문이 제거되고, 그러지 않으면 전문이 markdown 콘텐츠로 처리됩니다.", + "markdown.previewSide.title": "측면에서 미리 보기 열기", + "markdown.showLockedPreviewToSide.title": "측면에서 잠긴 미리 보기 열기", + "markdown.showSource.title": "소스 표시", + "markdown.styles.dec": "markdown 미리 보기에서 사용할 CSS 스타일시트의 URL 또는 로컬 경로 목록입니다. 상대 경로는 탐색기에서 열린 폴더를 기준으로 해석됩니다. 열린 폴더가 없으면 markdown 파일의 위치를 기준으로 해석됩니다. 모든 '\\'는 '\\\\'로 써야 합니다.", + "markdown.showPreviewSecuritySelector.title": "미리 보기 보안 설정 변경", + "markdown.trace.desc": "Markdown 확장에 대해 디버그 로깅을 사용하도록 설정합니다.", + "markdown.preview.toggleLock.title": "미리 보기 잠금 설정/해제" +} \ No newline at end of file diff --git a/i18n/kor/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/kor/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..e88d0e75520 --- /dev/null +++ b/i18n/kor/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "PHP 파일을 lint하기 위해 {0}(작업 영역 설정으로 정의됨)의 실행을 허용하시겠습니까?", + "php.yes": "허용", + "php.no": "허용 안 함", + "wrongExecutable": "{0}은(는) 유효한 PHP 실행 파일이 아니기 때문에 유효성을 검사할 수 없습니다. 'php.validate.executablePath' 설정을 사용하여 PHP 실행 파일을 구성하세요.", + "noExecutable": "PHP 실행 파일이 설정되지 않았기 때문에 유효성을 검사할 수 없습니다. 'php.validate.executablePath' 설정을 사용하여 PHP 실행 파일을 구성하세요.", + "unknownReason": "{0} 경로를 사용하여 php를 실행하지 못했습니다. 이유를 알 수 없습니다." +} \ No newline at end of file diff --git a/i18n/kor/extensions/php-language-features/package.i18n.json b/i18n/kor/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..462c5348bcc --- /dev/null +++ b/i18n/kor/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "기본 제공 PHP 언어 제안을 사용하는지 여부를 구성합니다. 지원에서는 PHP 전역 및 변수를 제안합니다.", + "configuration.validate.enable": "기본 제공 PHP 유효성 검사를 사용하거나 사용하지 않습니다.", + "configuration.validate.executablePath": "PHP 실행 파일을 가리킵니다.", + "configuration.validate.run": "저장 시 또는 입력 시 Linter의 실행 여부입니다.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "PHP 유효성 검사 실행 파일을 허용하지 않음(작업\n 영역 설정으로 정의됨)", + "displayName": "PHP 언어 기능", + "description": "PHP 파일에 대한 다양한 언어 지원을 제공합니다. " +} \ No newline at end of file diff --git a/i18n/kor/extensions/php/package.i18n.json b/i18n/kor/extensions/php/package.i18n.json index c12a9f13cf2..a55af556ea0 100644 --- a/i18n/kor/extensions/php/package.i18n.json +++ b/i18n/kor/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "기본 제공 PHP 언어 제안을 사용하는지 여부를 구성합니다. 지원에서는 PHP 전역 및 변수를 제안합니다.", - "configuration.validate.enable": "기본 제공 PHP 유효성 검사를 사용하거나 사용하지 않습니다.", - "configuration.validate.executablePath": "PHP 실행 파일을 가리킵니다.", - "configuration.validate.run": "저장 시 또는 입력 시 Linter의 실행 여부입니다.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP 유효성 검사 실행 파일을 허용하지 않음(작업\n 영역 설정으로 정의됨)", - "displayName": "PHP 언어 기능", - "description": "PHP 파일에 대해 IntelliSense, lint 및 언어 기본을 제공합니다." + "displayName": "PHP 언어 기능" } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index f09203d420b..9bcb11a8721 100644 --- a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "결과 없음", "settingsSearchIssue": "설정 검색 문제", "bugReporter": "버그 보고서", - "performanceIssue": "성능 문제", "featureRequest": "기능 요청", + "performanceIssue": "성능 문제", "stepsToReproduce": "재현 단계", "bugDescription": "문제를 안정적으로 재현시킬 수 있는 방법을 공유해주세요. 실제 결과와 예상 결과를 포함하세요. GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", "performanceIssueDesciption": "이 성능 문제가 언제 발생합니까? 시작할 때 발생합니까? 특정 작업을 진행한 이후에 발생합니까? GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", diff --git a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json index 37b49551575..b02180c6602 100644 --- a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "편집기 내 경고 표시선의 테두리 색입니다.", "infoForeground": "편집기 내 정보 표시선의 전경색입니다.", "infoBorder": "편집기 내 정보 표시선의 테두리 색입니다.", - "overviewRulerRangeHighlight": "범위 강조 표시의 개요 눈금자 마커 색입니다.", "overviewRuleError": "오류의 개요 눈금자 마커 색입니다.", "overviewRuleWarning": "경고의 개요 눈금자 마커 색입니다.", "overviewRuleInfo": "정보의 개요 눈금자 마커 색입니다." diff --git a/i18n/kor/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/kor/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 96b96049dd7..bdb84052201 100644 --- a/i18n/kor/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/kor/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "다음 문제로 이동 (오류, 경고, 정보)", - "markerAction.previous.label": "이전 문제로 이동 (오류, 경고, 정보)", - "editorMarkerNavigationError": "편집기 표식 탐색 위젯 오류 색입니다.", - "editorMarkerNavigationWarning": "편집기 표식 탐색 위젯 경고 색입니다.", - "editorMarkerNavigationInfo": "편집기 표식 탐색 위젯 정보 색입니다.", - "editorMarkerNavigationBackground": "편집기 표식 탐색 위젯 배경입니다." + "markerAction.previous.label": "이전 문제로 이동 (오류, 경고, 정보)" } \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/kor/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..ff17e99717f --- /dev/null +++ b/i18n/kor/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "편집기 표식 탐색 위젯 오류 색입니다.", + "editorMarkerNavigationWarning": "편집기 표식 탐색 위젯 경고 색입니다.", + "editorMarkerNavigationInfo": "편집기 표식 탐색 위젯 정보 색입니다.", + "editorMarkerNavigationBackground": "편집기 표식 탐색 위젯 배경입니다." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 509c0378067..296e9aa25b5 100644 --- a/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "변수에 쓰기와 같은 쓰기 액세스 중 기호의 배경색입니다. 색상은 밑에 깔린 꾸밈을 가리지 않도록 반드시 불투명이 아니어야 합니다.", "wordHighlightBorder": "변수 읽기와 같은 읽기 액세스 중 기호의 테두리 색입니다.", "wordHighlightStrongBorder": "변수에 쓰기와 같은 쓰기 액세스 중 기호의 테두리 색입니다.", - "overviewRulerWordHighlightForeground": "기호 강조 표시의 개요 눈금자 마커 색입니다.", - "overviewRulerWordHighlightStrongForeground": "쓰기 권한 기호 강조 표시의 개요 눈금자 마커 색입니다.", "wordHighlight.next.label": "다음 강조 기호로 이동", "wordHighlight.previous.label": "이전 강조 기호로 이동" } \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/kor/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..e770ddd1642 --- /dev/null +++ b/i18n/kor/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1개의 추가 파일이 표시되지 않음", + "moreFiles": "...{0}개의 추가 파일이 표시되지 않음" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/kor/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..a32e01e761e --- /dev/null +++ b/i18n/kor/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "취소" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 76ee8e87f46..deafbdf4de7 100644 --- a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,12 @@ "errorInstallingDependencies": "의존성 설치 중 오류가 발생했습니다. {0}", "MarketPlaceDisabled": "Marketplace를 사용할 수 없습니다.", "removeError": "확장을 제거하는 동안 오류가 발생했습니다. {0}. 다시 시도하기 전에 VS Code를 종료하고 다시 시작하세요.", - "Not Market place extension": "마켓플레이스 확장만 다시 설치할 수 있습니다.", "notFoundCompatible": "'{0}'을(를) 설치할 수 없습니다; VS Code '{1}'과 호환되는 버전이 없습니다.", "malicious extension": "문제가 있다고 보고되었으므로 확장을 설치할 수 없습니다.", "notFoundCompatibleDependency": "VS Code의 현재 버전 '{1}'과(와) 호환되는 종속된 확장 '{0}'을(를) 찾을 수 없으므로 설치할 수 없습니다.", "quitCode": "확장을 설치할 수 없습니다. 다시 설치하기 위해 VS Code를 종료하고 다시 시작하십시오.", "exitCode": "확장을 설치할 수 없습니다. 다시 설치하기 전에 VS 코드를 종료한 후 다시 시작하십시오. ", "uninstallDependeciesConfirmation": "'{0}'만 제거할까요, 아니면 종속성도 제거할까요?", - "uninstallOnly": "만", - "uninstallAll": "모두", "uninstallConfirmation": "'{0}'을(를) 제거할까요?", "ok": "확인", "singleDependentError": "확장 '{0}'을(를) 제거할 수 없습니다. 확장 '{1}'이(가) 이 확장에 종속됩니다.", diff --git a/i18n/kor/src/vs/platform/markers/common/markers.i18n.json b/i18n/kor/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..d0a8772dd00 --- /dev/null +++ b/i18n/kor/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "오류", + "sev.warning": "경고", + "sev.info": "정보" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json index fb0ab90f546..0a927c21be7 100644 --- a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "인라인 병합 충돌에서 헤더 및 스플리터의 테두리 색입니다.", "overviewRulerCurrentContentForeground": "인라인 병합 충돌에서 현재 개요 눈금 전경색입니다.", "overviewRulerIncomingContentForeground": "인라인 병합 충돌에서 수신 개요 눈금 전경색입니다.", - "overviewRulerCommonContentForeground": "인라인 병합 충돌에서 공통 과거 개요 눈금 전경색입니다.", - "overviewRulerFindMatchForeground": "찾기 일치 항목의 개요 눈금자 마커 색입니다.", - "overviewRulerSelectionHighlightForeground": "선택 영역 강조 표시의 개요 눈금자 마커 색입니다." + "overviewRulerCommonContentForeground": "인라인 병합 충돌에서 공통 과거 개요 눈금 전경색입니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 52020df2eb3..c3a38e203dc 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "다음 그룹에 포커스", "openToSide": "측면에서 열기", "closeEditor": "편집기 닫기", + "closeOneEditor": "닫기", "revertAndCloseActiveEditor": "편집기 되돌리기 및 닫기", "closeEditorsToTheLeft": "왼쪽에 있는 편집기 닫기", "closeAllEditors": "모든 편집기 닫기", diff --git a/i18n/kor/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index e8aa35ae8a0..2acca1606b7 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "닫기", "araLabelEditorActions": "편집기 작업" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json index 451b959a9ea..30e974a33fc 100644 --- a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "창", "window.openFilesInNewWindow.on": "파일이 새 창에서 열립니다.", "window.openFilesInNewWindow.off": "파일이 파일의 폴더가 열려 있는 창 또는 마지막 활성 창에서 열립니다.", - "window.openFilesInNewWindow.default": "Dock 또는 Finder(macOS 전용)를 통해 파일을 연 경우를 제외하고 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.", - "openFilesInNewWindow": "파일을 새 창에서 열지 여부를 제어합니다.\n- default: Dock 또는 Finder(macOS 전용)를 통해 파일을 연 경우를 제외하고, 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.\n- on: 파일이 새 창에서 열립니다.\n- off: 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.\n이 설정이 무시되는 경우도 있을 수 있습니다(예: -new-window 또는 -reuse-window 명령줄 옵션을 사용할 경우).", "window.openFoldersInNewWindow.on": "폴더가 새 창에서 열립니다.", "window.openFoldersInNewWindow.off": "폴더가 마지막 활성 창을 바꿉니다.", "window.openFoldersInNewWindow.default": "폴더를 응용 프로그램 내에서 선택(예: 파일 메뉴를 통해)하는 경우를 제외하고 폴더가 새 창에서 열립니다.", @@ -58,7 +56,6 @@ "restoreWindows": "다시 시작한 이후에 창을 다시 여는 방법을 설정합니다. 'none'을 선택하면 항상 빈 작업 영역으로 시작하고 'one'을 선택하면 마지막으로 작업한 창이 다시 열리고 'folders'를 선택하면 열었던 폴더가 포함된 모든 창이 다시 열리며 'all'을 선택하면 지난 세션의 모든 창이 다시 열립니다.", "restoreFullscreen": "창이 전체 화면 모드에서 종료된 경우 창을 전체 화면 모드로 복원할지 여부를 제어합니다.", "zoomLevel": "창의 확대/축소 수준을 조정합니다. 원래 크기는 0이고 각 상한 증분(예: 1) 또는 하한 증분(예: -1)은 20% 더 크거나 더 작게 확대/축소하는 것을 나타냅니다. 10진수를 입력하여 확대/축소 수준을 세부적으로 조정할 수도 있습니다.", - "title": "활성 편집기를 기반으로 창 제목을 제어합니다. 변수는 컨텍스트를 기반으로 대체됩니다.\n${activeEditorShort}: 파일 이름(예: myFile.txt)\n${activeEditorMedium}: 작업 영역 폴더에 상대적인 파일 경로(예: myFolder/myFile.txt)\n${activeEditorLong}: 파일 전체 경로(예: /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 파일이 포함된 작업 영역 폴더 이름(예: myFolder)\n${folderPath}: 파일이 포함된 작업 영역 폴더의 파일 경로(예: /Users/Development/myFolder)\n${rootName}: 작업 영역 이름(예: myFolder 또는 myWorkspace)\n${rootPath}: 작업 영역 파일 경로(예: /Users/Development/myWorkspace)\n${appName}: 예: VS Code\n${dirty}: 활성 편집기가 더티인 경우 더티 표시기\n${separator}: 값이 있는 변수로 둘러싸인 경우에만 표시되는 조건부 구분 기호(\" - \")", "window.newWindowDimensions.default": "화면 가운데에서 새 창을 엽니다.", "window.newWindowDimensions.inherit": "마지막 활성 창과 동일한 크기로 새 창을 엽니다.", "window.newWindowDimensions.maximized": "최대화된 새 창을 엽니다.", 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 c355ed115b9..28e7371a153 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 @@ -24,16 +24,12 @@ "restartFrame": "프레임 다시 시작", "removeBreakpoint": "중단점 제거", "removeAllBreakpoints": "모든 중단점 제거", - "enableBreakpoint": "중단점 사용", - "disableBreakpoint": "중단점 사용 안 함", "enableAllBreakpoints": "모든 중단점 설정", "disableAllBreakpoints": "모든 중단점 해제", "activateBreakpoints": "중단점 활성화", "deactivateBreakpoints": "중단점 비활성화", "reapplyAllBreakpoints": "모든 중단점 다시 적용", "addFunctionBreakpoint": "함수 중단점 추가", - "addConditionalBreakpoint": "조건부 중단점 추가...", - "editConditionalBreakpoint": "중단점 편집...", "setValue": "값 설정", "addWatchExpression": "식 추가", "editWatchExpression": "식 편집", diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..484e21f6e54 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "적중 횟수 조건이 충족될 경우 중단합니다. 적용하려면 'Enter' 키를 누르고 취소하려면 'Esc' 키를 누릅니다.", + "breakpointWidgetExpressionPlaceholder": "식이 true로 계산될 경우 중단합니다. 적용하려면 'Enter' 키를 누르고 취소하려면 'Esc' 키를 누릅니다.", + "breakpointWidgetHitCountAriaLabel": "적중 횟수가 충족되는 경우에만 프로그램이 여기서 중지됩니다. 수락하려면 키를 누르고, 취소하려면 키를 누르세요.", + "breakpointWidgetAriaLabel": "이 조건이 true인 경우에만 프로그램이 여기서 중지됩니다. 수락하려면 키를 누르고, 취소하려면 키를 누르세요.", + "expression": "식", + "hitCount": "적중 횟수" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 31114fa760b..07989327ee8 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "중단점 편집...", + "disableBreakpoint": "중단점 사용 안 함", + "enableBreakpoint": "중단점 사용", "removeBreakpoints": "중단점 제거", "removeBreakpointOnColumn": "{0} 열에서 중단점 제거", "removeLineBreakpoint": "줄 중단점 제거", @@ -18,5 +21,6 @@ "enableBreakpoints": "{0} 열에서 중단점 사용", "enableBreakpointOnLine": "줄 중단점 사용", "addBreakpoint": "중단점 추가", + "conditionalBreakpoint": "조건부 중단점 추가...", "addConfiguration": "구성 추가..." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 53bf2dac9a8..3b9db932452 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,7 +28,5 @@ "preLaunchTaskExitCode": "preLaunchTask '{0}'이(가) {1} 종료 코드와 함께 종료되었습니다.", "showErrors": "오류 표시", "noFolderWorkspaceDebugError": "활성 파일은 디버그할 수 없습니다. 이 파일이 디스크에 저장되어 있고 해당 파일 형식에 대한 디버그 확장이 설치되어 있는지 확인하세요.", - "cancel": "취소", - "DebugTaskNotFound": "preLaunchTask '{0}'을(를) 찾을 수 없습니다.", - "taskNotTracked": "PreLaunchTask '{0}'을(를) 추적할 수 없습니다." + "cancel": "취소" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..73fe67dbadf --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,57 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "확장 이름", + "extension id": "확장 ID", + "builtin": "기본 제공", + "publisher": "게시자 이름", + "install count": "설치 수", + "rating": "등급", + "repository": "리포지토리", + "license": "라이선스", + "details": "세부 정보", + "contributions": "기여", + "changelog": "변경 로그", + "dependencies": "종속성", + "noReadme": "사용 가능한 추가 정보가 없습니다.", + "noChangelog": "CHANGELOG를 사용할 수 없습니다.", + "noContributions": "참여 없음", + "noDependencies": "종속성 없음", + "settings": "설정({0})", + "setting name": "이름", + "description": "설명", + "default": "기본값", + "debuggers": "디버거({0})", + "debugger name": "이름", + "debugger type": "유형", + "views": "뷰({0})", + "view id": "ID", + "view name": "이름", + "view location": "위치", + "localizations": "지역화({0})", + "localizations language id": "언어 ID", + "localizations localized language name": "언어 이름(지역화됨)", + "colorThemes": "색 테마({0})", + "iconThemes": "아이콘 테마({0})", + "colors": "색({0})", + "colorId": "ID", + "defaultDark": "어둡게 기본값", + "defaultLight": "밝게 기본값", + "defaultHC": "고대비 기본값", + "JSON Validation": "JSON 유효성 검사({0})", + "commands": "명령({0})", + "command name": "이름", + "keyboard shortcuts": "바로 가기 키(&&K)", + "menuContexts": "메뉴 컨텍스트", + "languages": "언어({0})", + "language id": "ID", + "language name": "이름", + "file extensions": "파일 확장명", + "grammar": "문법", + "snippets": "코드 조각" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index c764c2061a4..d88f38093be 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "권장", "otherRecommendedExtensions": "기타 권장 사항", "workspaceRecommendedExtensions": "작업 영역 권장 사항", - "builtInExtensions": "기본 제공", "searchExtensions": "마켓플레이스에서 확장 검색", "sort by installs": "정렬 기준: 설치 수", "sort by rating": "정렬 기준: 등급", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 3c5dd9bb459..42e37cef1b1 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,13 @@ "confirmMoveTrashMessageMultiple": "다음 {0}개 파일을 삭제하시겠습니까?", "confirmMoveTrashMessageFolder": "'{0}'과(와) 해당 내용을 삭제할까요?", "confirmMoveTrashMessageFile": "'{0}'을(를) 삭제할까요?", - "undoBin": "휴지통에서 복원할 수 있습니다.", - "undoTrash": "휴지통에서 복원할 수 있습니다.", "doNotAskAgain": "이 메시지를 다시 표시 안 함", "confirmDeleteMessageMultiple": "다음 {0}개 파일을 영구히 삭제하시겠습니까?", "confirmDeleteMessageFolder": "'{0}'과(와) 해당 내용을 영구히 삭제할까요?", "confirmDeleteMessageFile": "'{0}'을(를) 영구히 삭제할까요?", "irreversible": "이 작업은 취소할 수 없습니다.", - "cancel": "취소", - "permDelete": "영구히 삭제", + "deletePermanentlyButtonLabel": "영구 삭제 (&&D)", + "retryButtonLabel": "다시 시도 (&&R)", "importFiles": "파일 가져오기", "confirmOverwrite": "이름이 같은 파일 또는 폴더가 대상 폴더에 이미 있습니다. 덮어쓸까요?", "replaceButtonLabel": "바꾸기(&&R)", diff --git a/i18n/kor/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..72937e2691d --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Html 미리 보기" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/kor/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..a9bf2716767 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "잘못된 편집기 입력입니다." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..73fa26c6394 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "개발자" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/kor/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..3a107e5fb3a --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview 개발자 도구 열기", + "refreshWebviewLabel": "Webview 다시 로드" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 4e28a5c3f06..d95a0ea15d2 100644 --- a/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "예", + "no": "아니요", + "doNotAskAgain": "이 메시지를 다시 표시 안 함", "JsonSchema.locale": "사용할 UI 언어입니다.", "vscode.extension.contributes.localizations": "편집기에 지역화를 적용합니다.", "vscode.extension.contributes.localizations.languageId": "표시 문자열이 번역되는 언어의 ID입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..6422e6f88c1 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "복사" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..5ea2aa6a147 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "총 {0}개 문제", + "filteredProblems": "{1}개 중 {0}개 문제 표시" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..2103b0440bb --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "문제", + "tooltip.1": "이 파일의 문제 1개", + "tooltip.N": "이 파일의 문제 {0}개", + "markers.showOnFile": "파일과 폴더의 오류 및 경고 표시" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..a28f9554902 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "보기", + "problems.view.toggle.label": "문제 토글(오류, 경고, 정보)", + "problems.view.focus.label": "포커스 문제(오류, 경고, 정보)", + "problems.panel.configuration.title": "문제 보기", + "problems.panel.configuration.autoreveal": "문제 보기를 열 때 문제 보기에 자동으로 파일이 표시되어야 하는지를 제어합니다.", + "markers.panel.title.problems": "문제", + "markers.panel.aria.label.problems.tree": "파일별로 그룹화된 문제", + "markers.panel.no.problems.build": "지금까지 작업 영역에서 문제가 감지되지 않았습니다.", + "markers.panel.no.problems.filters": "제공된 필터 기준으로 결과를 찾을 수 없습니다.", + "markers.panel.action.filter": "문제 필터링", + "markers.panel.filter.placeholder": "형식 또는 텍스트로 필터링", + "markers.panel.filter.errors": "오류", + "markers.panel.filter.warnings": "경고", + "markers.panel.filter.infos": "정보", + "markers.panel.single.error.label": "오류 1개", + "markers.panel.multiple.errors.label": "오류 {0}개", + "markers.panel.single.warning.label": "경고 1개", + "markers.panel.multiple.warnings.label": "경고 {0}개", + "markers.panel.single.info.label": "정보 1개", + "markers.panel.multiple.infos.label": "정보 {0}개", + "markers.panel.single.unknown.label": "알 수 없음 1개", + "markers.panel.multiple.unknowns.label": "알 수 없음 {0}개", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0}에 {1}개의 문제가 있음", + "errors.warnings.show.label": "오류 및 경고 표시" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json index ada854f50d6..b5c27aa50bb 100644 --- a/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "다음 검색 포함 패턴 표시", "previousSearchIncludePattern": "이전 검색 포함 패턴 표시", - "nextSearchExcludePattern": "다음 검색 제외 패턴 표시", - "previousSearchExcludePattern": "이전 검색 제외 패턴 표시", "nextSearchTerm": "다음 검색어 표시", "previousSearchTerm": "이전 검색어 표시", "showSearchViewlet": "검색 표시", diff --git a/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json index c98e307c23b..863a56d6989 100644 --- a/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "검색 세부 정보 설정/해제", - "searchScope.includes": "포함할 파일", - "label.includes": "패턴 포함 검색", - "searchScope.excludes": "제외할 파일", - "label.excludes": "패턴 제외 검색", "replaceAll.confirmation.title": "모두 바꾸기", "replaceAll.confirm.button": "바꾸기(&&R)", "replaceAll.occurrence.file.message": "{1}개 파일에서 {0}개를 '{2}'(으)로 바꿨습니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 5c6abe93d98..a5f47526ecf 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -10,6 +10,7 @@ "ProblemPatternParser.problemPattern.kindProperty.notFirst": "문제 패턴이 잘못되었습니다. Kind 속성은 첫 번째 요소에만 지정해야 합니다.", "ProblemPatternParser.problemPattern.missingRegExp": "문제 패턴에 정규식이 없습니다.", "ProblemPatternParser.problemPattern.missingProperty": "문제 패턴이 잘못되었습니다. 하나 이상의 파일 및 메시지를 포함해야 합니다.", + "ProblemPatternParser.problemPattern.missingLocation": "문제 패턴이 잘못되었습니다. \"파일\" 종류, 줄 또는 위치 일치 그룹을 포함해야 합니다.", "ProblemPatternParser.invalidRegexp": "오류: {0} 문자열은 유효한 정규식이 아닙니다.\n", "ProblemPatternSchema.regexp": "출력에서 오류, 경고 또는 정보를 찾는 정규식입니다.", "ProblemPatternSchema.kind": "패턴이 위치(파일 및 줄)와 일치하는지 또는 파일하고만 일치하는지 여부입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 58e2a3a2594..e02ee2a8a5f 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "작업을 그룹에 할당 안 함", "JsonSchema.tasks.group": "이 작업을 할당할 실행 그룹을 정의합니다. 빌드 그룹에 추가를 위한 \"build'와 테스트 그룹에 추가를 위한 \"test\"를 지원합니다.", "JsonSchema.tasks.type": "작업이 프로세스로 실행되는지 또는 셸 내의 명령으로 실행되는지를 제어합니다.", + "JsonSchema.command": "실행할 명령이며, 외부 프로그램 또는 셸 명령입니다.", + "JsonSchema.tasks.args": "이 작업이 호출될 때 명령에 전달되는 인수입니다.", "JsonSchema.tasks.label": "작업 사용자 인터페이스 레이블", "JsonSchema.version": "구성의 버전 번호입니다.", "JsonSchema.tasks.identifier": "작업을 launch.json 또는 dependsOn 구문에서 참조할 사용자 정의 식별자입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 82af7f681be..9fba55129c8 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,10 @@ ], "tasksCategory": "작업", "ConfigureTaskRunnerAction.label": "작업 구성", - "problems": "문제", + "totalErrors": "오류 {0}개", + "totalWarnings": "경고 {0}개", + "totalInfos": "정보 {0}개", "building": "빌드하고 있습니다...", - "manyMarkers": "99+", "runningTasks": "실행 중인 작업 표시", "tasks": "작업", "TaskSystem.noHotSwap": "실행 중인 활성 작업이 있는 작업 실행 엔진을 변경하면 Window를 다시 로드해야 합니다.", @@ -47,6 +48,7 @@ "configured": "구성된 작업", "detected": "감지된 작업", "TaskService.notAgain": "다시 표시 안 함", + "TaskService.ignoredFolder": "작업 버전 0.1.0을 사용하기 때문에 다음 작업 영역 폴더는 무시됩니다. {0}", "TaskService.pickRunTask": "실행할 작업 선택", "TaslService.noEntryToRun": "실행할 작업이 없습니다. 작업 구성...", "TaskService.fetchingBuildTasks": "빌드 작업을 페치하는 중...", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index f136929d825..d7f18841ff1 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "오류: 작업 구성 '{0}'에 필요한 속성 '{1}'이(가) 없습니다. 작업 구성이 무시됩니다.", "ConfigurationParser.notCustom": "오류: 작업이 사용자 지정 작업으로 선언되지 않았습니다. 이 구성은 무시됩니다.\n{0}\n", "ConfigurationParser.noTaskName": "오류: 작업에서 레이블 속성을 제공해야 합니다. 이 작업은 무시됩니다.\n{0}\n", - "taskConfiguration.shellArgs": "경고: '{0}' 작업은 셸 명령이며 인수 중 하나에 이스케이프되지 않은 공백이 있을 수 있습니다. 올바른 명령줄 인용인지 확인하려면 인수를 명령으로 병합하세요.", "taskConfiguration.noCommandOrDependsOn": "오류: 작업 '{0}'에서 명령이나 dependsOn 속성을 지정하지 않습니다. 이 작업은 무시됩니다. 해당 작업의 정의는 {1}입니다.", "taskConfiguration.noCommand": "오류: 작업 '{0}'에서 명령을 정의하지 않습니다. 이 작업은 무시됩니다. 해당 작업의 정의는\n{1}입니다.", "TaskParse.noOsSpecificGlobalTasks": "작업 버전 2.0.0은 글로벌 OS별 작업을 지원하지 않습니다. OS별 명령을 사용하여 작업으로 변환하세요. 영향을 받는 작업::\n{0}" diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index b95ca94304a..6260df300a8 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "복사", + "split": "분할", "paste": "붙여넣기", "selectAll": "모두 선택", - "clear": "지우기", - "split": "분할" + "clear": "지우기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..3314e92b45d --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "릴리스 정보: {0}", + "unassigned": "할당되지 않음" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json index b925a01c2ad..42eb2d479ae 100644 --- a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "나중에", - "unassigned": "할당되지 않음", "releaseNotes": "릴리스 정보", "showReleaseNotes": "릴리스 정보 표시", "read the release notes": "{0} v{1}을(를) 시작합니다. 릴리스 정보를 확인하시겠습니까?", diff --git a/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..4a956b0bd25 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "webview 편집기" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..3b2a1e0eaac --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "자세히 알아보기" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..83747fca0e8 --- /dev/null +++ b/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "canNotResolveWorkspaceFolderMultiRoot": "${workspaceFolder} 은(는) 멀티 폴더 작업 영역에서 확인할 수 없습니다. : 와 폴더 이름을 사용하여 변수 범위를 정합니다.", + "canNotResolveWorkspaceFolder": "${workspaceFolder} 을(를) 확인할 수 없습니다. 폴더를 여십시오.", + "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} 은(는) 멀티 폴더 작업 영역에서 확인할 수 없습니다. : 와 폴더 이름을 사용하여 변수 범위를 정합니다.", + "canNotResolveFolderBasename": "${workspaceFolderBasename} 을(를) 확인할 수 없습니다. 폴더를 여십시오.", + "canNotResolveLineNumber": "${lineNumber} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", + "canNotResolveFile": "${file} 을(를) 확인할 수 없으므로, 편집기를 여십시오.", + "canNotResolveRelativeFile": "${relativeFile} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", + "canNotResolveFileDirname": "${fileDirname} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", + "canNotResolveFileExtname": "${fileExtname} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", + "canNotResolveFileBasename": "${fileBasename} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", + "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} 을(를) 확인할 수 없습니다. 편집기를 여십시오." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/kor/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..96048859920 --- /dev/null +++ b/i18n/kor/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "예(&&Y)", + "cancelButton": "취소" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 0622ba5a8bb..eb17227dbfa 100644 --- a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "다시 표시 안 함", "netVersionError": "Microsoft .NET Framework 4.5가 필요합니다. 설치하려면 링크를 클릭하세요.", "learnMore": "지침", - "enospcError": "{0}에 파일 핸들이 부족합니다. 지침 링크를 클릭하여 문제를 해결하세요.", "binFailed": "'{0}'을(를) 휴지통으로 이동하지 못함", "trashFailed": "'{0}'을(를) 휴지통으로 이동하지 못함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json index 92d933fa231..d411f384a72 100644 --- a/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "잘못된 파일 리소스({0})", "fileIsDirectoryError": "파일이 디렉터리입니다.", "fileNotModifiedError": "파일 수정 안 됨", - "fileTooLargeForHeapError": "파일 크기가 창 메모리 제한을 초과합니다. --max-memory=NEWSIZE 코드를 실행해 보세요.", "fileTooLargeError": "파일이 너무 커서 열 수 없음", "fileNotFoundError": "파일을 찾을 수 없습니다({0}).", "fileBinaryError": "파일이 이진인 것 같으므로 테스트로 열 수 없습니다.", diff --git a/i18n/kor/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/kor/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..d4f0c4c0f4d 100644 --- a/i18n/kor/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/kor/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "취소" } \ No newline at end of file diff --git a/i18n/ptb/extensions/clojure/package.i18n.json b/i18n/ptb/extensions/clojure/package.i18n.json index 978c999faf1..d146e27fa42 100644 --- a/i18n/ptb/extensions/clojure/package.i18n.json +++ b/i18n/ptb/extensions/clojure/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Clojure" + "displayName": "Noções Básicas Sobre a Linguagem Clojure", + "description": "Fornece realce de sintaxe e correspondência de suporte e dobramento em arquivos Clojure." } \ No newline at end of file diff --git a/i18n/ptb/extensions/coffeescript/package.i18n.json b/i18n/ptb/extensions/coffeescript/package.i18n.json index 03d413fad32..95fe95501c9 100644 --- a/i18n/ptb/extensions/coffeescript/package.i18n.json +++ b/i18n/ptb/extensions/coffeescript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem CoffeeScript" + "displayName": "Noções Básicas Sobre a Linguagem CoffeeScript", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de suporte e dobramento em arquivos CoffeeScript." } \ No newline at end of file diff --git a/i18n/ptb/extensions/configuration-editing/out/settingsDocumentHelper.i18n.json b/i18n/ptb/extensions/configuration-editing/out/settingsDocumentHelper.i18n.json index 3a30e02d2db..7e7a9ca7e1d 100644 --- a/i18n/ptb/extensions/configuration-editing/out/settingsDocumentHelper.i18n.json +++ b/i18n/ptb/extensions/configuration-editing/out/settingsDocumentHelper.i18n.json @@ -13,7 +13,7 @@ "rootPath": "caminho do arquivo da área de trabalho (por exemplo, /Usuarios/Desenvolvimento/minhaAreadeTrabalho)", "folderName": "nome do diretório da área de trabalho onde arquivo está localizado (por exemplo, myFolder)", "folderPath": "caminho do arquivo no diretório da área de trabalho onde o arquivo está localizado (por exemplo, /Users/Development/myFolder)", - "appName": "e.g. VS Code", + "appName": "por exemplo VS Code", "dirty": "Um indicador de alteração se o editor ativo foi alterado", "separator": "um separador condicional (' - ') que somente é mostrado quando envolvido por variáveis com valores", "assocLabelFile": "Arquivos com Extensão", diff --git a/i18n/ptb/extensions/cpp/package.i18n.json b/i18n/ptb/extensions/cpp/package.i18n.json index 0ef1e68fec5..08236c7ff81 100644 --- a/i18n/ptb/extensions/cpp/package.i18n.json +++ b/i18n/ptb/extensions/cpp/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem C/C++" + "displayName": "Noções Básicas Sobre a Linguagem C/C++", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de suporte e dobramento em arquivos C/C++." } \ No newline at end of file diff --git a/i18n/ptb/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/ptb/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..d8cc2994174 --- /dev/null +++ b/i18n/ptb/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "Servidor de linguagem CSS", + "folding.start": "Início da Região Expansível", + "folding.end": "Fim da Região Expansível" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/css-language-features/package.i18n.json b/i18n/ptb/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..c6bb31b4fbc --- /dev/null +++ b/i18n/ptb/extensions/css-language-features/package.i18n.json @@ -0,0 +1,79 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Recursos da Linguagem CSS", + "description": "Fornece suporte de linguagem rico para arquivos CSS, LESS e SCSS.", + "css.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", + "css.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", + "css.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", + "css.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", + "css.lint.emptyRules.desc": "Não use conjuntos de regra em branco", + "css.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", + "css.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", + "css.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", + "css.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", + "css.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", + "css.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", + "css.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", + "css.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", + "css.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", + "css.lint.unknownProperties.desc": "Propriedade desconhecida.", + "css.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", + "css.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", + "css.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", + "css.trace.server.desc": "Rastrear a comunicação entre o VS Code e o servidor de linguagem CSS.", + "css.validate.title": "Controla a validação CSS and a gravidade dos problemas.", + "css.validate.desc": "Habilita ou desabilita todas as validações", + "less.title": "LESS", + "less.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", + "less.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", + "less.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", + "less.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", + "less.lint.emptyRules.desc": "Não use conjuntos de regra em branco", + "less.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", + "less.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", + "less.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", + "less.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", + "less.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", + "less.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", + "less.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", + "less.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", + "less.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", + "less.lint.unknownProperties.desc": "Propriedade desconhecida.", + "less.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", + "less.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", + "less.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", + "less.validate.title": "Controla MENOS as severidades de validação e problemas.", + "less.validate.desc": "Habilita ou desabilita todas as validações", + "scss.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", + "scss.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", + "scss.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", + "scss.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", + "scss.lint.emptyRules.desc": "Não use conjuntos de regra em branco", + "scss.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", + "scss.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", + "scss.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", + "scss.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", + "scss.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", + "scss.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", + "scss.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", + "scss.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", + "scss.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", + "scss.lint.unknownProperties.desc": "Propriedade desconhecida.", + "scss.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", + "scss.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", + "scss.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", + "scss.validate.title": "Controla severidades de validação e problemas SCSS.", + "scss.validate.desc": "Habilita ou desabilita todas as validações", + "less.colorDecorators.enable.desc": "Habilita ou desabilita os decoradores de cor", + "scss.colorDecorators.enable.desc": "Habilita ou desabilita os decoradores de cor", + "css.colorDecorators.enable.desc": "Habilita ou desabilita os decoradores de cor", + "css.colorDecorators.enable.deprecationMessage": "A configuração 'css.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'.", + "scss.colorDecorators.enable.deprecationMessage": "A configuração 'scss.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'.", + "less.colorDecorators.enable.deprecationMessage": "A configuração 'less.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/css/package.i18n.json b/i18n/ptb/extensions/css/package.i18n.json index 420064cea8b..35229bd6699 100644 --- a/i18n/ptb/extensions/css/package.i18n.json +++ b/i18n/ptb/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Recursos da Linguagem CSS", - "description": "Fornece suporte de linguagem rico para arquivos CSS, LESS e SCSS.", - "css.title": "CSS", - "css.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", - "css.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", - "css.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", - "css.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", - "css.lint.emptyRules.desc": "Não use conjuntos de regra em branco", - "css.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", - "css.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", - "css.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", - "css.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", - "css.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", - "css.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", - "css.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", - "css.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", - "css.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", - "css.lint.unknownProperties.desc": "Propriedade desconhecida.", - "css.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", - "css.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", - "css.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", - "css.trace.server.desc": "Rastrear a comunicação entre o VS Code e o servidor de linguagem CSS.", - "css.validate.title": "Controla a validação CSS and a gravidade dos problemas.", - "css.validate.desc": "Habilita ou desabilita todas as validações", - "less.title": "LESS", - "less.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", - "less.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", - "less.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", - "less.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", - "less.lint.emptyRules.desc": "Não use conjuntos de regra em branco", - "less.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", - "less.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", - "less.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", - "less.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", - "less.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", - "less.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", - "less.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", - "less.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", - "less.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", - "less.lint.unknownProperties.desc": "Propriedade desconhecida.", - "less.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", - "less.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", - "less.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", - "less.validate.title": "Controla MENOS as severidades de validação e problemas.", - "less.validate.desc": "Habilita ou desabilita todas as validações", - "scss.title": "SCSS (Sass)", - "scss.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", - "scss.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", - "scss.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", - "scss.lint.duplicateProperties.desc": "Não use as definições de estilo duplicadas", - "scss.lint.emptyRules.desc": "Não use conjuntos de regra em branco", - "scss.lint.float.desc": "Evite usar 'float'. Floats levam a CSS frágil, que é fácil de quebrar se um aspecto do layout for alterado.", - "scss.lint.fontFaceProperties.desc": "A regra @font-face deve definir propriedades 'src' e 'font-family'", - "scss.lint.hexColorLength.desc": "Cores hexadecimais devem consistir em três ou seis números hexadecimais", - "scss.lint.idSelector.desc": "Seletores não devem conter IDs, pois essas regras estão firmemente acopladas ao HTML.", - "scss.lint.ieHack.desc": "IE hacks somente são necessários ao dar suporte ao IE7 e mais antigos", - "scss.lint.important.desc": "Evite usar !important. Esta é uma indicação de que a especificidade do CSS inteiro saiu de controle e precisa ser fatorada novamente.", - "scss.lint.importStatement.desc": "Instruções de importação não carregam em paralelo", - "scss.lint.propertyIgnoredDueToDisplay.desc": "Propriedade ignorada devido à exibição. Por exemplo, com 'display: inline', as propriedades width, height, margin-top, margin-bottom e float não têm efeito", - "scss.lint.universalSelector.desc": "O seletor universal (*) é conhecido por ser lento", - "scss.lint.unknownProperties.desc": "Propriedade desconhecida.", - "scss.lint.unknownVendorSpecificProperties.desc": "Propriedade específica do fornecedor desconhecida.", - "scss.lint.vendorPrefix.desc": "Ao usar um prefixo específico do fornecedor, inclua também a propriedade padrão", - "scss.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", - "scss.validate.title": "Controla severidades de validação e problemas SCSS.", - "scss.validate.desc": "Habilita ou desabilita todas as validações", - "less.colorDecorators.enable.desc": "Habilita ou desabilita decoradores de cores", - "scss.colorDecorators.enable.desc": "Habilita ou desabilita decoradores de cores", - "css.colorDecorators.enable.desc": "Habilita ou desabilita decoradores de cores", - "css.colorDecorators.enable.deprecationMessage": "A configuração 'css.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'.", - "scss.colorDecorators.enable.deprecationMessage": "A configuração 'scss.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'.", - "less.colorDecorators.enable.deprecationMessage": "A configuração 'less.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'." + ] } \ No newline at end of file diff --git a/i18n/ptb/extensions/git/out/commands.i18n.json b/i18n/ptb/extensions/git/out/commands.i18n.json index c27be95a183..afacddeaf5a 100644 --- a/i18n/ptb/extensions/git/out/commands.i18n.json +++ b/i18n/ptb/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "OK", "push with tags success": "Envio de rótulos finalizado com sucesso.", "pick remote": "Pegue um remoto para publicar o ramo '{0}':", - "sync is unpredictable": "Esta ação vai fazer push e pull nos commits de e para '{0}'.", "never again": "OK, Não Mostrar Novamente", "no remotes to publish": "Seu repositório não possui remotos configurados para publicação.", "no changes stash": "Não há nenhuma mudança para esconder.", diff --git a/i18n/ptb/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/ptb/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..6e9a973c172 --- /dev/null +++ b/i18n/ptb/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "Servidor de Linguagem HTML", + "folding.start": "Início da Região Expansível", + "folding.end": "Fim da Região Expansível" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/html-language-features/package.i18n.json b/i18n/ptb/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..cbbf188d7c1 --- /dev/null +++ b/i18n/ptb/extensions/html-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Recursos da Linguagem HTML", + "description": "Fornece suporte de linguagem rico para arquivos HTML, Razor e Handlebar.", + "html.format.wrapLineLength.desc": "Quantidade máxima de caracteres por linha (0 = desativar).", + "html.format.unformatted.desc": "Lista de tags, separados por vírgula, que não deveria ser reformatada. o padrão é 'nulo' para todas as tags listadas em https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.contentUnformatted.desc": "Lista de tags, separada por vírgula, onde o conteúdo não deve ser reformatado. o padrão é 'nulo' para a tag 'pré'.", + "html.format.indentInnerHtml.desc": "Indentar secões e .", + "html.format.preserveNewLines.desc": "Se quebras de linha existentes antes de elementos deveriam ser preservadas. Só funciona antes de elementos, não dentro de rótulos ou para texto.", + "html.format.maxPreserveNewLines.desc": "Número máximo de quebras de linha a serem preservadas em um bloco. Use 'null' para ilimitado.", + "html.format.indentHandlebars.desc": "Formatar e indentar {{#foo}} e {{/ foo}}.", + "html.format.endWithNewline.desc": "Finalizar com uma nova linha.", + "html.format.extraLiners.desc": "Lista de rótulos, separados por vírgulas, que deveriam ter uma quebra de linha extra antes deles. 'null' admite o padrão \"head, body, /html\".", + "html.format.wrapAttributes.desc": "Agrupar atributos.", + "html.format.wrapAttributes.auto": "Agrupar atributos somente quando o tamanho da linha é excedido.", + "html.format.wrapAttributes.force": "Agrupar cada atributo exceto o primeiro.", + "html.format.wrapAttributes.forcealign": "Agrupar cada atributo, exceto o primeiro e manter alinhado.", + "html.format.wrapAttributes.forcemultiline": "Agrupar cada atributo.", + "html.suggest.angular1.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos e propriedades do Angular V1.", + "html.suggest.ionic.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos, propriedades e valores Ionic.", + "html.suggest.html5.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos, propriedades e valores HTML5.", + "html.trace.server.desc": "Rastrear a comunicação entre o VS Code e o servidor de linguagem HTML.", + "html.validate.scripts": "Configura se o suporte da linguagem HTML interna valida scripts embutidos.", + "html.validate.styles": "Configura se o suporte da linguagem HTML interna valida estilos embutidos.", + "html.autoClosingTags": "Ativar/desativar o fechamento automático de tags HTML." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/html/package.i18n.json b/i18n/ptb/extensions/html/package.i18n.json index 2ca6fef99c5..35229bd6699 100644 --- a/i18n/ptb/extensions/html/package.i18n.json +++ b/i18n/ptb/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Recursos da Linguagem HTML", - "description": "Fornece suporte de linguagem rico para arquivos HTML, Razor e Handlebar.", - "html.format.enable.desc": "Ativar/desativar o formatador HTML padrão", - "html.format.wrapLineLength.desc": "Quantidade máxima de caracteres por linha (0 = desativar).", - "html.format.unformatted.desc": "Lista de tags, separados por vírgula, que não deveria ser reformatada. o padrão é 'nulo' para todas as tags listadas em https://www.w3.org/TR/html5/dom.html#phrasing-content.", - "html.format.contentUnformatted.desc": "Lista de tags, separada por vírgula, onde o conteúdo não deve ser reformatado. o padrão é 'nulo' para a tag 'pré'.", - "html.format.indentInnerHtml.desc": "Indentar secões e .", - "html.format.preserveNewLines.desc": "Se quebras de linha existentes antes de elementos deveriam ser preservadas. Só funciona antes de elementos, não dentro de rótulos ou para texto.", - "html.format.maxPreserveNewLines.desc": "Número máximo de quebras de linha a serem preservadas em um bloco. Use 'null' para ilimitado.", - "html.format.indentHandlebars.desc": "Formatar e indentar {{#foo}} e {{/ foo}}.", - "html.format.endWithNewline.desc": "Finalizar com uma nova linha.", - "html.format.extraLiners.desc": "Lista de rótulos, separados por vírgulas, que deveriam ter uma quebra de linha extra antes deles. 'null' admite o padrão \"head, body, /html\".", - "html.format.wrapAttributes.desc": "Agrupar atributos.", - "html.format.wrapAttributes.auto": "Agrupar atributos somente quando o tamanho da linha é excedido.", - "html.format.wrapAttributes.force": "Agrupar cada atributo exceto o primeiro.", - "html.format.wrapAttributes.forcealign": "Agrupar cada atributo, exceto o primeiro e manter alinhado.", - "html.format.wrapAttributes.forcemultiline": "Agrupar cada atributo.", - "html.suggest.angular1.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos e propriedades do Angular V1.", - "html.suggest.ionic.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos, propriedades e valores Ionic.", - "html.suggest.html5.desc": "Configura se o suporte da linguagem HTML interna sugere rótulos, propriedades e valores HTML5.", - "html.trace.server.desc": "Rastrear a comunicação entre o VS Code e o servidor de linguagem HTML.", - "html.validate.scripts": "Configura se o suporte da linguagem HTML interna valida scripts embutidos.", - "html.validate.styles": "Configura se o suporte da linguagem HTML interna valida estilos embutidos.", - "html.experimental.syntaxFolding": "Habilita/Desabilita a sintaxe dos marcadores de pastas ativas.", - "html.autoClosingTags": "Ativar/desativar o fechamento automático de tags HTML." + ] } \ No newline at end of file diff --git a/i18n/ptb/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/ptb/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..3db289491e4 --- /dev/null +++ b/i18n/ptb/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "Servidor de linguagem JSON" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/json-language-features/package.i18n.json b/i18n/ptb/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..5be341b6196 --- /dev/null +++ b/i18n/ptb/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Recursos da Linguagem JSON", + "description": "Fornece suporte de linguagem rico para arquivos JSON.", + "json.schemas.desc": "Esquemas associadas a arquivos de JSON no projeto atual", + "json.schemas.url.desc": "Um URL para um esquema ou um caminho relativo a um esquema no diretório atual", + "json.schemas.fileMatch.desc": "Uma matriz de padrões de arquivos para correspondência ao resolver arquivos JSON para esquemas.", + "json.schemas.fileMatch.item.desc": "Um padrão de arquivos que pode conter '*' para fazer a correspondência ao resolver arquivos JSON para esquemas.", + "json.schemas.schema.desc": "A definição de esquema para o URL dado. O esquema precisa ser fornecido apenas para evitar acessos ao URL do esquema.", + "json.format.enable.desc": "Habilitar/desabilitar o formatador JSON padrão (requer reinicialização)", + "json.tracing.desc": "Loga a comunicação entre o VS Code e o servidor de linguagem JSON.", + "json.colorDecorators.enable.desc": "Habilita ou desabilita os decoradores de cor", + "json.colorDecorators.enable.deprecationMessage": "A configuração 'json.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/json/package.i18n.json b/i18n/ptb/extensions/json/package.i18n.json index 2888e93dfe4..35229bd6699 100644 --- a/i18n/ptb/extensions/json/package.i18n.json +++ b/i18n/ptb/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Recursos da Linguagem JSON", - "description": "Fornece suporte de linguagem rico para arquivos JSON.", - "json.schemas.desc": "Esquemas associadas a arquivos de JSON no projeto atual", - "json.schemas.url.desc": "Um URL para um esquema ou um caminho relativo a um esquema no diretório atual", - "json.schemas.fileMatch.desc": "Uma matriz de padrões de arquivos para correspondência ao resolver arquivos JSON para esquemas.", - "json.schemas.fileMatch.item.desc": "Um padrão de arquivos que pode conter '*' para fazer a correspondência ao resolver arquivos JSON para esquemas.", - "json.schemas.schema.desc": "A definição de esquema para o URL dado. O esquema precisa ser fornecido apenas para evitar acessos ao URL do esquema.", - "json.format.enable.desc": "Habilitar/desabilitar o formatador JSON padrão (requer reinicialização)", - "json.tracing.desc": "Loga a comunicação entre o VS Code e o servidor de linguagem JSON.", - "json.colorDecorators.enable.desc": "Habilita ou desabilita os decoradores de cor", - "json.colorDecorators.enable.deprecationMessage": "A configuração 'json.colorDecorators.enable' foi descontinuada em favor de 'editor.colorDecorators'.", - "json.experimental.syntaxFolding": "Habilita/Desabilita a sintaxe dos marcadores de pastas ativas." + ] } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-basics/package.i18n.json b/i18n/ptb/extensions/markdown-basics/package.i18n.json index 35229bd6699..1f82410c626 100644 --- a/i18n/ptb/extensions/markdown-basics/package.i18n.json +++ b/i18n/ptb/extensions/markdown-basics/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Markdown" } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..b72e8b907d6 --- /dev/null +++ b/i18n/ptb/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "Não foi possível carregar o 'markdown.styles': {0}" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..c84ba98d829 --- /dev/null +++ b/i18n/ptb/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Pré-visualização] {0}", + "previewTitle": "Pré-visualização {0}" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..92d5546b323 --- /dev/null +++ b/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.title": "Conteúdo potencialmente inseguro foi desativado na visualização de remarcação. Altere a configuração de segurança de visualização do Markdown para permitir conteúdo inseguro ou habilitar scripts", + "preview.securityMessage.label": "Conteúdo do Aviso de Segurança Desativado" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..e8aa71537e2 --- /dev/null +++ b/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.description": "Somente carregar conteúdo seguro", + "insecureContent.title": "Permitir conteúdo inseguro", + "disable.title": "Desabilitar", + "disable.description": "Permitir a execução de conteúdo e scripts. Não recomendado", + "moreInfo.title": "Mais informações", + "enableSecurityWarning.title": "Habilitar a visualização de avisos de segurança neste espaço de trabalho", + "disableSecurityWarning.title": "Desabilitar a visualização de avisos de segurança neste espaço de trabalho" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/package.i18n.json b/i18n/ptb/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..30cdb8f363d --- /dev/null +++ b/i18n/ptb/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,26 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Recursos da Linguagem Markdown", + "description": "Fornece suporte à linguagem rica para Markdown.", + "markdown.preview.breaks.desc": "Configura como quebras de linha são processadas na visualização de markdown. Configurando como 'true' cria um
para cada nova linha.", + "markdown.preview.linkify": "Habilitar ou desabilitar a conversão de texto URL para links na visualização markdown.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Duplo clique na pré-visualização markdown para alternar para o editor.", + "markdown.preview.fontFamily.desc": "Controla a família de fonte usada na pré-visualização de markdown.", + "markdown.preview.fontSize.desc": "Controla o tamanho da fonte em pixels usado na pré-visualização de markdown.", + "markdown.preview.lineHeight.desc": "Controla a altura de linha usada na pré-visualização de markdown. Este número é relativo ao tamanho de fonte.", + "markdown.preview.markEditorSelection.desc": "Marca a seleção atual do editor na pré-visualização de markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Quando uma pré-visualização de markdown é rolada, atualiza a exibição do editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Quando um editor de markdown é rolado, atualiza a exibição da pré-visualização.", + "markdown.preview.title": "Abrir a visualização", + "markdown.previewFrontMatter.dec": "Configura como o frontispicio YAML frente questão devem ser processado na pré-visualização de markdown. 'hide' remove o frontispicio. Caso contrário, o frontispicio é tratado como conteúdo de markdown.", + "markdown.previewSide.title": "Abre pré-visualização ao lado", + "markdown.showSource.title": "Exibir Código-Fonte", + "markdown.styles.dec": "Uma lista de URLs ou caminhos locais para folhas de estilo CSS para usar na pré-visualização do markdown. Caminhos relativos são interpretados em relação à pasta aberta no explorer. Se não houver nenhuma pasta aberta, eles são interpretados em relação ao local do arquivo markdown. Todos os ' \\' precisam ser escritos como ' \\ \\ '.", + "markdown.trace.desc": "Habilitar log de depuração para a extensão do markdown." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/ptb/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..bfb1b796def --- /dev/null +++ b/i18n/ptb/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Você permite {0} (definido como uma configuração do espaço de trabalho) a ser executado para lint de arquivos PHP?", + "php.yes": "Permitir", + "php.no": "Não permitir", + "wrongExecutable": "Não é possível validar {0} pois não é um executável php válido. Use a configuração 'php.validate.executablePath' para configurar o executável do PHP.", + "noExecutable": "Não é possível validar porque nenhum executável PHP está definido. Use a configuração 'php.validate.executablePath' para configurar o executável do PHP.", + "unknownReason": "Falha ao executar o php usando o caminho: {0}. O motivo é desconhecido." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/php-language-features/package.i18n.json b/i18n/ptb/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..a88cd375f35 --- /dev/null +++ b/i18n/ptb/extensions/php-language-features/package.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Configura se as sugestões intrínsecas da linguagem PHP estão habilitadas. O suporte sugere globais e variáveis do PHP.", + "configuration.validate.enable": "Habilita/desabilita a validação interna do PHP.", + "configuration.validate.executablePath": "Aponta para o executável do PHP.", + "configuration.validate.run": "Se o linter é executado ao salvar ou ao digitar.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/php/package.i18n.json b/i18n/ptb/extensions/php/package.i18n.json index 171cc8de307..324291e15f7 100644 --- a/i18n/ptb/extensions/php/package.i18n.json +++ b/i18n/ptb/extensions/php/package.i18n.json @@ -6,12 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Configura se as sugestões intrínsecas da linguagem PHP estão habilitadas. O suporte sugere globais e variáveis do PHP.", - "configuration.validate.enable": "Habilita/desabilita a validação interna do PHP.", - "configuration.validate.executablePath": "Aponta para o executável do PHP.", - "configuration.validate.run": "Se o linter é executado ao salvar ou ao digitar.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)", "displayName": "Recursos da linguagem PHP" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 6a08afe545f..57e561ae158 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Nenhum resultado encontrado", "settingsSearchIssue": "Problema na Pesquisa de Configurações", "bugReporter": "Relatório de Bug", - "performanceIssue": "Problema de Performance", "featureRequest": "Solicitação de Recurso", + "performanceIssue": "Problema de Performance", "stepsToReproduce": "Etapas para Reproduzir", "bugDescription": "Nós suportamos Markdown no padrão GitHub. Você poderá editar o seu problema e adicionar capturas de tela quando nós o pré-visualizarmos no GitHub. ", "performanceIssueDesciption": "Nós suportamos Markdown no padrão GitHub. Você poderá editar o seu problema e adicionar capturas de tela quando nós o pré-visualizarmos no GitHub. ", diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index cfbca1eb679..9dcb83270fb 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -18,9 +18,13 @@ "extensions": "Minhas extensões", "searchedExtensions": "Extensões Pesquisadas", "settingsSearchDetails": "Detalhes da Pesquisa de Configurações", + "tryDisablingExtensions": "O problema é reproduzível quando as extensões são desabilitadas?", "yes": "Sim", "no": "Não", + "disableExtensionsLabelText": "Tente reproduzir o problema depois de {0}.", "disableExtensions": "desabilitando todas as extensões e recarregando a janela", + "showRunningExtensionsLabelText": "Se você suspeita que isso seja um problema de extensão, {0} para reportar o problema com a extensão.", + "showRunningExtensions": "ver todas as extensões em execução", "details": "Por favor informe detalhes.", "loadingData": "Carregando dados..." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-main/logUploader.i18n.json b/i18n/ptb/src/vs/code/electron-main/logUploader.i18n.json index 413a18b3d90..0d8ffc448c9 100644 --- a/i18n/ptb/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/ptb/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,7 @@ "invalidEndpoint": "Destino para envio do log é inválido.", "beginUploading": "Enviando...", "didUploadLogs": "Envio bem-sucedido! ID do arquivo de Log: {0}", + "logUploadPromptHeader": "Você está prestes a fazer o envio de seus logs de sessão para um ponto de extremidade seguro da Microsoft e que apenas membros da equipe Microsoft e do time VS Code podem acessar.", "logUploadPromptBody": "Logs de sessão podem conter informações pessoais como caminhos completos ou conteúdos de arquivos. Por favor revise e elimine seus arquivos de log de sessão aqui: '{0}'", "logUploadPromptBodyDetails": "Ao continuar você confirma que você revisou e eliminou seus arquivos de log de sessão e que você concorda que a Microsoft use eles para depurar o VS Code.", "logUploadPromptAcceptInstructions": "Por favor execute o code com '--upload-logs={0}' para proceder com o upload", diff --git a/i18n/ptb/src/vs/code/electron-main/menus.i18n.json b/i18n/ptb/src/vs/code/electron-main/menus.i18n.json index eef1af7a303..19bc2c801cd 100644 --- a/i18n/ptb/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/ptb/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&&Abrir Visualização...", "miToggleFullScreen": "Alternar &&Tela Inteira", "miToggleZenMode": "Alternar modo Zen", + "miToggleCenteredLayout": "Alternar para Layout Centralizado", "miToggleMenuBar": "Alternar &&Barra de Menus", "miSplitEditor": "Dividir &&editor", "miToggleEditorLayout": "Alternar &&Layout do Grupo de Editor", diff --git a/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json index 2b9a537a3bb..7ac6b700d4b 100644 --- a/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "Cor da borda das linhas onduladas de aviso no editor.", "infoForeground": "Cor do primeiro plano das linhas de informação no editor.", "infoBorder": "Cor da borda das linhas de informação no editor.", - "overviewRulerRangeHighlight": "Visão geral da cor do marcador da régua para intervalos de destaques.", "overviewRuleError": "Visão geral da cor do marcador da régua para erros.", "overviewRuleWarning": "Visão geral da cor do marcador da régua para avisos.", "overviewRuleInfo": "Visão geral da cor do marcador da régua para informações." diff --git a/i18n/ptb/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/ptb/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 84ea506500f..8d9a0536028 100644 --- a/i18n/ptb/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/ptb/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Ir para o Próximo Problema (Erro, Aviso, Informação)", - "markerAction.previous.label": "Ir para o Problema Anterior (Erro, Aviso, Informação)", - "editorMarkerNavigationError": "Ferramenta de marcação de edição apresentando error na cor ", - "editorMarkerNavigationWarning": "Ferramenta de marcação de edição apresentando adventência na cor", - "editorMarkerNavigationInfo": "Cor de informação da ferramenta de navegação do marcador do editor.", - "editorMarkerNavigationBackground": "Cor de fundo da ferramenta de marcação de navegação do editor." + "markerAction.previous.label": "Ir para o Problema Anterior (Erro, Aviso, Informação)" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/ptb/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..e76001982d3 --- /dev/null +++ b/i18n/ptb/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Ferramenta de marcação de edição apresentando error na cor ", + "editorMarkerNavigationWarning": "Ferramenta de marcação de edição apresentando adventência na cor", + "editorMarkerNavigationInfo": "Cor de informação da ferramenta de navegação do marcador do editor.", + "editorMarkerNavigationBackground": "Cor de fundo da ferramenta de marcação de navegação do editor." +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 46ba9518381..882f079794f 100644 --- a/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "Cor de fundo de um símbolo durante o acesso de escrita, como ao escrever uma variável. A cor não deve ser opaca para não ocultar as decorações subjacentes.", "wordHighlightBorder": "Cor de fundo de um símbolo durante acesso de leitura, como ao ler uma variável.", "wordHighlightStrongBorder": "Cor de fundo de um símbolo durante acesso de escrita, como ao escrever uma variável.", - "overviewRulerWordHighlightForeground": "Visão geral da cor do marcador da régua para destaques de símbolos.", - "overviewRulerWordHighlightStrongForeground": "Visão geral da cor do marcador da régua para gravação de destaques de símbolos.", "wordHighlight.next.label": "Ir para o próximo símbolo em destaque", "wordHighlight.previous.label": "Ir para o símbolo de destaque anterior" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/ptb/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..f3c382a82fa --- /dev/null +++ b/i18n/ptb/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "... 1 arquivo adicional não está mostrado", + "moreFiles": "... {0} arquivos adicionais não estão mostrados" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/ptb/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..4a277edc564 --- /dev/null +++ b/i18n/ptb/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Cancelar" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 3ceced97733..fd53e61c4d3 100644 --- a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,12 @@ "errorInstallingDependencies": "Erro ao instalar dependências. {0}", "MarketPlaceDisabled": "Loja não está habilitada.", "removeError": "Erro ao remover a extensão: {0}. por favor, Saia e Inicie o VS Code antes de tentar novamente.", - "Not Market place extension": "Somente Extensões da Loja podem ser reinstaladas", "notFoundCompatible": "Não foi possível instalar '{0}; não existe nenhuma versão compatível com o VSCode '{1}'.", "malicious extension": "Não foi possível instalar a extensão, pois foi relatada como problemática.", "notFoundCompatibleDependency": "Não foi possível instalar porque a extensão dependente '{0}' compatível com a versão atual '{1}' do VS Code não foi encontrada.", "quitCode": "Não foi possível instalar a extensão. Por favor, saia e reinicie o VS Code antes de reinstalar.", "exitCode": "Não foi possível instalar a extensão. Por favor, saia e reinicie o VS Code antes de reinstalar.", "uninstallDependeciesConfirmation": "Gostaria de desinstalar '{0}' somente, ou suas dependências também?", - "uninstallOnly": "Apenas", - "uninstallAll": "Todos", "uninstallConfirmation": "Tem certeza que deseja desinstalar '{0}'?", "ok": "OK", "singleDependentError": "Não foi possível desinstalar a extensão '{0}'. A extensão '{1}' depende dela.", diff --git a/i18n/ptb/src/vs/platform/markers/common/markers.i18n.json b/i18n/ptb/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..1b82ec1834e --- /dev/null +++ b/i18n/ptb/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Erro", + "sev.warning": "Aviso", + "sev.info": "Informações" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json index 0103ae9995b..e1497a91dee 100644 --- a/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "Cor da borda dos cabeçalhos e separadores estão em conflito de mesclagem em linha.", "overviewRulerCurrentContentForeground": "Cor de fundo de régua de visuaização atual em conflito de mesclagem em linha.", "overviewRulerIncomingContentForeground": "Cor de fundo de régua de visuaização de entrada em conflito de mesclagem em linha.", - "overviewRulerCommonContentForeground": "Ancestral comum da cor da régua de visão geral para conflitos de mesclagem inline.", - "overviewRulerFindMatchForeground": "Visão geral da cor do marcador da régua para buscas correspondentes.", - "overviewRulerSelectionHighlightForeground": "Visão geral da cor do marcador da régua para a seleção de destaques" + "overviewRulerCommonContentForeground": "Ancestral comum da cor da régua de visão geral para conflitos de mesclagem inline." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index ffe76f5613e..f318947e97c 100644 --- a/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (Extensão)", "defaultSource": "Extensão", "manageExtension": "Gerenciar Extensão", "cancel": "Cancelar", diff --git a/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/ptb/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..d53bcb288c2 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (Extensão)" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 4a8523b9b47..745e5b68758 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,6 +19,7 @@ "close": "Fechar", "closeOthers": "Fechar Outros", "closeRight": "Fechar à direita", + "closeAllSaved": "Fechar Salvos", "closeAll": "Fechar todos", "keepOpen": "Manter aberto", "toggleInlineView": "Alternar para exibição embutida", diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 3d0849e2d3d..8f7c2c32373 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Focalizar próximo grupo", "openToSide": "Aberto para o lado", "closeEditor": "Fechar editor", + "closeOneEditor": "Fechar", "revertAndCloseActiveEditor": "Reverter e fechar editor", "closeEditorsToTheLeft": "Fechar editores à esquerda ", "closeAllEditors": "Fechar todos editores", diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index af4bb7c1e23..4b815cd265a 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Fechar", "araLabelEditorActions": "Ações de editor" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index ef35b7db33c..970ea3ec097 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -6,9 +6,11 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "clearNotification": "Limpar Notificação", "clearNotifications": "Limpar Todas as Notificações", "hideNotificationsCenter": "Ocultar Notificações", "expandNotification": "Expandir Notificação", "collapseNotification": "Recolher Notificação", - "configureNotification": "Configurar Notificação" + "configureNotification": "Configurar Notificação", + "copyNotification": "Copiar Texto" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 9c950e41e29..02b9b9c0ccf 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "hideNotifications": "Ocultar Notificações" + "hideNotifications": "Ocultar Notificações", + "oneNotification": "1 Nova Notificação" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json index 38924568114..8fd73e4f40c 100644 --- a/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Janela", "window.openFilesInNewWindow.on": "Arquivos serão abertos em uma nova janela", "window.openFilesInNewWindow.off": "Arquivos serão abertos em uma nova janela com a pasta de arquivos aberta ou com a última janela ativa.", - "window.openFilesInNewWindow.default": "Os arquivos serão abertos na janela com a pasta de arquivos aberta ou a última janela ativa, a menos que seja aberto através do dock ou do finder (somente macOS)", - "openFilesInNewWindow": "Controla se os arquivos devem ser abertos em uma nova janela\n- padrão: os arquivos serão abertos em uma nova janela com a pasta de arquivos aberta ou na última janela ativa, a menos que seja aberta através do dock ou do finder (apenas macOS)\n- ligado: os arquivos serão abertos em uma nova janela\n- desligado: os arquivos serão abertos em uma janela com a pasta de arquivos aberta ou a última janela ativa\nNote que ainda podem haver casos em que esta configuração será ignorada (por exemplo, quando estiver usando as opções de linha de comando -new-window ou -reuse-window).", "window.openFoldersInNewWindow.on": "As pastas serão abertas em uma nova janela", "window.openFoldersInNewWindow.off": "As pastas substituirão a última janela ativa", "window.openFoldersInNewWindow.default": "As pastas serão abertas em uma nova janela, a menos que uma pasta seja selecionada dentro do aplicativo (por exemplo, através do menu Arquivo)", @@ -58,7 +56,6 @@ "restoreWindows": "Controla como as janelas serão reabertas após uma reinicialização. Selecione 'nenhum' para sempre iniciar com uma área de trabalho vazia, 'um' para reabrir a última janela que você trabalhou, 'pastas' para reabrir todas as janelas que tinham pastas abertas ou 'todos' para reabrir todas as janelas da sua última sessão.", "restoreFullscreen": "Controla se uma janela deve ser restaurada em modo de tela cheia se ela foi finalizada em modo de tela cheia.", "zoomLevel": "Ajusta o nível de zoom da janela. O tamanho original é 0 e cada aumento (por exemplo, 1) ou redução (por exemplo, -1) representa um zoom 20% maior ou menor. Você também pode digitar decimais para ajustar o nível de zoom com uma granularidade mais fina.", - "title": "Controla o título de janela baseado no editor ativo. Variáveis são substituídas com base no contexto: \n${activeEditorShort}: o nome do arquivo (por exemplo, MyFile txt)\n${activeEditorMedium}: o caminho do arquivo relativo à pasta da área de trabalho (por exemplo, myFolder/myFile.txt) \n${activeEditorLong}: o caminho completo do arquivo (por exemplo, /Users/Development/myProject/myFolder/myFile.txt) \n${folderName}: nome da pasta de trabalho em que o arquivo está contido (por exemplo, myFolder) \n${folderPath}: caminho do arquivo da pasta de trabalho em que o arquivo está contido (por exemplo, /Users/Development/myFolder) {\n$(rootName}: nome do espaço de trabalho (por exemplo, myFolder ou myWorkspace)\n${rootPath}: caminho do espaço de trabalho (por exemplo, /Users/Development/myWorkspace) \n${appName}: por exemplo, VS Code\n${dirty}: um indicador se o editor ativo foi modificado\n${separator}: um separador condicional (\"-\") que é mostrado apenas quando cercado por variáveis com valores", "window.newWindowDimensions.default": "Abrir novas janelas no centro da tela.", "window.newWindowDimensions.inherit": "Abrir novas janelas com a mesma dimensão da última janela ativa.", "window.newWindowDimensions.maximized": "Abrir novas janelas maximizadas.", diff --git a/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index fae5e7689d0..e3be93ecafc 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,7 @@ "functionBreakpointsNotSupported": "Pontos de parada de função não são suportados por este tipo de depuração", "functionBreakpointPlaceholder": "Função de parada", "functionBreakPointInputAriaLabel": "Digitar Ponto de Parada de Função", + "breakpointDisabledHover": "Ponto de interrupção desativado", "breakpointDirtydHover": "Ponto de parada não verificado. O arquivo foi modificado, por favor reinicie a sessão de depuração.", "conditionalBreakpointUnsupported": "Pontos de parada condicionais não são suportados por esse tipo de depurador" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 734a4f0737e..7bffbd36c2c 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -24,16 +24,12 @@ "restartFrame": "Reiniciar o Frame", "removeBreakpoint": "Remover Ponto de Parada", "removeAllBreakpoints": "Remover Todos os Pontos de Parada", - "enableBreakpoint": "Habilitar ponto de Parada", - "disableBreakpoint": "Desativar Ponto de Parada", "enableAllBreakpoints": "Habilitar Todos os Pontos de Parada", "disableAllBreakpoints": "Desabilitar Todos Pontos de Parada", "activateBreakpoints": "Ativar Pontos de Parada", "deactivateBreakpoints": "Desativar Pontos de Parada", "reapplyAllBreakpoints": "Reaplicar Todos os Pontos de Parada", "addFunctionBreakpoint": "Adicionar Ponto de Parada de Função", - "addConditionalBreakpoint": "Adicionar Ponto de Parada Condicional...", - "editConditionalBreakpoint": "Editar o Ponto de Parada...", "setValue": "Definir Valor", "addWatchExpression": "Adicionar Expressão", "editWatchExpression": "Editar expressão", diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..e3644af4287 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Parar quando contagem de ocorrências condição for alcançada. 'Enter' para aceitar, 'esc' para cancelar.", + "breakpointWidgetExpressionPlaceholder": "Parar quando a expressão for avaliada como true. 'Enter' para aceitar, 'esc' para cancelar.", + "breakpointWidgetHitCountAriaLabel": "O programa só vai parar aqui, se a contagem de ocorrências for alcançada. Pressione Enter para aceitar ou Escape para cancelar.", + "breakpointWidgetAriaLabel": "O programa só vai parar aqui se esta condição for verdadeira. Pressione Enter para aceitar ou Escape para cancelar.", + "expression": "Expressão", + "hitCount": "Contagem de ocorrências" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index e6cb3550cab..1a2d0c2dbfa 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,5 +26,6 @@ "always": "Sempre mostrar depurar na barra de status", "onFirstSessionStart": "Mostrar depurar na barra de status somente após a depuração ser iniciada pela primeira vez", "showInStatusBar": "Controla quando a barra de status de depuração deve ser visível", + "openDebug": "Controla se a visualização de depuração deve ser aberta no início da sessão de depuração.", "launch": "Configuração global do lançamento do depurador. Deve ser usado como uma alternativa para o arquivo 'launch.json' que é compartilhado entre os espaços de trabalho" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 60374cdddc8..0f414408390 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Editar o Ponto de Parada...", + "disableBreakpoint": "Desativar Ponto de Parada", + "enableBreakpoint": "Habilitar ponto de Parada", "removeBreakpoints": "Remover pontos de interrupção", "removeBreakpointOnColumn": "Remover ponto de interrupção na coluna {0}", "removeLineBreakpoint": "Remover ponto de interrupção de linha", @@ -18,5 +21,6 @@ "enableBreakpoints": "Habilitar o ponto de interrupção na coluna {0}", "enableBreakpointOnLine": "Habilitar o ponto de interrupção de linha", "addBreakpoint": "Adicionar ponto de interrupção", + "conditionalBreakpoint": "Adicionar Ponto de Parada Condicional...", "addConfiguration": "Adicionar Configuração..." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 54e30c2ab6b..a29d2cb2439 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -26,7 +26,5 @@ "preLaunchTaskExitCode": "A preLaunchTask '{0}' encerrada com código de saída {1}.", "showErrors": "Mostrar erros", "noFolderWorkspaceDebugError": "O arquivo ativo não pode ser depurado. Certifique-se de que ele está salvo no disco e que tem uma extensão de depuração instalada para esse tipo de arquivo.", - "cancel": "Cancelar", - "DebugTaskNotFound": "Não foi possível encontrar o preLaunchTask '{0}'.", - "taskNotTracked": "Tarefa de pré-lançamento ${0} não pode ser rastreada." + "cancel": "Cancelar" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index 02bb00f9f6c..549e00ee363 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Copiar valor", + "copyAsExpression": "Copiar como Expressão", "copy": "Copiar", "copyAll": "Copiar todos", "copyStackTrace": "Copiar Pilha de Chamadas" diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..c50dddb3166 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,53 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Nome da extensão", + "extension id": "Identificador da extensão", + "preview": "Visualizar", + "builtin": "Intrínseco", + "publisher": "Nome do editor", + "install count": "Quantidade de Instalações", + "rating": "Avaliação", + "license": "Licença", + "details": "Detalhes", + "contributions": "Contribuições", + "changelog": "Registro de Alterações", + "dependencies": "Dependências", + "noReadme": "README não disponível.", + "noChangelog": "Registro de Alterações não disponível.", + "noContributions": "Sem Contribuições", + "noDependencies": "Sem Dependências", + "settings": "Configurações ({0})", + "setting name": "Nome", + "description": "Descrição", + "default": "Valor padrão", + "debuggers": "Depuradores ({0})", + "debugger name": "Nome", + "debugger type": "Tipo", + "views": "Visualizações ({0})", + "view id": "ID", + "view name": "Nome", + "view location": "Onde", + "localizations language id": "Id do Idioma", + "localizations language name": "Nome do Idioma", + "localizations localized language name": "Nome do Idioma (Localizado)", + "colorId": "Id", + "defaultDark": "Padrão Escuro", + "defaultLight": "Padrão Claro", + "JSON Validation": "Validação JSON ({0})", + "commands": "Comandos ({0})", + "command name": "Nome", + "keyboard shortcuts": "Atalhos de Teclado", + "menuContexts": "Contextos de Menu", + "languages": "Linguagens ({0})", + "language id": "ID", + "language name": "Nome", + "file extensions": "Extensões de Arquivo", + "grammar": "Gramática", + "snippets": "Trechos" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 4f398630432..963936e2ac1 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Recomendado", "otherRecommendedExtensions": "Outras recomendações", "workspaceRecommendedExtensions": "Recomendações do Espaço de Trabalho", - "builtInExtensions": "Incorporado", "searchExtensions": "Pesquisar Extensões na Loja", "sort by installs": "Ordenar por: Quantidade de Instalações", "sort by rating": "Ordenar por: Avaliação", diff --git a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 209ded70473..d626a3f28d4 100644 --- a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Você tem certeza que deseja excluir os seguintes {0} arquivos?", "confirmMoveTrashMessageFolder": "Tem certeza de que deseja excluir '{0}' e seu conteúdo?", "confirmMoveTrashMessageFile": "Tem certeza de que deseja excluir '{0}'?", - "undoBin": "Você pode restaurar da lixeira.", - "undoTrash": "Você pode restaurar a partir do lixo.", "doNotAskAgain": "Não me pergunte novamente", "confirmDeleteMessageMultiple": "Você tem certeza que deseja excluir permanentemente os seguintes {0} arquivos?", "confirmDeleteMessageFolder": "Tem certeza de que deseja excluir permanentemente '{0}' e seu conteúdo?", "confirmDeleteMessageFile": "Tem certeza de que deseja excluir permanentemente '{0}'?", "irreversible": "Esta ação é irreversível!", - "cancel": "Cancelar", - "permDelete": "Excluir permanentemente", "importFiles": "Importar Arquivos", "confirmOverwrite": "Um arquivo ou pasta com o mesmo nome já existe na pasta de destino. Você quer substituí-lo?", "replaceButtonLabel": "&&Substituir", diff --git a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.i18n.json b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.i18n.json index e38036e8255..e4ceea553e3 100644 --- a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "openEditors": "Abrir Editores", + "openEditors": "Editores Abertos", "openEditosrSection": "Abrir Seção de Editores", "dirtyCounter": "{0} não salvos" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..2f618f306d5 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Visualização Html" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..478273f97f8 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Entrada inválida do editor." +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..1bdb832ea43 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Desenvolvedor" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..c9dceaeb492 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "refreshWebviewLabel": "Recarregar Webviews" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index a43dc690778..1148faff8d9 100644 --- a/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Sim", + "no": "Não", + "doNotAskAgain": "Não me pergunte novamente", "JsonSchema.locale": "O idioma da interface do usuário a ser usada.", "vscode.extension.contributes.localizations": "Contribui localizações ao editor", "vscode.extension.contributes.localizations.languageId": "Id do idioma em que as strings de exibição estão traduzidas.", diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..a285e05a853 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Copiar", + "copyMarkerMessage": "Copiar Mensagem" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..b5d8f47647e --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Total {0} Problemas", + "filteredProblems": "Mostrando {0} de {1} Problemas" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..4af5054b913 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Problemas", + "tooltip.1": "1 problema neste arquivo", + "tooltip.N": "{0} problemas neste arquivo" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..9997fe77588 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Exibir", + "problems.view.toggle.label": "Esconder/exibir Problemas (Erros, Avisos, Infos)", + "problems.view.focus.label": "Focar Problemas (Erros, Avisos, Infos)", + "problems.panel.configuration.title": "Visualização de Problemas", + "problems.panel.configuration.autoreveal": "Controla se a visaulização de problemas evela os arquivos automaticamente ao abri-los", + "markers.panel.title.problems": "Problemas", + "markers.panel.aria.label.problems.tree": "Problemas agrupados por arquivos", + "markers.panel.no.problems.build": "Nenhum problema foi detectado na área de trabalho até agora.", + "markers.panel.no.problems.filters": "Nenhum resultado encontrado com os critérios de filtro fornecidos", + "markers.panel.action.filter": "Problemas de Filtro", + "markers.panel.filter.placeholder": "Filtrar por tipo ou texto", + "markers.panel.filter.errors": "erros", + "markers.panel.filter.warnings": "avisos", + "markers.panel.filter.infos": "informações", + "markers.panel.single.error.label": "1 Erro", + "markers.panel.multiple.errors.label": "{0} Erros", + "markers.panel.single.warning.label": "1 Aviso", + "markers.panel.multiple.warnings.label": "{0} Avisos", + "markers.panel.single.info.label": "1 Informação", + "markers.panel.multiple.infos.label": "{0} Informações", + "markers.panel.single.unknown.label": "1 Desconhecido", + "markers.panel.multiple.unknowns.label": "{0} Desconhecidos", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} com {1} problemas", + "errors.warnings.show.label": "Mostrar Erros e Avisos" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/output/browser/outputActions.i18n.json index c8466a5d8cf..71d77d2ad9b 100644 --- a/i18n/ptb/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Alternar Saída", "clearOutput": "Limpar saída", "toggleOutputScrollLock": "Alternar Scroll Lock de Saída", - "switchToOutput.label": "Mudar para Saída" + "switchToOutput.label": "Mudar para Saída", + "openInLogViewer": "Abrir Arquivo de Log" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index a7ff00a96e8..c8a848c68bd 100644 --- a/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -9,7 +9,6 @@ "scm providers": "Provedores de Controle de Código Fonte", "hideRepository": "Ocultar", "installAdditionalSCMProviders": "Instalar provedores de SCM adicionais...", - "no open repo": "Não existem provedores controle de código fonte ativos.", "source control": "Controle de código-fonte", "viewletTitle": "{0}: {1}" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 31c522acb51..ddfd526d730 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Mostrar a Próxima Busca Incluindo Padrões", "previousSearchIncludePattern": "Mostrar a Busca Anterior Incluindo Padrões", - "nextSearchExcludePattern": "Mostrar a Próxima Busca Excluindo Padrões", - "previousSearchExcludePattern": "Mostrar a Busca Anterior Excluindo Padrões", "nextSearchTerm": "Mostrar o Próximo Termo de Pesquisa", "previousSearchTerm": "Mostrar Termo de Pesquisa Anterior", "showSearchViewlet": "Mostrar Busca", diff --git a/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json index 5f837d2145a..213e59f2810 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,7 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Alternar Detalhes da Pesquisa", - "searchScope.includes": "arquivos a serem incluídos", - "label.includes": "Pesquisa Padrões de Inclusão", - "searchScope.excludes": "arquivos a serem excluídos", - "label.excludes": "Pesquisa de Padrões de Exclusão", + "searchIncludeExclude.label": "arquivos para incluir/excluir", "replaceAll.confirmation.title": "Substituir Tudo", "replaceAll.confirm.button": "&&Substituir", "replaceAll.occurrence.file.message": "Substituída {0} ocorrência no arquivo {1} com '{2}'.", diff --git a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 36d63910548..7cef3aef4bd 100644 --- a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "Atribui a tarefa para nenhum grupo", "JsonSchema.tasks.group": "Define a que grupo de execução desta tarefa pertence. Suporta \"build\" para adicioná-lo ao grupo de compilação e \"test\" para adicioná-lo ao grupo de teste.", "JsonSchema.tasks.type": "Define quando a tarefa é executada como um processo ou como um comando dentro do shell.", + "JsonSchema.command": "O comando a ser executado. Pode ser um programa externo ou um comando shell.", + "JsonSchema.tasks.args": "Argumentos passados para o comando quando esta tarefa é invocada.", "JsonSchema.tasks.label": "O rótulo da tarefa na interface do usuário.", "JsonSchema.version": "O número da versão do config.", "JsonSchema.tasks.identifier": "Um identificador definido pelo usuário para fazer referência a tarefa em launch.json ou uma cláusula dependsOn.", diff --git a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 98ac71f39a9..739fd01f6dd 100644 --- a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,11 @@ ], "tasksCategory": "Tarefas", "ConfigureTaskRunnerAction.label": "Configurar a tarefa", - "problems": "Problemas", + "totalErrors": "{0} Erros", + "totalWarnings": "{0} Avisos", + "totalInfos": "{0} Informações", "building": "Compilando...", - "manyMarkers": "99+", + "manyProblems": "10K+", "runningTasks": "Mostrar tarefas em execução", "tasks": "Tarefas", "TaskSystem.noHotSwap": "Alterar o mecanismo de execução da tarefa com uma tarefa ativa executando exige que a janela seja recarregada", diff --git a/i18n/ptb/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/ptb/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 910bec85134..2b141ba44a3 100644 --- a/i18n/ptb/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Erro: a configuração de tarefa '{0}' não possui a propriedade obrigatória '{1}'. A configuração de tarefa será ignorada.", "ConfigurationParser.notCustom": "Erro: tarefas não está declarada como uma tarefa personalizada. A configuração será ignorada.\n{0}\n", "ConfigurationParser.noTaskName": "Erro: uma tarefa deve fornecer uma propriedade de rótulo. A tarefa será ignorada.\n{0}\n", - "taskConfiguration.shellArgs": "Aviso: a tarefa '{0}' é um comando shell e um dos seus argumentos pode ter espaços sem escape. Para garantir a citação da linha de comando correta por favor mesclar args ao comando.", "taskConfiguration.noCommandOrDependsOn": "Erro: a tarefa '{0}' não especifica nem um comando nem uma propriedade dependsOn. A tarefa será ignorada. Sua definição é: \n{1}", "taskConfiguration.noCommand": "Erro: a tarefa '{0}' não define um comando. A tarefa será ignorada. Sua definição é: {1}", "TaskParse.noOsSpecificGlobalTasks": "Tarefa versão 2.0.0 não oferece suporte a tarefas globais específicas do sistema operacional. Converta-as em uma tarefa com um comando específico do sistema operacional. Tarefas afetadas:\n{0}" diff --git a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 725f78f2307..dbdfa88d94b 100644 --- a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Copiar", + "split": "Dividir", "paste": "Colar", "selectAll": "Selecionar Tudo", - "clear": "Limpar", - "split": "Dividir" + "clear": "Limpar" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..4290f9be0ba --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Notas da Versão: {0}", + "unassigned": "Não atribuído" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 5847a090e0c..6b7eb5e33c4 100644 --- a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Mais tarde", - "unassigned": "Não atribuído", "releaseNotes": "Notas da Versão", "showReleaseNotes": "Mostrar Notas da Versão", "read the release notes": "Bem-vindo a {0} v{1}! Gostaria de ler as Notas da Versão?", diff --git a/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..4498984aac3 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "editor webview" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/ptb/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..960ae0c5c98 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Ler Mais" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/ptb/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/ptb/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..7fbcc0a8081 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Sim", + "cancelButton": "Cancelar" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 45f49e07241..36971b11ff8 100644 --- a/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Não mostrar novamente", "netVersionError": "O Microsoft .NET Framework 4.5 é necessário. Por favor siga o link para instalá-lo.", "learnMore": "Instruções", - "enospcError": "{0} está ficando sem tratamento de arquivos. Por favor, siga o link de instruções para resolver esse problema.", "binFailed": "Falha ao mover '{0}' para a lixeira", "trashFailed": "Falha em mover '{0}' para a lixeira" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/ptb/src/vs/workbench/services/files/node/fileService.i18n.json index 37fbb011a3d..29bfbb0d040 100644 --- a/i18n/ptb/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Recurso de arquivo inválido ({0})", "fileIsDirectoryError": "Arquivo é um diretório", "fileNotModifiedError": "Arquivo não modificado desde", - "fileTooLargeForHeapError": "O tamanho do arquivo excede o limite de memória da janela. Por favor, tente executar o codigo -max-memory=NOVOVALOR", "fileTooLargeError": "Arquivo muito grande para abrir", "fileNotFoundError": "Arquivo não encontrado ({0})", "fileBinaryError": "Arquivo parece ser binário e não pode ser aberto como texto", diff --git a/i18n/ptb/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/ptb/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..10f4afca07b 100644 --- a/i18n/ptb/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Cancelar" } \ No newline at end of file diff --git a/i18n/rus/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/rus/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..01ee817cdcd --- /dev/null +++ b/i18n/rus/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "Языковой сервер CSS", + "folding.start": "Начало сворачиваемого региона", + "folding.end": "Окончание сворачиваемого региона" +} \ No newline at end of file diff --git a/i18n/rus/extensions/css-language-features/package.i18n.json b/i18n/rus/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..c5c8a90070b --- /dev/null +++ b/i18n/rus/extensions/css-language-features/package.i18n.json @@ -0,0 +1,80 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Возможности языка CSS", + "description": "Предоставляет широкую поддержку языка для файлов CSS, LESS и SCSS.", + "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", + "css.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", + "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.trace.server.desc": "Отслеживает обмен данными между VS Code и языковым сервером CSS.", + "css.validate.title": "Управляет проверкой CSS и серьезностью проблем.", + "css.validate.desc": "Включает или отключает все проверки", + "less.title": "LESS", + "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", + "less.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", + "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.title": "Управляет проверкой LESS и уровнями серьезности проблем. ", + "less.validate.desc": "Включает или отключает все проверки", + "scss.title": "SCSS (SASS)", + "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", + "scss.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", + "scss.lint.propertyIgnoredDueToDisplay.desc": "Свойство проигнорировано из-за значения свойства display. Например, при \"display: inline\" свойства width, height, margin-top, margin-bottom и float не работают", + "scss.lint.universalSelector.desc": "Универсальный селектор (*) работает медленно", + "scss.lint.unknownProperties.desc": "Неизвестное свойство.", + "scss.lint.unknownVendorSpecificProperties.desc": "Неизвестное свойство поставщика.", + "scss.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство", + "scss.lint.zeroUnits.desc": "Для нуля не требуется единица измерения", + "scss.validate.title": "Управляет проверкой SCSS и уровнями серьезности проблем.", + "scss.validate.desc": "Включает или отключает все проверки", + "less.colorDecorators.enable.desc": "Включает или отключает декораторы цвета", + "scss.colorDecorators.enable.desc": "Включает или отключает декораторы цвета", + "css.colorDecorators.enable.desc": "Включает или отключает декораторы цвета", + "css.colorDecorators.enable.deprecationMessage": "Параметр \"css.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". ", + "scss.colorDecorators.enable.deprecationMessage": "Параметр \"scss.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". ", + "less.colorDecorators.enable.deprecationMessage": "Параметр \"less.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". " +} \ 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 a4d164c6122..35229bd6699 100644 --- a/i18n/rus/extensions/css/package.i18n.json +++ b/i18n/rus/extensions/css/package.i18n.json @@ -5,77 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Возможности языка CSS", - "description": "Предоставляет широкую поддержку языка для файлов CSS, LESS и SCSS.", - "css.title": "CSS", - "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", - "css.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", - "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.trace.server.desc": "Отслеживает обмен данными между VS Code и языковым сервером CSS.", - "css.validate.title": "Управляет проверкой CSS и серьезностью проблем.", - "css.validate.desc": "Включает или отключает все проверки", - "less.title": "LESS", - "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", - "less.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", - "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.title": "Управляет проверкой LESS и уровнями серьезности проблем. ", - "less.validate.desc": "Включает или отключает все проверки", - "scss.title": "SCSS (SASS)", - "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.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", - "scss.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", - "scss.lint.propertyIgnoredDueToDisplay.desc": "Свойство проигнорировано из-за значения свойства display. Например, при \"display: inline\" свойства width, height, margin-top, margin-bottom и float не работают", - "scss.lint.universalSelector.desc": "Универсальный селектор (*) работает медленно", - "scss.lint.unknownProperties.desc": "Неизвестное свойство.", - "scss.lint.unknownVendorSpecificProperties.desc": "Неизвестное свойство поставщика.", - "scss.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство", - "scss.lint.zeroUnits.desc": "Для нуля не требуется единица измерения", - "scss.validate.title": "Управляет проверкой SCSS и уровнями серьезности проблем.", - "scss.validate.desc": "Включает или отключает все проверки", - "less.colorDecorators.enable.desc": "Включает или отключает декораторы цвета.", - "scss.colorDecorators.enable.desc": "Включает или отключает декораторы цвета.", - "css.colorDecorators.enable.desc": "Включает или отключает декораторы цвета.", - "css.colorDecorators.enable.deprecationMessage": "Параметр \"css.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". ", - "scss.colorDecorators.enable.deprecationMessage": "Параметр \"scss.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". ", - "less.colorDecorators.enable.deprecationMessage": "Параметр \"less.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\". " + ] } \ No newline at end of file diff --git a/i18n/rus/extensions/git/out/commands.i18n.json b/i18n/rus/extensions/git/out/commands.i18n.json index ef93bfa4e37..5e347fa36d0 100644 --- a/i18n/rus/extensions/git/out/commands.i18n.json +++ b/i18n/rus/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "ОК", "push with tags success": "Файлы с тегами успешно отправлены.", "pick remote": "Выберите удаленный сервер, на котором нужно опубликовать ветвь \"{0}\":", - "sync is unpredictable": "Это действие отправляет фиксации в \"{0}\" и извлекает их из этого расположения.", "never again": "ОК, больше не показывать", "no remotes to publish": "Для вашего репозитория не настроены удаленные репозитории для публикации.", "no changes stash": "Отсутствуют изменения, которые необходимо спрятать.", diff --git a/i18n/rus/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/rus/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..113482bb267 --- /dev/null +++ b/i18n/rus/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "Языковой сервер HTML", + "folding.start": "Начало сворачиваемого региона", + "folding.end": "Окончание сворачиваемого региона" +} \ No newline at end of file diff --git a/i18n/rus/extensions/html-language-features/package.i18n.json b/i18n/rus/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..ffedf2c26a3 --- /dev/null +++ b/i18n/rus/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Возможности языка HTML", + "description": "Предоставляет широкую поддержку языка для файлов HTML, Razor и Handlebar.", + "html.format.enable.desc": "Включить/отключить модуль форматирования HTML по умолчанию", + "html.format.wrapLineLength.desc": "Максимальное число символов на строку (0 — отключить).", + "html.format.unformatted.desc": "Список тегов, которые не следует повторно форматировать, с разделителями-запятыми. Значение \"NULL\" по умолчанию означает все теги, перечисленные на странице https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.contentUnformatted.desc": "Разделенный запятыми список тегов, в которых формат содержимого не должен изменяться. Значение null задается по умолчанию для тега pre.", + "html.format.indentInnerHtml.desc": "Отступ в разделах и .", + "html.format.preserveNewLines.desc": "Следует ли сохранять разрывы строк перед элементами. Работает только перед элементами, а не внутри тегов или для текста.", + "html.format.maxPreserveNewLines.desc": "Максимальное число разрывов строк для сохранения в блоке. Чтобы указать неограниченное число строк, используйте \"null\".", + "html.format.indentHandlebars.desc": "Формат и отступ {{#foo}} и {{/foo}}.", + "html.format.endWithNewline.desc": "Завершение символом новой строки.", + "html.format.extraLiners.desc": "Список тегов с разделителями-запятыми и дополнительными новыми строками между ними. Значение \"null\" по умолчанию ставится для \"head, body, /html\".", + "html.format.wrapAttributes.desc": "Перенос атрибутов.", + "html.format.wrapAttributes.auto": "Перенос атрибутов только при превышении длины строки.", + "html.format.wrapAttributes.force": "Перенос всех атрибутов, кроме первого.", + "html.format.wrapAttributes.forcealign": "Перенос всех атрибутов, кроме первого, и сохранение выравнивания.", + "html.format.wrapAttributes.forcemultiline": "Перенос всех атрибутов.", + "html.suggest.angular1.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги и свойства Angular 1.", + "html.suggest.ionic.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения Ionic.", + "html.suggest.html5.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения HTML5.", + "html.trace.server.desc": "Отслеживает обмен данными между VS Code и языковым сервером HTML. ", + "html.validate.scripts": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные сценарии.", + "html.validate.styles": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные стили.", + "html.autoClosingTags": "Включить или отключить автоматическое закрытие тегов HTML. " +} \ 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 97846bbda84..35229bd6699 100644 --- a/i18n/rus/extensions/html/package.i18n.json +++ b/i18n/rus/extensions/html/package.i18n.json @@ -5,30 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Возможности языка HTML", - "description": "Предоставляет широкую поддержку языка для файлов HTML, Razor и Handlebar.", - "html.format.enable.desc": "Включить/отключить модуль форматирования HTML по умолчанию", - "html.format.wrapLineLength.desc": "Максимальное число символов на строку (0 — отключить).", - "html.format.unformatted.desc": "Список тегов, которые не следует повторно форматировать, с разделителями-запятыми. Значение \"NULL\" по умолчанию означает все теги, перечисленные на странице https://www.w3.org/TR/html5/dom.html#phrasing-content.", - "html.format.contentUnformatted.desc": "Разделенный запятыми список тегов, в которых формат содержимого не должен изменяться. Значение null задается по умолчанию для тега pre.", - "html.format.indentInnerHtml.desc": "Отступ в разделах и .", - "html.format.preserveNewLines.desc": "Следует ли сохранять разрывы строк перед элементами. Работает только перед элементами, а не внутри тегов или для текста.", - "html.format.maxPreserveNewLines.desc": "Максимальное число разрывов строк для сохранения в блоке. Чтобы указать неограниченное число строк, используйте \"null\".", - "html.format.indentHandlebars.desc": "Формат и отступ {{#foo}} и {{/foo}}.", - "html.format.endWithNewline.desc": "Завершение символом новой строки.", - "html.format.extraLiners.desc": "Список тегов с разделителями-запятыми и дополнительными новыми строками между ними. Значение \"null\" по умолчанию ставится для \"head, body, /html\".", - "html.format.wrapAttributes.desc": "Перенос атрибутов.", - "html.format.wrapAttributes.auto": "Перенос атрибутов только при превышении длины строки.", - "html.format.wrapAttributes.force": "Перенос всех атрибутов, кроме первого.", - "html.format.wrapAttributes.forcealign": "Перенос всех атрибутов, кроме первого, и сохранение выравнивания.", - "html.format.wrapAttributes.forcemultiline": "Перенос всех атрибутов.", - "html.suggest.angular1.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги и свойства Angular 1.", - "html.suggest.ionic.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения Ionic.", - "html.suggest.html5.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения HTML5.", - "html.trace.server.desc": "Отслеживает обмен данными между VS Code и языковым сервером HTML. ", - "html.validate.scripts": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные сценарии.", - "html.validate.styles": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные стили.", - "html.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса.", - "html.autoClosingTags": "Включить или отключить автоматическое закрытие тегов HTML. " + ] } \ No newline at end of file diff --git a/i18n/rus/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/rus/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..ae46a81e4e9 --- /dev/null +++ b/i18n/rus/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "Языковой сервер JSON" +} \ No newline at end of file diff --git a/i18n/rus/extensions/json-language-features/package.i18n.json b/i18n/rus/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..762d0d1b54d --- /dev/null +++ b/i18n/rus/extensions/json-language-features/package.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "description": "Предоставляет широкую поддержку языка для файлов JSON.", + "json.schemas.desc": "Связь схем с JSON-файлами в текущем проекте", + "json.schemas.url.desc": "URL-адрес схемы или относительный путь к ней в текущем каталоге", + "json.schemas.fileMatch.desc": "Массив шаблонов файлов, с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", + "json.schemas.fileMatch.item.desc": "Шаблон файла, который может содержать \"*\" и с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", + "json.schemas.schema.desc": "Определение схемы для указанного URL-адреса. Схему необходимо указать только для того, чтобы не обращаться по URL-адресу схемы.", + "json.format.enable.desc": "Включение или отключение модуля форматирования JSON по умолчанию (требуется перезагрузка)", + "json.tracing.desc": "Отслеживает связь между VS Code и языковым сервером JSON.", + "json.colorDecorators.enable.desc": "Включает или отключает декораторы цвета", + "json.colorDecorators.enable.deprecationMessage": "Параметр \"json.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\"." +} \ 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 5b4b6d24cfd..35229bd6699 100644 --- a/i18n/rus/extensions/json/package.i18n.json +++ b/i18n/rus/extensions/json/package.i18n.json @@ -5,17 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "displayName": "Возможности языка JSON", - "description": "Предоставляет широкую поддержку языка для файлов JSON.", - "json.schemas.desc": "Связь схем с JSON-файлами в текущем проекте", - "json.schemas.url.desc": "URL-адрес схемы или относительный путь к ней в текущем каталоге", - "json.schemas.fileMatch.desc": "Массив шаблонов файлов, с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", - "json.schemas.fileMatch.item.desc": "Шаблон файла, который может содержать \"*\" и с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", - "json.schemas.schema.desc": "Определение схемы для указанного URL-адреса. Схему необходимо указать только для того, чтобы не обращаться по URL-адресу схемы.", - "json.format.enable.desc": "Включение или отключение модуля форматирования JSON по умолчанию (требуется перезагрузка)", - "json.tracing.desc": "Отслеживает связь между VS Code и языковым сервером JSON.", - "json.colorDecorators.enable.desc": "Включает или отключает декораторы цвета.", - "json.colorDecorators.enable.deprecationMessage": "Параметр \"json.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\".", - "json.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса." + ] } \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/rus/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..b4a71726277 --- /dev/null +++ b/i18n/rus/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "Не удалось загрузить 'markdown.styles': {0}" +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..e3a2c915436 --- /dev/null +++ b/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Предварительный просмотр] {0}" +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/rus/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..01fb924a326 --- /dev/null +++ b/i18n/rus/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "Некоторое содержимое в этом документе было отключено", + "preview.securityMessage.title": "В предварительном просмотре Markdown было отключено потенциально опасное или ненадежное содержимое. Чтобы разрешить ненадежное содержимое или включить сценарии, измените параметры безопасности предварительного просмотра Markdown.", + "preview.securityMessage.label": "Предупреждение безопасности об отключении содержимого" +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/security.i18n.json b/i18n/rus/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..0cab268e7a8 --- /dev/null +++ b/i18n/rus/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.description": "Загружать только безопасное содержимое", + "insecureContent.title": "Разрешить небезопасное содержимое", + "insecureContent.description": "Включить загрузку содержимого через HTTP", + "disable.title": "Отключить", + "disable.description": "Разрешить все содержимое и выполнение сценариев. Не рекомендуется", + "moreInfo.title": "Дополнительные сведения", + "enableSecurityWarning.title": "Включить предварительный просмотр предупреждений системы безопасности в этой рабочей области", + "disableSecurityWarning.title": "Отключить предварительный просмотр предупреждений системы безопасности в этой рабочей области", + "toggleSecurityWarning.description": "Не влияет на уровень безопасности содержимого", + "preview.showPreviewSecuritySelector.title": "Установите параметры безопасности для предварительного просмотра Markdown в этой рабочей области" +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/package.i18n.json b/i18n/rus/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..021c2c0fa8c --- /dev/null +++ b/i18n/rus/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,31 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "description": "Предоставляет широкую поддержку языка для Markdown.", + "markdown.preview.breaks.desc": "Определяет, как переносы строк отображаются в области предварительного просмотра файла Markdown. Если установить этот параметр в значение 'true',
будут создаваться для каждой новой строки.", + "markdown.preview.linkify": "Включить или отключить преобразование текста в URL для предварительного просмотра Markdown.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Двойной щелчок в области предварительного просмотра Markdown в редакторе.", + "markdown.preview.fontFamily.desc": "Определяет семейство шрифтов, используемое в области предварительного просмотра файла Markdown.", + "markdown.preview.fontSize.desc": "Определяет размер шрифта (в пикселях), используемый в области предварительного просмотра файла Markdown.", + "markdown.preview.lineHeight.desc": "Определяет высоту строки, используемую в области предварительного просмотра файла Markdown. Это значение задается относительно размера шрифта.", + "markdown.preview.markEditorSelection.desc": "Выделение выбранного в текущем редакторе в предпросмотре Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Обновить представление редактора при прокрутке предварительного просмотра Markdown.", + "markdown.preview.scrollPreviewWithEditor.desc": "Обновить представление предварительного просмотра при прокрутке редактора Markdown.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Устаревшая функция] Прокрутка предварительного просмотра Markdown до выбранной строки в редакторе.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Этот параметр был заменен на 'markdown.preview.scrollPreviewWithEditor' и больше не используется.", + "markdown.preview.title": "Открыть область предварительного просмотра", + "markdown.previewFrontMatter.dec": "Определяет обработку титульных листов YAML в области предварительного просмотра файла Markdown. Значение \"скрыть\" удаляет титульные листы. В противном случае титульные листы обрабатываются как содержимое файла Markdown.", + "markdown.previewSide.title": "Открыть область предварительного просмотра сбоку", + "markdown.showLockedPreviewToSide.title": "Открыть заблокированную область предварительного просмотра сбоку", + "markdown.showSource.title": "Показать источник", + "markdown.styles.dec": "Список URL-адресов или локальных путей к таблицам стилей CSS, используемых из области предварительного просмотра файла Markdown. Относительные пути интерпретируются относительно папки, открытой в проводнике. Если папка не открыта, они интерпретируются относительно расположения файла Markdown. Все символы '\\' должны записываться в виде '\\\\'.", + "markdown.showPreviewSecuritySelector.title": "Изменить параметры безопасности для предварительного просмотра", + "markdown.trace.desc": "Включить ведение журнала отладки для расширения Markdown.", + "markdown.preview.refresh.title": "Обновить область предварительного просмотра", + "markdown.preview.toggleLock.title": "Включить/отключить блокировку области предварительного просмотра" +} \ No newline at end of file diff --git a/i18n/rus/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/rus/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..5696440e52e --- /dev/null +++ b/i18n/rus/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "Разрешить выполнять {0} (определяется как параметр рабочей области) для обработки PHP-файлов через lint?", + "php.yes": "Разрешить", + "php.no": "Запретить", + "wrongExecutable": "Не удается проверить, так как {0} не является допустимым исполняемым PHP-файлом. Используйте параметр php.validate.executablePath, чтобы настроить исполняемый PHP-файл.", + "noExecutable": "Не удается проверить, так как не задан исполняемый PHP-файл. Используйте параметр php.validate.executablePath, чтобы настроить исполняемый PHP-файл.", + "unknownReason": "Не удалось запустить PHP-файл, используя путь {0}. Причина неизвестна." +} \ No newline at end of file diff --git a/i18n/rus/extensions/php-language-features/package.i18n.json b/i18n/rus/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..e520e862551 --- /dev/null +++ b/i18n/rus/extensions/php-language-features/package.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Указывает, включены ли встроенные языковые предложения для PHP. Поддержка предлагает глобальные значения и переменные PHP.", + "configuration.validate.enable": "Включение или отключение встроенной проверки PHP.", + "configuration.validate.executablePath": "Указывает на исполняемый файл PHP.", + "configuration.validate.run": "Запускается ли анализатор кода при сохранении или при печати.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)" +} \ No newline at end of file diff --git a/i18n/rus/extensions/php/package.i18n.json b/i18n/rus/extensions/php/package.i18n.json index c35bde05b3a..5e16df11f06 100644 --- a/i18n/rus/extensions/php/package.i18n.json +++ b/i18n/rus/extensions/php/package.i18n.json @@ -6,13 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Указывает, включены ли встроенные языковые предложения для PHP. Поддержка предлагает глобальные значения и переменные PHP.", - "configuration.validate.enable": "Включение или отключение встроенной проверки PHP.", - "configuration.validate.executablePath": "Указывает на исполняемый файл PHP.", - "configuration.validate.run": "Запускается ли анализатор кода при сохранении или при печати.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)", - "displayName": "Функции языка PHP", - "description": "Предоставляет IntelliSense, функции жанров и основные функции языка для файлов PHP." + "displayName": "Функции языка PHP" } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 2c957229e71..36bef0368cd 100644 --- a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Результаты не найдены", "settingsSearchIssue": "Проблема с параметрами поиска", "bugReporter": "Отчет об ошибках", - "performanceIssue": "Проблема с производительностью", "featureRequest": "Запрос функции", + "performanceIssue": "Проблема с производительностью", "stepsToReproduce": "Действия для воспроизведения проблемы", "bugDescription": "Опишите действия для точного воспроизведения проблемы. Включите фактические и ожидаемые результаты. Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", "performanceIssueDesciption": "Когда возникла эта проблема с производительностью? Происходит ли она при запуске или после указанной серии действий? Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", diff --git a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json index 4e38fa1d925..44453977d44 100644 --- a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,6 @@ "warningBorder": "Цвет границ волнистой линии для выделения предупреждений в редакторе.", "infoForeground": "Цвет волнистой линии для выделения информационных сообщений в редакторе.", "infoBorder": "Цвет границ волнистой линии для выделения информационных сообщений в редакторе. ", - "overviewRulerRangeHighlight": "Цвет метки линейки в окне просмотра для выделений диапазонов.", "overviewRuleError": "Цвет метки линейки в окне просмотра для ошибок.", "overviewRuleWarning": "Цвет метки линейки в окне просмотра для предупреждений.", "overviewRuleInfo": "Цвет метки линейки в окне просмотра для информационных сообщений." diff --git a/i18n/rus/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/rus/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 3bb2176af07..952cf41b7f5 100644 --- a/i18n/rus/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Перейти к Следующей Проблеме (Ошибке, Предупреждению, Информации)", - "markerAction.previous.label": "Перейти к Предыдущей Проблеме (Ошибке, Предупреждению, Информации)", - "editorMarkerNavigationError": "Цвет ошибки в мини-приложении навигации по меткам редактора.", - "editorMarkerNavigationWarning": "Цвет предупреждения в мини-приложении навигации по меткам редактора.", - "editorMarkerNavigationInfo": "Цвет информационного сообщения в мини-приложении навигации по меткам редактора.", - "editorMarkerNavigationBackground": "Фон мини-приложения навигации по меткам редактора." + "markerAction.previous.label": "Перейти к Предыдущей Проблеме (Ошибке, Предупреждению, Информации)" } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/rus/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..696263e5f65 --- /dev/null +++ b/i18n/rus/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Цвет ошибки в мини-приложении навигации по меткам редактора.", + "editorMarkerNavigationWarning": "Цвет предупреждения в мини-приложении навигации по меткам редактора.", + "editorMarkerNavigationInfo": "Цвет информационного сообщения в мини-приложении навигации по меткам редактора.", + "editorMarkerNavigationBackground": "Фон мини-приложения навигации по меткам редактора." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 1d513afb117..89e24cb0c6f 100644 --- a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,6 @@ "wordHighlightStrong": "Фон символа при доступе для записи, например при записи переменной. Цвет должен быть прозрачным чтобы не перекрывать основных знаков отличия.", "wordHighlightBorder": "Цвет границы символа при доступе на чтение, например, при считывании переменной.", "wordHighlightStrongBorder": "Цвет границы символа при доступе на запись, например, при записи переменной. ", - "overviewRulerWordHighlightForeground": "Цвет метки линейки в окне просмотра для выделений символов.", - "overviewRulerWordHighlightStrongForeground": "Цвет метки линейки в окне просмотра для выделений символов, доступных для записи. ", "wordHighlight.next.label": "Перейти к следующему выделению символов", "wordHighlight.previous.label": "Перейти к предыдущему выделению символов" } \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/rus/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..cd5317488f4 --- /dev/null +++ b/i18n/rus/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 дополнительный файл не показан", + "moreFiles": "...не показано дополнительных файлов: {0}" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/rus/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..a9e4b3696ae --- /dev/null +++ b/i18n/rus/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "Отмена" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 2d37e3e2376..908048ebb5a 100644 --- a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,15 +14,12 @@ "errorInstallingDependencies": "Ошибка при установке зависимостей. {0}", "MarketPlaceDisabled": "Marketplace не включен", "removeError": "Ошибка при удалении расширения: {0}. Закройте и снова откройте VS Code, затем повторите попытку.", - "Not Market place extension": "Повторно устанавливать можно только расширения из Marketplace", "notFoundCompatible": "Невозможно установить '{0}'; нет версии, совместимой с VS Code '{1}'.", "malicious extension": "Не удается установить расширение, так как оно помечено как проблемное.", "notFoundCompatibleDependency": "Не удается выполнить установку, так как не найдено зависимое расширение '{0}', совместимое с текущей версией VS Code '{1}'. ", "quitCode": "Невозможно установить расширение. Пожалуйста, выйдите и зайдите в VS Code перед переустановкой.", "exitCode": "Невозможно установить расширение. Пожалуйста, выйдите и зайдите в VS Code перед переустановкой.", "uninstallDependeciesConfirmation": "Вы хотите удалить \"{0}\" отдельно или вместе с зависимостями?", - "uninstallOnly": "Только", - "uninstallAll": "Все", "uninstallConfirmation": "Вы действительно хотите удалить \"{0}\"?", "ok": "ОК", "singleDependentError": "Не удается удалить расширение \"{0}\". От него зависит расширение \"{1}\".", diff --git a/i18n/rus/src/vs/platform/markers/common/markers.i18n.json b/i18n/rus/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..eaeabe67095 --- /dev/null +++ b/i18n/rus/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Ошибка", + "sev.warning": "Предупреждение", + "sev.info": "Сведения" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json index 7e411db1da2..4fd13e76a7a 100644 --- a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,7 +92,5 @@ "mergeBorder": "Цвет границы заголовков и разделителя во внутренних конфликтах слияния.", "overviewRulerCurrentContentForeground": "Цвет переднего плана линейки текущего окна во внутренних конфликтах слияния.", "overviewRulerIncomingContentForeground": "Цвет переднего плана линейки входящего окна во внутренних конфликтах слияния.", - "overviewRulerCommonContentForeground": "Цвет переднего плана для обзорной линейки для общего предка во внутренних конфликтах слияния. ", - "overviewRulerFindMatchForeground": "Цвет метки линейки в окне просмотра для результатов поиска.", - "overviewRulerSelectionHighlightForeground": "Цвет метки линейки в окне просмотра для выделения." + "overviewRulerCommonContentForeground": "Цвет переднего плана для обзорной линейки для общего предка во внутренних конфликтах слияния. " } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index 67fe147e873..99aca234c7b 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Фокус на следующую группу", "openToSide": "Открыть сбоку", "closeEditor": "Закрыть редактор", + "closeOneEditor": "Закрыть", "revertAndCloseActiveEditor": "Отменить изменения и закрыть редактор", "closeEditorsToTheLeft": "Закрыть редакторы слева", "closeAllEditors": "Закрыть все редакторы", diff --git a/i18n/rus/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 1a90a14ced0..9d49f9d5c3c 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Закрыть", "araLabelEditorActions": "Действия редактора" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json index cf76b9c9591..7a4ee2d7def 100644 --- a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Окно", "window.openFilesInNewWindow.on": "Файлы будут открываться в новом окне.", "window.openFilesInNewWindow.off": "Файлы будут открываться в окне с открытой папкой файлов или последнем активном окне.", - "window.openFilesInNewWindow.default": "Файлы будут открываться в окне с открытой папкой файлов или последнем активном окне, если они не открываются из панели Dock или системы поиска (только macOS).", - "openFilesInNewWindow": "Определяет, будут ли файлы открываться в новом окне.\n- default: файлы будут открываться в окне с открытой папкой файлов или последнем активном окне, если они не открываются из панели Dock или системы поиска (только macOS).\n- on: файлы будут открываться в новом окне.\n- off: файлы будут открываться в окне с открытой папкой файлов или последнем активном окне.\nОбратите внимание, что возможны случаи, когда этот параметр игнорируется (например, при использовании параметра командной строки -new-window или -reuse-window).", "window.openFoldersInNewWindow.on": "Папки будут открываться в новом окне.", "window.openFoldersInNewWindow.off": "Папки будут заменять последнее активное окно.", "window.openFoldersInNewWindow.default": "Папки будут открываться в новом окне, если папка не выбрана в приложении (например, в меню \"Файл\").", @@ -58,7 +56,6 @@ "restoreWindows": "Управляет повторным открытием окон после перезапуска. Выберите 'none', чтобы всегда начинать с пустой рабочей области; 'one', чтобы открыть последнее окно, с которым вы работали; 'folders', чтобы открыть все окна с открытыми папками, и 'all', чтобы открыть все окна последнего сеанса.", "restoreFullscreen": "Определяет, должно ли окно восстанавливаться в полноэкранном режиме, если оно было закрыто в полноэкранном режиме.", "zoomLevel": "Настройте масштаб окна. Исходный размер равен 0. Увеличение или уменьшение значения на 1 означает увеличение или уменьшение окна на 20 %. Чтобы более точно задать масштаб, можно также ввести десятичное число.", - "title": "Определяет заголовок окна в зависимости от активного редактора. Подстановка переменных выполняется на основе контекста:\n${activeEditorShort}: имя файла (например, myFile.txt)\n${activeEditorMedium}: путь к файлу относительно папки рабочей области (например, myFolder/myFile.txt)\n${activeEditorLong}: полный путь к файлу (например, /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: имя папки рабочей области, в которой находится файл (например, myFolder)\n${folderPath}: путь к папке рабочей области, в которой находится файл (например, /Users/Development/myFolder)\n${rootName}: имя рабочей области (например, myFolder или myWorkspace)\n${rootPath}: путь к папке рабочей области (например, /Users/Development/myWorkspace)\n${appName}: например, VS Code\n${dirty}: индикатор изменения файла в активном редакторе\n${separator}: условный разделитель (\" - \"), который отображается, только если окружен переменными со значениями ", "window.newWindowDimensions.default": "Открывать новые окна в центре экрана.", "window.newWindowDimensions.inherit": "Открывать новые окна того же размера, что и последнее активное окно.", "window.newWindowDimensions.maximized": "Открывать новые окна в развернутом состоянии.", 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 db465cf62cd..69f67e96d48 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 @@ -24,16 +24,12 @@ "restartFrame": "Перезапустить кадр", "removeBreakpoint": "Удалить точку останова", "removeAllBreakpoints": "Удалить все точки останова", - "enableBreakpoint": "Включить точку останова", - "disableBreakpoint": "Выключить точку останова", "enableAllBreakpoints": "Включить все точки останова", "disableAllBreakpoints": "Отключить все точки останова", "activateBreakpoints": "Активировать точки останова", "deactivateBreakpoints": "Отключить точки останова", "reapplyAllBreakpoints": "Повторно применить все точки останова", "addFunctionBreakpoint": "Добавить точку останова в функции", - "addConditionalBreakpoint": "Добавить условную точку останова…", - "editConditionalBreakpoint": "Изменить точку останова…", "setValue": "Задать значение", "addWatchExpression": "Добавить выражение", "editWatchExpression": "Изменить выражение", diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..93dc323939d --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "Прервать при определенном количестве обращений. Нажмите клавишу ВВОД, чтобы принять, или ESC для отмены.", + "breakpointWidgetExpressionPlaceholder": "Прервать выполнение, если выражение равно true. Нажмите клавишу ВВОД, чтобы принять, или ESC для отмены.", + "breakpointWidgetHitCountAriaLabel": "Выполнение программы прервется в этом месте, только если достигнуто определенное количество обращений. Нажмите клавишу ВВОД для принятия или ESC для отмены.", + "breakpointWidgetAriaLabel": "Выполнение программы прервется в этом месте, только если условие выполнится. Нажмите клавишу ВВОД для принятия или ESC для отмены.", + "expression": "Выражение", + "hitCount": "Количество обращений" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index b73933c327a..a53c820ee79 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Изменить точку останова…", + "disableBreakpoint": "Выключить точку останова", + "enableBreakpoint": "Включить точку останова", "removeBreakpoints": "Удалить точки останова", "removeBreakpointOnColumn": "Удалить точку останова из столбца {0}", "removeLineBreakpoint": "Удалить точку останова из строки", @@ -18,5 +21,6 @@ "enableBreakpoints": "Включить точку останова в столбце {0}", "enableBreakpointOnLine": "Включить точку останова в строке", "addBreakpoint": "Добавить точку останова", + "conditionalBreakpoint": "Добавить условную точку останова…", "addConfiguration": "Добавить конфигурацию..." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index fb28b2912a1..2f1cd08a60b 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,7 +28,5 @@ "preLaunchTaskExitCode": "Выполнение предварительной задачи \"{0}\" завершено с кодом выхода {1}.", "showErrors": "Показывать ошибки", "noFolderWorkspaceDebugError": "Нельзя выполнить отладку активного файла. Убедитесь, что файл сохранен на диске и установлено расширение отладки для этого типа файла.", - "cancel": "Отмена", - "DebugTaskNotFound": "Не удалось найти задачу preLaunchTask \"{0}\".", - "taskNotTracked": "Не удается отследить задачу предварительного запуска '{0}'." + "cancel": "Отмена" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..65c42dfa32b --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,54 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Имя расширения", + "extension id": "Идентификатор расширений", + "builtin": "Встроенное", + "publisher": "Имя издателя", + "install count": "Число установок", + "rating": "Оценка", + "license": "Лицензия", + "details": "Подробности", + "contributions": "Вклады", + "changelog": "Журнал изменений", + "dependencies": "Зависимости", + "noReadme": "Файл сведений недоступен.", + "noChangelog": "Журнал изменений недоступен.", + "noContributions": "Нет публикаций", + "noDependencies": "Нет зависимостей", + "settings": "Параметры ({0})", + "setting name": "Имя", + "description": "Описание", + "default": "По умолчанию", + "debuggers": "Отладчики ({0})", + "debugger name": "Имя", + "debugger type": "Тип", + "views": "Представления ({0})", + "view id": "Идентификатор", + "view name": "Имя", + "view location": "Где", + "localizations language id": "Идентификатор языка", + "localizations language name": "Название языка", + "localizations localized language name": "Название языка (локализованное)", + "iconThemes": "Темы значков ({0})", + "defaultDark": "Темная по умолчанию", + "defaultLight": "Светлая по умолчанию", + "defaultHC": "С высоким контрастом по умолчанию", + "JSON Validation": "Проверка JSON ({0})", + "fileMatch": "Сопоставление файла", + "commands": "Команды ({0})", + "command name": "Имя", + "keyboard shortcuts": "Сочетания клавиш", + "menuContexts": "Контексты меню", + "languages": "Языки ({0})", + "language id": "Идентификатор", + "language name": "Имя", + "file extensions": "Расширения файлов", + "grammar": "Грамматика", + "snippets": "Фрагменты" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index a5a34da17d1..fc2676c541b 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Рекомендуемое", "otherRecommendedExtensions": "Другие рекомендации", "workspaceRecommendedExtensions": "Рекомендации рабочей области", - "builtInExtensions": "Встроенный", "searchExtensions": "Поиск расширений в Marketplace", "sort by installs": "Сортировать по: числу установок", "sort by rating": "Сортировать по: рейтинг", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 6be9e343706..a22ecce0eb3 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Вы действительно хотите удалить следующие файлы ({0})?", "confirmMoveTrashMessageFolder": "Вы действительно хотите удалить папку \"{0}\" и ее содержимое?", "confirmMoveTrashMessageFile": "Вы действительно хотите удалить \"{0}\"?", - "undoBin": "Вы можете выполнить восстановление из корзины.", - "undoTrash": "Вы можете выполнить восстановление из корзины.", "doNotAskAgain": "Больше не спрашивать", "confirmDeleteMessageMultiple": "Вы действительно хотите удалить следующие файлы ({0}) без возможности восстановления?", "confirmDeleteMessageFolder": "Вы действительно хотите удалить папку \"{0}\" и ее содержимое без возможности восстановления?", "confirmDeleteMessageFile": "Вы действительно хотите удалить \"{0}\" без возможности восстановления?", "irreversible": "Это действие необратимо.", - "cancel": "Отмена", - "permDelete": "Удалить навсегда", "importFiles": "Импорт файлов", "confirmOverwrite": "Файл или папка с таким именем уже существует в конечной папке. Заменить их?", "replaceButtonLabel": "Заменить", diff --git a/i18n/rus/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..36cadcfcce5 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Предварительный просмотр HTML" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/rus/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..a80ebf7aef9 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Недопустимые входные данные для редактора." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..e4db582c42e --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Разработчик" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/rus/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..18d62a09459 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Открыть инструменты разработчика веб-представлений", + "refreshWebviewLabel": "Перезагрузить веб-представления" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 430f371b699..fdff5585e45 100644 --- a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Да", + "no": "Нет", + "doNotAskAgain": "Больше не спрашивать", "JsonSchema.locale": "Язык пользовательского интерфейса.", "vscode.extension.contributes.localizations": "Добавляет локализации в редактор", "vscode.extension.contributes.localizations.languageId": "Идентификатор языка, на который будут переведены отображаемые строки.", diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..5c59b0255d7 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Копировать", + "copyMarkerMessage": "Копировать сообщение" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..9f1e9238a73 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Всего проблем: {0}", + "filteredProblems": "Показано проблем: {0} из {1}" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..e99ea342272 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Проблемы", + "tooltip.1": "Проблем в этом файле: 1", + "tooltip.N": "Проблем в этом файле: {0}", + "markers.showOnFile": "Показывать ошибки и предупреждения для файлов и папки." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..939ceca5ae7 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Просмотр", + "problems.view.toggle.label": "Включить или отключить сообщения о проблемах (ошибки, предупреждения, информационные сообщения)", + "problems.view.focus.label": "Перевести фокус на сообщения о проблемах (ошибки, предупреждения, информационные сообщения) ", + "problems.panel.configuration.title": "Представление \"Проблемы\"", + "problems.panel.configuration.autoreveal": "Определяет, следует ли представлению \"Проблемы\" отображать файлы при их открытии", + "markers.panel.title.problems": "Проблемы", + "markers.panel.aria.label.problems.tree": "Проблемы, сгруппированные по файлам", + "markers.panel.no.problems.build": "В рабочей области проблемы пока не обнаружены.", + "markers.panel.no.problems.filters": "Для указанного условия фильтра результаты не обнаружены", + "markers.panel.action.filter": "Фильтр проблем", + "markers.panel.filter.placeholder": "Фильтровать по типу или тексту", + "markers.panel.filter.errors": "ошибки", + "markers.panel.filter.warnings": "предупреждения", + "markers.panel.filter.infos": "сообщения", + "markers.panel.single.error.label": "1 ошибка", + "markers.panel.multiple.errors.label": "Ошибок: {0}", + "markers.panel.single.warning.label": "1 предупреждение", + "markers.panel.multiple.warnings.label": "Предупреждения: {0}", + "markers.panel.single.info.label": "1 сообщение", + "markers.panel.multiple.infos.label": "Сообщения: {0}", + "markers.panel.single.unknown.label": "1 неизвестный", + "markers.panel.multiple.unknowns.label": "Неизвестные: {0}", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} с проблемами ({1})", + "errors.warnings.show.label": "Показать ошибки и предупреждения" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json index a43c7553d81..e62c40fea26 100644 --- a/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Показать следующий шаблон включения в поиск", "previousSearchIncludePattern": "Показать предыдущий шаблон включения в поиск ", - "nextSearchExcludePattern": "Показать следующий шаблон исключения из поиска", - "previousSearchExcludePattern": "Показать предыдущий шаблон исключения из поиска", "nextSearchTerm": "Показать следующее условие поиска", "previousSearchTerm": "Показать предыдущее условие поиска", "showSearchViewlet": "Показать средство поиска", diff --git a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json index b197ab3521e..a577a42bfc0 100644 --- a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Переключить сведения о поиске", - "searchScope.includes": "включаемые файлы", - "label.includes": "Шаблоны включения в поиск", - "searchScope.excludes": "исключаемые файлы", - "label.excludes": "Шаблоны исключения из поиска", "replaceAll.confirmation.title": "Заменить все", "replaceAll.confirm.button": "Заменить", "replaceAll.occurrence.file.message": "Вхождение {0} заменено в {1} файле на \"{2}\".", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 60e666cad4c..e2928ed26bf 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "Отменяет связь задачи со всеми группами", "JsonSchema.tasks.group": "Определяет, к какой группе выполнения принадлежит эта задача. Поддерживаемые значения: \"build\" для добавления задачи к группе сборки и \"test\" для добавления задачи к группе тестирования.", "JsonSchema.tasks.type": "Определяет, выполняется ли задача в виде процесса или в виде команды оболочки.", + "JsonSchema.command": "Выполняемая команда. Это может быть внешняя программа или команда оболочки.", + "JsonSchema.tasks.args": "Аргументы, передаваемые в команду при вызове этой задачи.", "JsonSchema.tasks.label": "Метка пользовательского интерфейса задачи", "JsonSchema.version": "Номер версии конфигурации.", "JsonSchema.tasks.identifier": "Пользовательский идентификатор задачи в файле launch.json или в предложении dependsOn.", 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 8cccd04ba00..9699d3ddc6b 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 @@ -8,9 +8,10 @@ ], "tasksCategory": "Задачи", "ConfigureTaskRunnerAction.label": "Настроить задачу", - "problems": "Проблемы", + "totalErrors": "Ошибок: {0}", + "totalWarnings": "Предупреждения: {0}", + "totalInfos": "Сообщения: {0}", "building": "Сборка...", - "manyMarkers": "99+", "runningTasks": "Показать выполняемые задачи", "tasks": "Задачи", "TaskSystem.noHotSwap": "Чтобы изменить подсистему выполнения задач, в которой запущена активная задача, необходимо перезагрузить окно", @@ -46,8 +47,8 @@ "recentlyUsed": "недавно использованные задачи", "configured": "настроенные задачи", "detected": "обнаруженные задачи", - "TaskService.ignoredFolder": "Следующие папки рабочей области будут проигнорированы, так как в них используется версия задач 0.1.0: {0}", "TaskService.notAgain": "Больше не показывать", + "TaskService.ignoredFolder": "Следующие папки рабочей области будут проигнорированы, так как в них используется версия задач 0.1.0: {0}", "TaskService.pickRunTask": "Выберите задачу для запуска", "TaslService.noEntryToRun": "Задача для запуска не найдена. Настройте задачи...", "TaskService.fetchingBuildTasks": "Получение задач сборки...", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 13433636ffe..76a6659cb9e 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Ошибка: в конфигурации задачи '{0}' отсутствует необходимое свойство '{1}'. Конфигурация задачи будет проигнорирована.", "ConfigurationParser.notCustom": "Ошибка: задачи не объявлены в качестве пользовательской задачи. Конфигурация будет проигнорирована.\n{0}\n", "ConfigurationParser.noTaskName": "Ошибка: в задаче должно быть указано свойство метки. Задача будет проигнорирована.\n{0}\n", - "taskConfiguration.shellArgs": "Предупреждение: задача \"{0}\" является командой оболочки, и один из ее аргументов содержит пробелы без escape-последовательности. Чтобы обеспечить правильную расстановку кавычек в командной строке, объедините аргументы в команде.", "taskConfiguration.noCommandOrDependsOn": "Ошибка: в задаче \"{0}\" не указаны ни команда, ни свойство dependsOn. Задача будет проигнорирована. Определение задачи:\n{1}", "taskConfiguration.noCommand": "Ошибка: задача \"{0}\" не определяет команду. Задача будет игнорироваться. Ее определение:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "Версия задач 2.0.0 не поддерживает глобальные задачи для конкретных ОС. Преобразуйте их в задачи с помощью команд для конкретных ОС.\nЗатронутые задачи: {0}" diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 21822900dfd..e8a4956658f 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Копировать", + "split": "Разделить", "paste": "Вставить", "selectAll": "Выбрать все", - "clear": "Очистить", - "split": "Разделить" + "clear": "Очистить" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..52d5c03cd56 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Заметки о выпуске: {0}", + "unassigned": "не присвоено" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json index d80a8d53e52..f279da23009 100644 --- a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Позже", - "unassigned": "не присвоено", "releaseNotes": "Заметки о выпуске", "showReleaseNotes": "Показать заметки о выпуске", "read the release notes": "Вас приветствует {0} v{1}! Вы хотите прочитать заметки о выпуске?", diff --git a/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..79967c51d9e --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "Редактор веб-представления" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..5cafb4b89da --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Подробнее" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/rus/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/rus/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..360b3b18b2b --- /dev/null +++ b/i18n/rus/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Да", + "cancelButton": "Отмена" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index bd6cb49d41e..c3b0dd46f65 100644 --- a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Больше не показывать", "netVersionError": "Требуется платформа Microsoft .NET Framework 4.5. Нажмите ссылку, чтобы установить ее.", "learnMore": "Инструкции", - "enospcError": "В {0} закончились дескрипторы файлов. Для решения проблемы воспользуйтесь ссылкой на инструкции.", "binFailed": "Не удалось переместить \"{0}\" в корзину", "trashFailed": "Не удалось переместить \"{0}\" в корзину." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json index 041ccc58fa5..10de0847f46 100644 --- a/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Недопустимый ресурс файла ({0})", "fileIsDirectoryError": "Файл является каталогом", "fileNotModifiedError": "undefined", - "fileTooLargeForHeapError": "Размер файла превышает объем памяти окна, попробуйте выполнить код с параметром --max-memory=новый_объем_памяти", "fileTooLargeError": "Не удается открыть файл, так как он имеет слишком большой размер", "fileNotFoundError": "Файл не найден ({0})", "fileBinaryError": "Похоже, файл является двоичным, и его нельзя открыть как текстовый.", diff --git a/i18n/rus/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/rus/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..ba82447f37b 100644 --- a/i18n/rus/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/rus/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "Отмена" } \ No newline at end of file diff --git a/i18n/trk/extensions/css-language-features/client/out/cssMain.i18n.json b/i18n/trk/extensions/css-language-features/client/out/cssMain.i18n.json new file mode 100644 index 00000000000..5d438afc47c --- /dev/null +++ b/i18n/trk/extensions/css-language-features/client/out/cssMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cssserver.name": "CSS Dil Sunucusu", + "folding.start": "Katlama Bölgesi Başlangıcı", + "folding.end": "Katlama Bölgesi Sonu" +} \ No newline at end of file diff --git a/i18n/trk/extensions/css-language-features/package.i18n.json b/i18n/trk/extensions/css-language-features/package.i18n.json new file mode 100644 index 00000000000..16d27b93d73 --- /dev/null +++ b/i18n/trk/extensions/css-language-features/package.i18n.json @@ -0,0 +1,81 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "CSS Dili Özellikleri", + "description": "CSS, LESS, SCSS dosyaları için zengin dil desteği sağlar.", + "css.title": "CSS", + "css.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", + "css.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", + "css.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", + "css.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", + "css.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", + "css.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", + "css.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", + "css.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", + "css.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "css.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", + "css.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", + "css.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", + "css.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", + "css.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", + "css.lint.unknownProperties.desc": "Bilinmeyen özellik.", + "css.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", + "css.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", + "css.lint.zeroUnits.desc": "Sıfır için birim gerekmez", + "css.trace.server.desc": "VS Code ve CSS dil sunucusu arasındaki iletişimi izler.", + "css.validate.title": "CSS doğrulamasını ve sorunların önem derecelerini denetler.", + "css.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", + "less.title": "LESS", + "less.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", + "less.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", + "less.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", + "less.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", + "less.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", + "less.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", + "less.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", + "less.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", + "less.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "less.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", + "less.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", + "less.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", + "less.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", + "less.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", + "less.lint.unknownProperties.desc": "Bilinmeyen özellik.", + "less.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", + "less.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", + "less.lint.zeroUnits.desc": "Sıfır için birim gerekmez", + "less.validate.title": "LESS doğrulamasını ve sorunların önem derecelerini denetler.", + "less.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", + "scss.title": "SCSS (Sass)", + "scss.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", + "scss.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", + "scss.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", + "scss.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", + "scss.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", + "scss.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", + "scss.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", + "scss.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", + "scss.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "scss.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", + "scss.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", + "scss.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", + "scss.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", + "scss.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", + "scss.lint.unknownProperties.desc": "Bilinmeyen özellik.", + "scss.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", + "scss.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", + "scss.lint.zeroUnits.desc": "Sıfır için birim gerekmez", + "scss.validate.title": "SCSS doğrulamasını ve sorunların önem derecelerini denetler.", + "scss.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", + "less.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", + "scss.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", + "css.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", + "css.colorDecorators.enable.deprecationMessage": "`css.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır.", + "scss.colorDecorators.enable.deprecationMessage": "`scss.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır.", + "less.colorDecorators.enable.deprecationMessage": "`less.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır." +} \ No newline at end of file diff --git a/i18n/trk/extensions/css/package.i18n.json b/i18n/trk/extensions/css/package.i18n.json index 16d27b93d73..66b4b1f0603 100644 --- a/i18n/trk/extensions/css/package.i18n.json +++ b/i18n/trk/extensions/css/package.i18n.json @@ -6,76 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS Dili Özellikleri", - "description": "CSS, LESS, SCSS dosyaları için zengin dil desteği sağlar.", - "css.title": "CSS", - "css.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", - "css.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", - "css.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", - "css.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", - "css.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", - "css.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", - "css.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", - "css.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "css.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", - "css.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", - "css.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", - "css.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", - "css.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", - "css.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", - "css.lint.unknownProperties.desc": "Bilinmeyen özellik.", - "css.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", - "css.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", - "css.lint.zeroUnits.desc": "Sıfır için birim gerekmez", - "css.trace.server.desc": "VS Code ve CSS dil sunucusu arasındaki iletişimi izler.", - "css.validate.title": "CSS doğrulamasını ve sorunların önem derecelerini denetler.", - "css.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", - "less.title": "LESS", - "less.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", - "less.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", - "less.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", - "less.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", - "less.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", - "less.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", - "less.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", - "less.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "less.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", - "less.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", - "less.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", - "less.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", - "less.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", - "less.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", - "less.lint.unknownProperties.desc": "Bilinmeyen özellik.", - "less.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", - "less.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", - "less.lint.zeroUnits.desc": "Sıfır için birim gerekmez", - "less.validate.title": "LESS doğrulamasını ve sorunların önem derecelerini denetler.", - "less.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", - "scss.title": "SCSS (Sass)", - "scss.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", - "scss.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", - "scss.lint.compatibleVendorPrefixes.desc": "Satıcıya özgü bir ön ek kullanırken satıcıya özgü diğer tüm özellikleri de dahil ettiğinizden emin olun", - "scss.lint.duplicateProperties.desc": "Yinelenen stil tanımları kullanmayın", - "scss.lint.emptyRules.desc": "Boş kural kümeleri kullanmayın", - "scss.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", - "scss.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", - "scss.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "scss.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", - "scss.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", - "scss.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", - "scss.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", - "scss.lint.propertyIgnoredDueToDisplay.desc": "Özellik gösterim nedeniyle yoksayıldı. Örn. 'display: inline' ile width, height, margin-top, margin-bottom ve float özelliklerinin hiçbir etkisi olmaz", - "scss.lint.universalSelector.desc": "Evrensel seçici (*) yavaş olarak bilinir", - "scss.lint.unknownProperties.desc": "Bilinmeyen özellik.", - "scss.lint.unknownVendorSpecificProperties.desc": "Bilinmeyen satıcıya özel özellik.", - "scss.lint.vendorPrefix.desc": "Satıcıya özgü bir ön ek kullanırken standart özelliği de dahil edin", - "scss.lint.zeroUnits.desc": "Sıfır için birim gerekmez", - "scss.validate.title": "SCSS doğrulamasını ve sorunların önem derecelerini denetler.", - "scss.validate.desc": "Tüm doğrulamaları etkinleştirir veya devre dışı bırakır", - "less.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", - "scss.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", - "css.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", - "css.colorDecorators.enable.deprecationMessage": "`css.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır.", - "scss.colorDecorators.enable.deprecationMessage": "`scss.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır.", - "less.colorDecorators.enable.deprecationMessage": "`less.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır." + "displayName": "CSS Dil Temelleri", + "description": "CSS, LESS ve SCSS dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/git/out/commands.i18n.json b/i18n/trk/extensions/git/out/commands.i18n.json index 9ab82c662af..1feaf1cddaf 100644 --- a/i18n/trk/extensions/git/out/commands.i18n.json +++ b/i18n/trk/extensions/git/out/commands.i18n.json @@ -75,7 +75,6 @@ "ok": "Tamam", "push with tags success": "Başarılı bir şekilde etiketlerle gönderildi.", "pick remote": "'{0}' dalının yayınlanacağı bir uzak uçbirim seçin:", - "sync is unpredictable": "Bu eylem, '{0}' esas projesine commitleri gönderecek ve alacaktır.", "never again": "Tamam, Tekrar Gösterme", "no remotes to publish": "Deponuzda yayınlamanın yapılacağı hiçbir uzak uçbirim yapılandırılmamış.", "no changes stash": "Geçici olarak saklanacak bir değişiklik yok.", diff --git a/i18n/trk/extensions/html-language-features/client/out/htmlMain.i18n.json b/i18n/trk/extensions/html-language-features/client/out/htmlMain.i18n.json new file mode 100644 index 00000000000..cd480d42123 --- /dev/null +++ b/i18n/trk/extensions/html-language-features/client/out/htmlMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "htmlserver.name": "HTML Dil Sunucusu", + "folding.start": "Katlama Bölgesi Başlangıcı", + "folding.end": "Katlama Bölgesi Sonu" +} \ No newline at end of file diff --git a/i18n/trk/extensions/html-language-features/package.i18n.json b/i18n/trk/extensions/html-language-features/package.i18n.json new file mode 100644 index 00000000000..00e0da3830a --- /dev/null +++ b/i18n/trk/extensions/html-language-features/package.i18n.json @@ -0,0 +1,33 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "HTML Dili Özellikleri", + "description": "HTML, Razor ve Handlebar dosyaları için zengin dil desteği sağlar.", + "html.format.enable.desc": "Varsayılan HTML biçimlendiricisini etkinleştirin/devre dışı bırakın", + "html.format.wrapLineLength.desc": "Satır başına en fazla karakter miktarı (0 = devre dışı bırak)", + "html.format.unformatted.desc": "Yeniden biçimlendirilmeyecek virgülle ayrılmış etiketler listesi. 'null' değeri, https://www.w3.org/TR/html5/dom.html#phrasing-content adresinde listelenen tüm etiketleri varsayılan olarak belirler.", + "html.format.contentUnformatted.desc": "İçeriğin yeniden biçimlendirilmeyeceği virgülle ayrılmış etiketler listesi. 'null' değeri, 'pre' etiketini varsayılan olarak belirler.", + "html.format.indentInnerHtml.desc": " ve bölümlerini girintile.", + "html.format.preserveNewLines.desc": "Ögelerden önceki mevcut satır sonlarının korunup korunmayacağı. Yalnızca ögelerden önce çalışır, etiketler içinde veya metinde çalışmaz.", + "html.format.maxPreserveNewLines.desc": "Bir öbekte korunacak maksimum satır sonu sayısı. Sınırsız için 'null' değerini kullanın.", + "html.format.indentHandlebars.desc": "{{#foo}} ve {{/foo}}'yu biçimlendir ve girintile.", + "html.format.endWithNewline.desc": "Boş bir satırla bitir.", + "html.format.extraLiners.desc": "Kendilerinden önce ek bir boş satır bulunması gereken virgülle ayrılmış etiketler listesi. 'null' değeri, \"head, body, /html\" değerini varsayılan olarak belirler.", + "html.format.wrapAttributes.desc": "Öznitelikleri sarmala.", + "html.format.wrapAttributes.auto": "Öznitelikleri sadece satır uzunluğu aşıldığında sarmala.", + "html.format.wrapAttributes.force": "İlki hariç tüm öznitelikleri sarmala.", + "html.format.wrapAttributes.forcealign": "İlki hariç tüm öznitelikleri sarmala ve hizada tut.", + "html.format.wrapAttributes.forcemultiline": "Tüm öznitelikleri sarmala.", + "html.suggest.angular1.desc": "Yerleşik HTML dili desteğinin Angular V1 etiketlerini ve özelliklerini önerip önermeyeceğini yapılandırır.", + "html.suggest.ionic.desc": "Yerleşik HTML dili desteğinin Ionic etiketlerini, özelliklerini ve değerlerini önerip önermeyeceğini yapılandırır.", + "html.suggest.html5.desc": "Yerleşik HTML dili desteğinin HTML5 etiketlerini, özelliklerini ve değerlerini önerip önermeyeceğini yapılandırır.", + "html.trace.server.desc": "VS Code ve HTML dil sunucusu arasındaki iletişimi izler.", + "html.validate.scripts": "Yerleşik HTML dili desteğinin HTML5 gömülü betikleri doğrulayıp doğrulamayacağını yapılandırır.", + "html.validate.styles": "Yerleşik HTML dili desteğinin HTML5 gömülü stilleri doğrulayıp doğrulamayacağını yapılandırır.", + "html.autoClosingTags": "HTML etiketlerinin otomatik kapatılmasını etkinleştirin/devre dışı bırakın" +} \ No newline at end of file diff --git a/i18n/trk/extensions/html/package.i18n.json b/i18n/trk/extensions/html/package.i18n.json index 6cae077d9f9..7b449502bb0 100644 --- a/i18n/trk/extensions/html/package.i18n.json +++ b/i18n/trk/extensions/html/package.i18n.json @@ -6,29 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "HTML Dili Özellikleri", - "description": "HTML, Razor ve Handlebar dosyaları için zengin dil desteği sağlar.", - "html.format.enable.desc": "Varsayılan HTML biçimlendiricisini etkinleştirin/devre dışı bırakın", - "html.format.wrapLineLength.desc": "Satır başına en fazla karakter miktarı (0 = devre dışı bırak)", - "html.format.unformatted.desc": "Yeniden biçimlendirilmeyecek virgülle ayrılmış etiketler listesi. 'null' değeri, https://www.w3.org/TR/html5/dom.html#phrasing-content adresinde listelenen tüm etiketleri varsayılan olarak belirler.", - "html.format.contentUnformatted.desc": "İçeriğin yeniden biçimlendirilmeyeceği virgülle ayrılmış etiketler listesi. 'null' değeri, 'pre' etiketini varsayılan olarak belirler.", - "html.format.indentInnerHtml.desc": " ve bölümlerini girintile.", - "html.format.preserveNewLines.desc": "Ögelerden önceki mevcut satır sonlarının korunup korunmayacağı. Yalnızca ögelerden önce çalışır, etiketler içinde veya metinde çalışmaz.", - "html.format.maxPreserveNewLines.desc": "Bir öbekte korunacak maksimum satır sonu sayısı. Sınırsız için 'null' değerini kullanın.", - "html.format.indentHandlebars.desc": "{{#foo}} ve {{/foo}}'yu biçimlendir ve girintile.", - "html.format.endWithNewline.desc": "Boş bir satırla bitir.", - "html.format.extraLiners.desc": "Kendilerinden önce ek bir boş satır bulunması gereken virgülle ayrılmış etiketler listesi. 'null' değeri, \"head, body, /html\" değerini varsayılan olarak belirler.", - "html.format.wrapAttributes.desc": "Öznitelikleri sarmala.", - "html.format.wrapAttributes.auto": "Öznitelikleri sadece satır uzunluğu aşıldığında sarmala.", - "html.format.wrapAttributes.force": "İlki hariç tüm öznitelikleri sarmala.", - "html.format.wrapAttributes.forcealign": "İlki hariç tüm öznitelikleri sarmala ve hizada tut.", - "html.format.wrapAttributes.forcemultiline": "Tüm öznitelikleri sarmala.", - "html.suggest.angular1.desc": "Yerleşik HTML dili desteğinin Angular V1 etiketlerini ve özelliklerini önerip önermeyeceğini yapılandırır.", - "html.suggest.ionic.desc": "Yerleşik HTML dili desteğinin Ionic etiketlerini, özelliklerini ve değerlerini önerip önermeyeceğini yapılandırır.", - "html.suggest.html5.desc": "Yerleşik HTML dili desteğinin HTML5 etiketlerini, özelliklerini ve değerlerini önerip önermeyeceğini yapılandırır.", - "html.trace.server.desc": "VS Code ve HTML dil sunucusu arasındaki iletişimi izler.", - "html.validate.scripts": "Yerleşik HTML dili desteğinin HTML5 gömülü betikleri doğrulayıp doğrulamayacağını yapılandırır.", - "html.validate.styles": "Yerleşik HTML dili desteğinin HTML5 gömülü stilleri doğrulayıp doğrulamayacağını yapılandırır.", - "html.experimental.syntaxFolding": "Sözdimine duyarlı katlama işaretleyicilerini etkinleştirin/devre dışı bırakın.", - "html.autoClosingTags": "HTML etiketlerinin otomatik kapatılmasını etkinleştirin/devre dışı bırakın" + "displayName": "HTML Dil Temelleri", + "description": "HTML dosyaları için söz dizimi vurgulama, ayraç eşleştirme ve kod parçacıkları sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/json-language-features/client/out/jsonMain.i18n.json b/i18n/trk/extensions/json-language-features/client/out/jsonMain.i18n.json new file mode 100644 index 00000000000..34990f71588 --- /dev/null +++ b/i18n/trk/extensions/json-language-features/client/out/jsonMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "jsonserver.name": "JSON Dil Sunucusu" +} \ No newline at end of file diff --git a/i18n/trk/extensions/json-language-features/package.i18n.json b/i18n/trk/extensions/json-language-features/package.i18n.json new file mode 100644 index 00000000000..94799976a72 --- /dev/null +++ b/i18n/trk/extensions/json-language-features/package.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JSON Dili Özellikleri", + "description": "JSON dosyaları için zengin dil desteği sağlar.", + "json.schemas.desc": "Şemaları geçerli projedeki JSON dosyalarıyla ilişkilendir", + "json.schemas.url.desc": "Bir şemanın URL'si veya geçerli dizindeki bir şemanın göreli yolu", + "json.schemas.fileMatch.desc": "JSON dosyaları şemalara çözümlenirken eşleşme için kullanılacak bir dosya düzenleri dizisi.", + "json.schemas.fileMatch.item.desc": "JSON dosyaları şemalara çözümlenirken eşleşme için '*' içerebilen bir dosya düzeni.", + "json.schemas.schema.desc": "Verilen URL için şema tanımı. Şema, yalnızca şema URL'sine erişimi önlemek için sağlanmalıdır.", + "json.format.enable.desc": "Varsayılan JSON biçimlendiricisini etkinleştirin/devre dışı bırakın (yeniden başlatma gerektirir)", + "json.tracing.desc": "VS Code ve JSON dil sunucusu arasındaki iletişimi izler.", + "json.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", + "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır." +} \ No newline at end of file diff --git a/i18n/trk/extensions/json/package.i18n.json b/i18n/trk/extensions/json/package.i18n.json index 9f3d0ff8c56..edd35777010 100644 --- a/i18n/trk/extensions/json/package.i18n.json +++ b/i18n/trk/extensions/json/package.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "JSON Dili Özellikleri", - "description": "JSON dosyaları için zengin dil desteği sağlar.", - "json.schemas.desc": "Şemaları geçerli projedeki JSON dosyalarıyla ilişkilendir", - "json.schemas.url.desc": "Bir şemanın URL'si veya geçerli dizindeki bir şemanın göreli yolu", - "json.schemas.fileMatch.desc": "JSON dosyaları şemalara çözümlenirken eşleşme için kullanılacak bir dosya düzenleri dizisi.", - "json.schemas.fileMatch.item.desc": "JSON dosyaları şemalara çözümlenirken eşleşme için '*' içerebilen bir dosya düzeni.", - "json.schemas.schema.desc": "Verilen URL için şema tanımı. Şema, yalnızca şema URL'sine erişimi önlemek için sağlanmalıdır.", - "json.format.enable.desc": "Varsayılan JSON biçimlendiricisini etkinleştirin/devre dışı bırakın (yeniden başlatma gerektirir)", - "json.tracing.desc": "VS Code ve JSON dil sunucusu arasındaki iletişimi izler.", - "json.colorDecorators.enable.desc": "Renk dekoratörlerini etkinleştirir veya devre dışı bırakır", - "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` ayarı, `editor.colorDecorators` yüzünden kullanım dışıdır.", - "json.experimental.syntaxFolding": "Sözdizimi duyarlı katlama işaretçilerini etkinleştirin/devre dışı bırakın." + "displayName": "JSON Dil Temelleri", + "description": "JSON dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json b/i18n/trk/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json new file mode 100644 index 00000000000..44f66398a79 --- /dev/null +++ b/i18n/trk/extensions/markdown-language-features/out/commands/onPreviewStyleLoadError.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "onPreviewStyleLoadError": "'markdown.styles' yüklenemedi: {0}" +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/trk/extensions/markdown-language-features/out/features/preview.i18n.json new file mode 100644 index 00000000000..3a5b0eca0e2 --- /dev/null +++ b/i18n/trk/extensions/markdown-language-features/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Önizleme] {0}", + "previewTitle": "{0} Önizlemesi" +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/trk/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json new file mode 100644 index 00000000000..76db8cd58cf --- /dev/null +++ b/i18n/trk/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "preview.securityMessage.text": "Bu belgedeki bazı içerikler devre dışı bırakıldı", + "preview.securityMessage.title": "Markdown önizlemesinde potansiyel olarak tehlikeli veya güvenli olmayan içerik devre dışı bırakıldı. Güvenli olmayan içeriğe izin vermek veya betikleri etkinleştirmek için Markdown önizleme güvenlik ayarını değiştirin", + "preview.securityMessage.label": "İçerik Devre Dışı Güvenlik Uyarısı" +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-language-features/out/security.i18n.json b/i18n/trk/extensions/markdown-language-features/out/security.i18n.json new file mode 100644 index 00000000000..df9d9eb7615 --- /dev/null +++ b/i18n/trk/extensions/markdown-language-features/out/security.i18n.json @@ -0,0 +1,20 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "strict.title": "Katı", + "strict.description": "Sadece güvenli içeriği yükle", + "insecureContent.title": "Güvenli olmayan içeriğe izin ver", + "insecureContent.description": "Http üzerinden içerik yüklemeyi etkinleştir", + "disable.title": "Devre Dışı Bırak", + "disable.description": "Tüm içeriğe ve betik yürütmeye izin ver. Tavsiye edilmez", + "moreInfo.title": "Daha Fazla Bilgi", + "enableSecurityWarning.title": "Bu çalışma alanında önizleme güvenlik uyarılarını etkinleştir", + "disableSecurityWarning.title": "Bu çalışma alanında önizleme güvenlik uyarılarını devre dışı bırak", + "toggleSecurityWarning.description": "İçerik güvenlik seviyesini etkilemez", + "preview.showPreviewSecuritySelector.title": "Bu çalışma alanında Markdown önizlemeleri için güvenlik ayarlarını seçin" +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-language-features/package.i18n.json b/i18n/trk/extensions/markdown-language-features/package.i18n.json new file mode 100644 index 00000000000..c7a539dac45 --- /dev/null +++ b/i18n/trk/extensions/markdown-language-features/package.i18n.json @@ -0,0 +1,32 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown Dili Özellikleri", + "description": "Markdown için zengin dil desteği sağlar.", + "markdown.preview.breaks.desc": "Markdown önizlemesinde satır sonlarının nasıl gösterileceğini ayarlar. 'true' olarak ayarlamak, her yeni satırda bir
oluşturur.", + "markdown.preview.linkify": "Markdown önizlemesinde URL benzeri metinlerin bağlantıya çevrilmesini etkinleştir veya devre dışı bırak.", + "markdown.preview.doubleClickToSwitchToEditor.desc": "Düzenleyiciye geçiş yapmak için Markdown önizlemesine çift tıklayın.", + "markdown.preview.fontFamily.desc": "Markdown önizlemesinde kullanılan yazı tipi ailesini denetler.", + "markdown.preview.fontSize.desc": "Markdown önizlemesinde kullanılan yazı tipi boyutunu piksel olarak denetler.", + "markdown.preview.lineHeight.desc": "Markdown önizlemesinde kullanılan satır yüksekliğini denetler. Bu sayı yazı tipi boyutuna görecelidir.", + "markdown.preview.markEditorSelection.desc": "Markdown önizlemesinde geçerli düzenleyici seçimini işaretle.", + "markdown.preview.scrollEditorWithPreview.desc": "Markdown önizlemesi kaydırıldığında, düzenleyicinin görünümünü güncelle.", + "markdown.preview.scrollPreviewWithEditor.desc": "Markdown düzenleyicisi kaydırıldığında, önizlemenin görünümünü güncelle.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Kullanım Dışı] Düzenleyicide seçili satırın görünmesi için Markdown önizlemesini kaydırır.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Bu ayar 'markdown.preview.scrollPreviewWithEditor' ile değiştirildi ve artık hiçbir etkisi bulunmamaktadır.", + "markdown.preview.title": "Önizlemeyi Aç", + "markdown.previewFrontMatter.dec": "YAML ön maddesinin Markdown önizlemesinde nasıl gösterilmesi gerektiğini ayarlar. 'hide' ön maddeyi kaldırır. Diğer türlü; ön madde, Markdown içeriği olarak sayılır.", + "markdown.previewSide.title": "Önizlemeyi Yana Aç", + "markdown.showLockedPreviewToSide.title": "Kilitlenmiş Önizlemeyi Yana Aç", + "markdown.showSource.title": "Kaynağı Göster", + "markdown.styles.dec": "Markdown önizlemesinde kullanılmak üzere CSS stil dosyalarını işaret eden bir URL'ler veya yerel yollar listesi. Göreli yollar, gezginde açılan klasöre göreli olarak yorumlanır.", + "markdown.showPreviewSecuritySelector.title": "Önizleme Güvenlik Ayarlarını Değiştir", + "markdown.trace.desc": "Markdown eklentisi için hata ayıklama günlüğünü etkinleştir.", + "markdown.preview.refresh.title": "Önizlemeyi Yenile", + "markdown.preview.toggleLock.title": "Önizleme Kilitlemeyi Aç/Kapat" +} \ No newline at end of file diff --git a/i18n/trk/extensions/php-language-features/out/features/validationProvider.i18n.json b/i18n/trk/extensions/php-language-features/out/features/validationProvider.i18n.json new file mode 100644 index 00000000000..d882c2764da --- /dev/null +++ b/i18n/trk/extensions/php-language-features/out/features/validationProvider.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "php.useExecutablePath": "{0} (çalışma alanı ayarı olarak tanımlı) yürütülebilir dosyasına PHP dosyalarını doğrulama izni veriyor musunuz?", + "php.yes": "İzin Ver", + "php.no": "İzin Verme", + "wrongExecutable": "{0} geçerli bir php yürütülebilir dosyası olmadığı için doğrulanamıyor. PHP yürütülebilir dosyasını yapılandırmak için 'php.validate.executablePath' ayarını kullanın.", + "noExecutable": "Hiçbir PHP yürütülebilir dosyası ayarlanmadığı için doğrulanamıyor. PHP yürütülebilir dosyasını yapılandırmak için 'php.validate.executablePath' ayarını kullanın.", + "unknownReason": "{0} yolu kullanılarak php çalıştırılamadı. Sebep bilinmiyor." +} \ No newline at end of file diff --git a/i18n/trk/extensions/php-language-features/package.i18n.json b/i18n/trk/extensions/php-language-features/package.i18n.json new file mode 100644 index 00000000000..9ee5b59f86c --- /dev/null +++ b/i18n/trk/extensions/php-language-features/package.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "configuration.suggest.basic": "Yerleşik PHP dili önerilerinin etkinleştirilip etkinleştirilmediğini yapılandırır. Destek, PHP globalleri ve değişkenleri önerir.", + "configuration.validate.enable": "Yerleşik PHP doğrulamasını etkinleştir/devre dışı bırak.", + "configuration.validate.executablePath": "PHP çalıştırılabilir dosyasına işaret eder.", + "configuration.validate.run": "Doğrulayıcının kayıt esnasında mı tuşlama esnasında mı çalışacağı.", + "configuration.title": "PHP", + "commands.categroy.php": "PHP", + "command.untrustValidationExecutable": "PHP doğrulama yürütülebilir dosyasına izin verme (çalışma alanı ayarı olarak tanımlanır)", + "displayName": "PHP Dil Özellikleri", + "description": "PHP dosyaları için zengin dil desteği sağlar." +} \ No newline at end of file diff --git a/i18n/trk/extensions/php/package.i18n.json b/i18n/trk/extensions/php/package.i18n.json index dbcdfc169f6..002f7c0d2d7 100644 --- a/i18n/trk/extensions/php/package.i18n.json +++ b/i18n/trk/extensions/php/package.i18n.json @@ -6,13 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "configuration.suggest.basic": "Yerleşik PHP dili önerilerinin etkinleştirilip etkinleştirilmediğini yapılandırır. Destek, PHP globalleri ve değişkenleri önerir.", - "configuration.validate.enable": "Yerleşik PHP doğrulamasını etkinleştir/devre dışı bırak.", - "configuration.validate.executablePath": "PHP çalıştırılabilir dosyasına işaret eder.", - "configuration.validate.run": "Doğrulayıcının kayıt esnasında mı tuşlama esnasında mı çalışacağı.", - "configuration.title": "PHP", - "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP doğrulama yürütülebilir dosyasına izin verme (çalışma alanı ayarı olarak tanımlanır)", "displayName": "PHP Dil Özellikleri", - "description": "PHP dosyaları için gelişmiş kod tamamlama(IntelliSense), doğrulama ve dil temelleri sağlar." + "description": "PHP dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 9a43ba50fdf..285e792d6c3 100644 --- a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -14,8 +14,8 @@ "noResults": "Sonuç bulunamadı", "settingsSearchIssue": "Ayar Arama Sorunu", "bugReporter": "Hata Raporu", - "performanceIssue": "Performans Sorunu", "featureRequest": "Özellik İsteği", + "performanceIssue": "Performans Sorunu", "stepsToReproduce": "Yeniden oluşturma adımları", "bugDescription": "Sorunu güvenilir şekilde yeniden oluşturmak için gerekli adımları paylaşın. Lütfen gerçekleşen ve beklenen sonuçları ekleyin. GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", "performanceIssueDesciption": "Bu performans sorunu ne zaman oluştu? Başlangıçta mı yoksa belirli eylemlerden sonra mı oluşuyor? GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", diff --git a/i18n/trk/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/trk/src/vs/editor/common/view/editorColorRegistry.i18n.json index b57bfc02dd1..93a32fa6ed1 100644 --- a/i18n/trk/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/trk/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,7 +28,9 @@ "warningBorder": "Düzenleyicideki uyarı karalamalarının kenarlık rengi.", "infoForeground": "Düzenleyicideki bilgilendirme karalamalarının ön plan rengi.", "infoBorder": "Düzenleyicideki bilgilendirme karalamalarının kenarlık rengi.", - "overviewRulerRangeHighlight": "Aralık vurguları için genel bakış cetvelinin işaretleyici rengi.", + "hintForeground": "Düzenleyicideki ipucu karalamalarının ön plan rengi.", + "hintBorder": "Düzenleyicideki ipucu karalamalarının kenarlık rengi.", + "overviewRulerRangeHighlight": "Aralık vurguları için genel bakış cetvelinin işaretleyici rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", "overviewRuleError": "Hatalar için genel bakış cetvelinin işaretleyici rengi.", "overviewRuleWarning": "Uyarılar için genel bakış cetvelinin işaretleyici rengi.", "overviewRuleInfo": "Bilgilendirmeler için genel bakış cetvelinin işaretleyici rengi." diff --git a/i18n/trk/src/vs/editor/contrib/gotoError/gotoError.i18n.json b/i18n/trk/src/vs/editor/contrib/gotoError/gotoError.i18n.json index 937537fbe28..06ac02ab7ec 100644 --- a/i18n/trk/src/vs/editor/contrib/gotoError/gotoError.i18n.json +++ b/i18n/trk/src/vs/editor/contrib/gotoError/gotoError.i18n.json @@ -6,11 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "title.wo_source": "({0}/{1})", "markerAction.next.label": "Sonraki Soruna Git (Hata, Uyarı, Bilgi)", - "markerAction.previous.label": "Önceki Soruna Git (Hata, Uyarı, Bilgi)", - "editorMarkerNavigationError": "Düzenleyicinin işaretçi gezinti aracının hata rengi.", - "editorMarkerNavigationWarning": "Düzenleyicinin işaretçi gezinti aracının uyarı rengi.", - "editorMarkerNavigationInfo": "Düzenleyicinin işaretçi gezinti aracının bilgilendirme rengi.", - "editorMarkerNavigationBackground": "Düzenleyicinin işaretçi gezinti aracının arka planı." + "markerAction.previous.label": "Önceki Soruna Git (Hata, Uyarı, Bilgi)" } \ No newline at end of file diff --git a/i18n/trk/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json b/i18n/trk/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json new file mode 100644 index 00000000000..c3b60a4637d --- /dev/null +++ b/i18n/trk/src/vs/editor/contrib/gotoError/gotoErrorWidget.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "title.wo_source": "({0}/{1})", + "editorMarkerNavigationError": "Düzenleyicinin işaretçi gezinti aracının hata rengi.", + "editorMarkerNavigationWarning": "Düzenleyicinin işaretçi gezinti aracının uyarı rengi.", + "editorMarkerNavigationInfo": "Düzenleyicinin işaretçi gezinti aracının bilgilendirme rengi.", + "editorMarkerNavigationBackground": "Düzenleyicinin işaretçi gezinti aracının arka planı." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/trk/src/vs/editor/contrib/snippet/snippetVariables.i18n.json new file mode 100644 index 00000000000..635fee26cd5 --- /dev/null +++ b/i18n/trk/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -0,0 +1,47 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "Sunday": "Pazar", + "Monday": "Pazartesi", + "Tuesday": "Salı", + "Wednesday": "Çarşamba", + "Thursday": "Perşembe", + "Friday": "Cuma", + "Saturday": "Cumartesi", + "SundayShort": "Paz", + "MondayShort": "Pzt", + "TuesdayShort": "Sal", + "WednesdayShort": "Çar", + "ThursdayShort": "Per", + "FridayShort": "Cum", + "SaturdayShort": "Cmt", + "January": "Ocak", + "February": "Şubat", + "March": "Mart", + "April": "Nisan", + "May": "Mayıs", + "June": "Haziran", + "July": "Temmuz", + "August": "Ağustos", + "September": "Eylül", + "October": "Ekim", + "November": "Kasım", + "December": "Aralık", + "JanuaryShort": "Oca", + "FebruaryShort": "Şub", + "MarchShort": "Mar", + "AprilShort": "Nis", + "MayShort": "May", + "JuneShort": "Haz", + "JulyShort": "Tem", + "AugustShort": "Ağu", + "SeptemberShort": "Eyl", + "OctoberShort": "Eki", + "NovemberShort": "Kas", + "DecemberShort": "Ara" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/trk/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index e4f61af229f..5d14aeee198 100644 --- a/i18n/trk/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/trk/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,8 +10,8 @@ "wordHighlightStrong": "Bir değişkene yazmak gibi, yazma-erişimi sırasındaki bir sembolün arka plan rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", "wordHighlightBorder": "Bir değişken okunurken ki gibi, bir sembolün okuma-erişimi sırasındaki kenarlık rengi.", "wordHighlightStrongBorder": "Bir değişkene yazılırken ki gibi, bir sembolün yazma erişimi sırasındaki kenarlık rengi.", - "overviewRulerWordHighlightForeground": "Sembol vurguları için genel bakış cetvelinin işaretleyici rengi.", - "overviewRulerWordHighlightStrongForeground": "Yazma erişimli sembol vurguları için genel bakış cetvelinin işaretleyici rengi.", + "overviewRulerWordHighlightForeground": "Sembol vurguları için genel bakış cetvelinin işaretleyici rengi. Altta yer alan süslemeleri gizlememek için renk mat olmamalıdır.", + "overviewRulerWordHighlightStrongForeground": "Yazma erişimli sembol vurguları için genel bakış cetvelinin işaretleyici rengi. Altta yer alan süslemeleri gizlememek için renk mat olmamalıdır.", "wordHighlight.next.label": "Sonraki Sembol Vurgusuna Git", "wordHighlight.previous.label": "Önceki Sembol Vurgusuna Git" } \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/dialogs/common/dialogs.i18n.json b/i18n/trk/src/vs/platform/dialogs/common/dialogs.i18n.json new file mode 100644 index 00000000000..0bc4bb5dea3 --- /dev/null +++ b/i18n/trk/src/vs/platform/dialogs/common/dialogs.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "moreFile": "...1 ek dosya gösterilmiyor", + "moreFiles": "...{0} ek dosya gösterilmiyor" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/dialogs/node/dialogService.i18n.json b/i18n/trk/src/vs/platform/dialogs/node/dialogService.i18n.json new file mode 100644 index 00000000000..40e62eb8c37 --- /dev/null +++ b/i18n/trk/src/vs/platform/dialogs/node/dialogService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cancel": "İptal" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 9f87cfce521..06d66b62a1e 100644 --- a/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,7 +14,7 @@ "errorInstallingDependencies": "Bağımlılıklar yüklenirken hata oluştu. {0}", "MarketPlaceDisabled": "Market etkin değil", "removeError": "Eklenti kaldırılırken hata oluştu: {0}. Yeniden yüklemeden önce lütfen VS Code'dan çıkın ve tekrar açın.", - "Not Market place extension": "Sadece Market Eklentileri yeniden yüklenebilir", + "Not a Marketplace extension": "Sadece Market Eklentileri yeniden yüklenebilir", "notFoundCompatible": "'{0}' yüklenemiyor; VS Code '{1}' ile uyumlu mevcut bir sürümü yok.", "malicious extension": "Eklenti sorunlu olarak bildirildiği için yüklenemiyor.", "notFoundCompatibleDependency": "Yükleme başarısız oldu çünkü, bağımlılığı bulunan '{0}' eklentisinin uyumlu olduğu VS Code'un '{1}' sürümü bulunamadı.", @@ -22,7 +22,7 @@ "exitCode": "Eklenti yüklenemedi. Lütfen yeniden yüklemeden önce VS Code'u sonlandırın ve tekrar başlatın.", "uninstallDependeciesConfirmation": "Yalnızca '{0}' eklentisini mi yoksa bağımlılıklarını da kaldırmak ister misiniz?", "uninstallOnly": "Sadece Eklenti", - "uninstallAll": "Tümü", + "uninstallAll": "Tümünü Kaldır", "uninstallConfirmation": "'{0}' eklentisini kaldırmak istediğinizden emin misiniz?", "ok": "Tamam", "singleDependentError": "'{0}' eklentisi kaldırılamıyor. '{1}' eklentisi buna bağlı.", diff --git a/i18n/trk/src/vs/platform/list/browser/listService.i18n.json b/i18n/trk/src/vs/platform/list/browser/listService.i18n.json index 8cc26093046..ad10361dfb6 100644 --- a/i18n/trk/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/trk/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Ağaç veya listelerdeki bir ögenin çoklu seçime fare ile eklenmesinde kullanılacak değiştirici(örneğin gezgin, açık düzenleyiciler ve scm görünümlerinde). `ctrlCmd` Windows ve Linux'da `Control` ve macOS'de `Command` ile eşleşir. 'Yana Aç' fare hareketleri - destekleniyorsa - birden çok seçim değiştiricisi ile çakışmayacak şekilde uyum sağlarlar.", "openMode.singleClick": "Tek tıklamayla ögeleri aç.", "openMode.doubleClick": "Çift tıklamayla ögeleri aç.", - "openModeModifier": "Ağaç ve listelerdeki ögelerin (destekleniyorsa) fare ile nasıl açılacağını denetler. Ögeleri tek tıklamayla açmak için `singleClick`, çift tıklamayla açmak için `doubleClick` olarak ayarlayın. Ağaçlardaki alt ögeler içeren ögeler için bu ayar üst ögenin tek veya çift tıklama tarafından genişletilmesini denetler. Bazı ağaç veya listelerin, bu ayar uygulanamaz ise görmezden gelmeyi seçebileceklerini unutmayın." + "openModeModifier": "Ağaç ve listelerdeki ögelerin (destekleniyorsa) fare ile nasıl açılacağını denetler. Ögeleri tek tıklamayla açmak için `singleClick`, çift tıklamayla açmak için `doubleClick` olarak ayarlayın. Ağaçlardaki alt ögeler içeren ögeler için bu ayar üst ögenin tek veya çift tıklama tarafından genişletilmesini denetler. Bazı ağaç veya listelerin, bu ayar uygulanamaz ise görmezden gelmeyi seçebileceklerini unutmayın.", + "horizontalScrolling setting": "Çalışma ekranındaki ağaçların yatay kaydırmayı destekleyip desteklemeyeceğini denetler." } \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/markers/common/markers.i18n.json b/i18n/trk/src/vs/platform/markers/common/markers.i18n.json new file mode 100644 index 00000000000..bc3e8108119 --- /dev/null +++ b/i18n/trk/src/vs/platform/markers/common/markers.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "sev.error": "Hata", + "sev.warning": "Uyarı", + "sev.info": "Bilgi" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json index 1135da6951e..4b0f1b56d92 100644 --- a/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -93,6 +93,6 @@ "overviewRulerCurrentContentForeground": "Satır içi birleştirme çakışmalarında \"mevcut olan\" için genel bakış cetveli ön planı.", "overviewRulerIncomingContentForeground": "Satır içi birleştirme çakışmalarında gelen genel bakış cetveli ön planı.", "overviewRulerCommonContentForeground": "Satır içi birleştirme çakışmalarında ortak ata genel bakış cetveli ön planı.", - "overviewRulerFindMatchForeground": "Bulunan eşler için genel bakış cetvelinin işaretleyici rengi.", - "overviewRulerSelectionHighlightForeground": "Seçim vurguları için genel bakış cetvelinin işaretleyici rengi." + "overviewRulerFindMatchForeground": "Bulunan eşler için genel bakış cetvelinin işaretleyici rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", + "overviewRulerSelectionHighlightForeground": "Seçim vurguları için genel bakış cetvelinin işaretleyici rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json new file mode 100644 index 00000000000..ee8688cdc85 --- /dev/null +++ b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadTask.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "task.label": "{0}: {1}" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/trk/src/vs/workbench/api/node/extHostProgress.i18n.json new file mode 100644 index 00000000000..b8ebfa4861f --- /dev/null +++ b/i18n/trk/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "extensionSource": "{0} (Eklenti)" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/editor/editorActions.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/editor/editorActions.i18n.json index d0faef6808c..90a1b3244f9 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/editor/editorActions.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/editor/editorActions.i18n.json @@ -17,6 +17,7 @@ "focusNextGroup": "Sonraki Gruba Odakla", "openToSide": "Yana Aç", "closeEditor": "Düzenleyiciyi Kapat", + "closeOneEditor": "Kapat", "revertAndCloseActiveEditor": "Geri Al ve Düzenleyiciyi Kapat", "closeEditorsToTheLeft": "Düzenleyicinin Solundakileri Kapat", "closeAllEditors": "Tüm Düzenleyicileri Kapat", diff --git a/i18n/trk/src/vs/workbench/browser/parts/editor/titleControl.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/editor/titleControl.i18n.json index 166ea0d4a6f..4c89a16f31a 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/editor/titleControl.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/editor/titleControl.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "close": "Kapat", "araLabelEditorActions": "Düzenleyici eylemleri" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 320cb9f421d..05ae29fe427 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Yeni bildirim yok", "notifications": "Bildirimler", "notificationsToolbar": "Bildirim Merkezi Eylemleri", "notificationsList": "Bildirim Listesi" diff --git a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json index c69d16c0b90..8653d808605 100644 --- a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,8 +45,6 @@ "windowConfigurationTitle": "Pencere", "window.openFilesInNewWindow.on": "Dosyalar yeni bir pencerede açılacak", "window.openFilesInNewWindow.off": "Dosyalar, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak", - "window.openFilesInNewWindow.default": "Dosyalar, Dock veya Finder ile açılmadıkça (sadece macOS için) dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak", - "openFilesInNewWindow": "Dosyaların yeni bir pencerede açılıp açılmayacağını denetler.\n- default: dosyalar, Dock veya Finder ile açılmadıkça (sadece macOS için) dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak\n- on: dosyalar yeni bir pencerede açılacak\n- off: dosyalar, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak\nBu ayarın halen yok sayılacağı durumlar olabilir (ör. -new-window veya -reuse-window komut satırı seçenekleri kullanılırken).", "window.openFoldersInNewWindow.on": "Klasörler yeni bir pencerede açılacak", "window.openFoldersInNewWindow.off": "Klasörler son aktif pencereyi değiştirir", "window.openFoldersInNewWindow.default": "Klasörler, bir klasör uygulama içinden seçilmedikçe (ör. Dosya menüsünden) yeni bir pencerede açılır", @@ -58,7 +56,6 @@ "restoreWindows": "Pencerelerin, bir yeniden başlatma sonrası nasıl yeniden açılacağını denetler. Her zaman boş bir çalışma alanı ile başlamak için 'none', üzerinde çalıştığınız son pencereyi yeniden açmak için 'one', açık klasör bulunduran tüm pencereleri yeniden açmak için 'folders' veya son oturumunuzdaki tüm pencereleri yeniden açmak için 'all' seçeneğini seçin.", "restoreFullscreen": "Bir pencere tam ekran modundayken çıkıldıysa, bu pencerenin tam ekran moduna geri dönüp dönmeyeceğini denetler.", "zoomLevel": "Pencerenin yakınlaştırma düzeyini ayarlayın. Orijinal boyut 0'dır ve üstündeki (ör. 1) veya altındaki (ör. -1) her artırma 20% daha fazla veya az yakınlaştırmayı temsil eder. Yakınlaştırma düzeyini daha ince ayrıntılarla ayarlamak için ondalık değerler de girebilirsiniz.", - "title": "Pencere başlığını aktif düzenleyiciye bağlı olarak denetler. Değişkenler, bağlama göre değiştirilir:\n${activeEditorShort}: dosyanın adı (ör. myFile.txt)\n${activeEditorMedium}: çalışma alanı klasörüne göreli dosyanın yolu (ör. myFolder/myFile.txt)\n${activeEditorLong}: dosyanın tam yolu (ör. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: dosyayı içeren çalışma alanı klasörünün adı (ör. myFolder)\n${folderPath}: dosyayı içeren çalışma alanı klasörünün yolu (ör. /Users/Development/myFolder)\n${rootName}: çalışma alanının adı (ör. myFolder veya myWorkspace)\n${rootPath}: çalışma alanının yolu (ör. /Users/Development/myWorkspace)\n${appName}: ör. VS Code\n${dirty}: etkin düzenleyici kaydedilmemiş değişiklikler içeriyorsa, değişiklik göstergesi\n${separator}: şartlı ayırıcı (\" - \") yalnızca değer içeren değişkenlerle çevrili olduğunda gösterilir", "window.newWindowDimensions.default": "Yeni pencereleri ekranın ortasında açın.", "window.newWindowDimensions.inherit": "Yeni pencereleri son aktif pencere ile aynı ölçülerde açın.", "window.newWindowDimensions.maximized": "Yeni pencereleri ekranı kapla modunda açın.", diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 4058874430b..fe54980e241 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -24,16 +24,12 @@ "restartFrame": "Çerçeveyi Yeniden Başlat", "removeBreakpoint": "Kesme Noktasını Kaldır", "removeAllBreakpoints": "Tüm Kesme Noktalarını Kaldır", - "enableBreakpoint": "Kesme Noktasını Etkinleştir", - "disableBreakpoint": "Kesme Noktasını Devre Dışı Bırak", "enableAllBreakpoints": "Tüm Kesme Noktalarını Etkinleştir", "disableAllBreakpoints": "Tüm Kesme Noktalarını Devre Dışı Bırak", "activateBreakpoints": "Kesme Noktalarını Etkinleştir", "deactivateBreakpoints": "Kesme Noktalarını Devre Dışı Bırak", "reapplyAllBreakpoints": "Tüm Kesme Noktalarını Yeniden Uygula", "addFunctionBreakpoint": "Fonksiyon Kesme Noktası Ekle", - "addConditionalBreakpoint": "Koşullu Kesme Noktası Ekle...", - "editConditionalBreakpoint": "Kesme Noktasını Düzenle...", "setValue": "Değeri Ayarla", "addWatchExpression": "İfade Ekle", "editWatchExpression": "İfadeyi Düzenle", diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json new file mode 100644 index 00000000000..30a355a88d6 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "breakpointWidgetHitCountPlaceholder": "İsabet sayısı koşulu sağlandığında mola ver. Kabul etmek için 'Enter', iptal etmek için 'Esc' tuşuna basın.", + "breakpointWidgetExpressionPlaceholder": "İfade değerlendirmesi doğru olduğunda mola ver. Kabul etmek için 'Enter', iptal etmek için 'Esc' tuşuna basın.", + "breakpointWidgetHitCountAriaLabel": "Program, burada sadece isabet sayısı koşulu sağlandığında durur. Kabul etmek için Enter veya iptal etmek için Escape tuşuna basın. ", + "breakpointWidgetAriaLabel": "Program, burada sadece bu koşul doğruysa durur. Kabul etmek için Enter veya iptal etmek için Escape tuşuna basın. ", + "expression": "İfade", + "hitCount": "İsabet Sayısı", + "logMessage": "Günlük Mesajı" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index d616f9186fd..05751eef2fe 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "editBreakpoint": "Kesme Noktasını Düzenle...", + "disableBreakpoint": "Kesme Noktasını Devre Dışı Bırak", + "enableBreakpoint": "Kesme Noktasını Etkinleştir", "removeBreakpoints": "Kesme Noktalarını Kaldır", "removeBreakpointOnColumn": "{0}. Sütundaki Kesme Noktasını Kaldır", "removeLineBreakpoint": "Satır Kesme Noktasını Kaldır", @@ -18,5 +21,6 @@ "enableBreakpoints": "{0}. Sütundaki Kesme Noktasını Etkinleştir", "enableBreakpointOnLine": "Satır Kesme Noktasını Etkinleştir", "addBreakpoint": "Kesme Noktası Ekle", + "conditionalBreakpoint": "Koşullu Kesme Noktası Ekle...", "addConfiguration": "Yapılandırma Ekle..." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index af1679c27ae..7a4c4a13ddb 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,7 +28,5 @@ "preLaunchTaskExitCode": "'{0}' ön başlatma görevi {1} çıkış koduyla sonlandı.", "showErrors": "Hataları Göster", "noFolderWorkspaceDebugError": "Aktif dosyada hata ayıklama yapılamıyor. Lütfen, dosyanın diskte kayıtlı olduğundan ve bu dosya türü için hata ayıklama eklentinizin olduğundan emin olun.", - "cancel": "İptal", - "DebugTaskNotFound": "'{0}' ön başlatma görevi bulunamadı.", - "taskNotTracked": "'{0}' başlatma öncesi görevi izlenemez." + "cancel": "İptal" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index dd429e27225..cf227b35676 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -18,6 +18,7 @@ "debugRequest": "Yapılandırmanın istek türü. \"launch\" veya \"attach\" olabilir.", "debugServer": "Sadece eklenti geliştirme hata ayıklaması için: eğer port belirtildiyse; Vs Code, bir hata ayıklama bağdaştırıcısına sunucu modunda bağlanmayı dener", "debugPrelaunchTask": "Hata ayıklama oturumu başlamadan önce çalıştırılacak görev.", + "debugPostDebugTask": "Hata ayıklama oturumu sona erdikten sonra çalıştırılacak görev.", "debugWindowsConfiguration": "Windows'a özel başlangıç yapılandırması öznitelikleri.", "debugOSXConfiguration": "OS X'e özel başlangıç yapılandırması öznitelikleri.", "debugLinuxConfiguration": "Linux'a özel başlangıç yapılandırması öznitelikleri.", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index ed1393cf726..ef58948ca49 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -27,7 +27,7 @@ "enableAutoUpdate": "Eklentileri Otomatik Olarak Güncelleştirmeyi Etkinleştir", "disableAutoUpdate": "Eklentileri Otomatik Olarak Güncelleştirmeyi Devre Dışı Bırak", "updateAll": "Tüm Eklentileri Güncelle", - "reloadAction": "Yeniden Yükle", + "reloadAction": "Pencereyi Yeniden Yükle", "postUpdateTooltip": "Güncellemek için yeniden yükleyin", "postUpdateMessage": "Güncellenen '{0}' eklentisini etkinleştirmek için bu pencere yeniden yüklensin mi?", "postEnableTooltip": "Etkinleştirmek için yeniden yükleyin", @@ -58,6 +58,8 @@ "configureWorkspaceFolderRecommendedExtensions": "Tavsiye Edilen Eklentileri Yapılandır (Çalışma Alanı Klasörü)", "malicious tooltip": "Bu eklentinin sorunlu olduğu bildirildi.", "malicious": "Kötü amaçlı", + "disabled": "Devre Dışı", + "disabled globally": "Devre Dışı", "disableAll": "Yüklü Tüm Eklentileri Devre Dışı Bırak", "disableAllWorkspace": "Bu Çalışma Alanı için Yüklü Tüm Eklentileri Devre Dışı Bırak", "enableAll": "Tüm Eklentileri Etkinleştir", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json new file mode 100644 index 00000000000..e72bf637256 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -0,0 +1,61 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Eklenti adı", + "extension id": "Eklenti tanımlayıcısı", + "preview": "Önizleme", + "builtin": "Yerleşik", + "publisher": "Yayıncı adı", + "install count": "Yüklenme sayısı", + "rating": "Derecelendirme", + "repository": "Depo", + "license": "Lisans", + "details": "Detaylar", + "contributions": "Eklemeler", + "changelog": "Değişim Günlüğü", + "dependencies": "Bağımlılıklar", + "noReadme": "README dosyası yok.", + "noChangelog": "Değişim günlüğü yok.", + "noContributions": "Hiçbir Ekleme Yapmıyor", + "noDependencies": "Bağımlılık Yok", + "settings": "Ayarlar ({0})", + "setting name": "Adı", + "description": "Açıklama", + "default": "Varsayılan", + "debuggers": "Hata Ayıklayıcılar ({0})", + "debugger name": "Adı", + "debugger type": "Tür", + "views": "Görünümler ({0})", + "view id": "ID", + "view name": "Adı", + "view location": "Yeri", + "localizations": "Çeviriler ({0})", + "localizations language id": "Dil Kimliği", + "localizations language name": "Dil Adı", + "localizations localized language name": "Dil Adı (Çevrilen Dilde)", + "colorThemes": "Renk Temaları ({0})", + "iconThemes": "Simge Temaları ({0})", + "colors": "Renkler ({0})", + "colorId": "Kimlik", + "defaultDark": "Koyu Varsayılan", + "defaultLight": "Açık Varsayılan", + "defaultHC": "Yüksek Karşıtlık Varsayılan", + "JSON Validation": "JSON Doğrulama ({0})", + "fileMatch": "Dosya Eşleşmesi", + "schema": "Şema", + "commands": "Komutlar ({0})", + "command name": "Adı", + "keyboard shortcuts": "Klavye Kısayolları", + "menuContexts": "Menü Bağlamları", + "languages": "Diller ({0})", + "language id": "ID", + "language name": "Adı", + "file extensions": "Dosya Uzantıları", + "grammar": "Gramer", + "snippets": "Parçacıklar" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 89dc18d2bf1..8a7b64b5ad3 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,7 +12,6 @@ "recommendedExtensions": "Tavsiye Edilen", "otherRecommendedExtensions": "Diğer Tavsiyeler", "workspaceRecommendedExtensions": "Çalışma Alanı Tavsiyeleri", - "builtInExtensions": "Yerleşik", "searchExtensions": "Markette Eklenti Ara", "sort by installs": "Sırala: Yüklenme Sayısına Göre", "sort by rating": "Sırala: Derecelendirmeye Göre", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index be5917d3287..e0b425c8efd 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,15 +27,11 @@ "confirmMoveTrashMessageMultiple": "Aşağıdaki {0} dosyayı silmek istediğinizden emin misiniz?", "confirmMoveTrashMessageFolder": "'{0}' ve içindekileri silmek istediğinizden emin misiniz?", "confirmMoveTrashMessageFile": "'{0}' öğesini silmek istediğinize emin misiniz?", - "undoBin": "Geri dönüşüm kutusundan geri alabilirsiniz.", - "undoTrash": "Çöp kutusundan geri alabilirsiniz.", "doNotAskAgain": "Bir daha sorma", "confirmDeleteMessageMultiple": "Aşağıdaki {0} dosyayı kalıcı olarak silmek istediğinizden emin misiniz?", "confirmDeleteMessageFolder": "'{0}' öğesini ve içindekileri kalıcı olarak silmek istediğinizden emin misiniz?", "confirmDeleteMessageFile": "'{0}' öğesini kalıcı olarak silmek istediğinizden emin misiniz?", "irreversible": "Bu eylem geri döndürülemez!", - "cancel": "İptal", - "permDelete": "Kalıcı Olarak Sil", "importFiles": "Dosya İçe Aktar", "confirmOverwrite": "Hedef klasörde aynı ada sahip bir dosya veya klasör zaten var. Değiştirmek istiyor musunuz?", "replaceButtonLabel": "&&Değiştir", diff --git a/i18n/trk/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json new file mode 100644 index 00000000000..7c90e93cddd --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/html/electron-browser/html.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.editor.label": "Html Önizlemesi" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/trk/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json new file mode 100644 index 00000000000..a11acc39795 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "html.voidInput": "Geçersiz düzenleyici girdisi." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..af6d69fa60e --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/html/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "developer": "Geliştirici" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json b/i18n/trk/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..13712f3e4c5 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/html/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Web Görünümü Geliştirici Araçlarını Aç", + "refreshWebviewLabel": "Web Görünümlerini Yeniden Yükle" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index eceab3d45e4..7fe7d2ea049 100644 --- a/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,6 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "yes": "Evet", + "no": "Hayır", + "doNotAskAgain": "Bir daha sorma", "JsonSchema.locale": "Kullanılacak Kullanıcı Arayüzü Dili.", "vscode.extension.contributes.localizations": "Düzenleyiciye yerelleştirmeleri ekler", "vscode.extension.contributes.localizations.languageId": "Görüntülenen dizelerin çevrileceği dilin kimliği.", diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json new file mode 100644 index 00000000000..0bdba9b12bf --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "copyMarker": "Kopyala", + "copyMarkerMessage": "Mesajı Kopyala" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json new file mode 100644 index 00000000000..03c12e0efce --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "totalProblems": "Toplam {0} Sorun", + "filteredProblems": "{1} Sorundan {0} Tanesi Gösteriliyor" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json new file mode 100644 index 00000000000..a2b9d4cb87b --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "label": "Sorunlar", + "tooltip.1": "Bu dosyada 1 sorun var", + "tooltip.N": "Bu dosyada {0} sorun var", + "markers.showOnFile": "Dosya ve klasörlerde Hata & Uyarıları göster." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json new file mode 100644 index 00000000000..8910520ca78 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -0,0 +1,34 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "viewCategory": "Görüntüle", + "problems.view.toggle.label": "Sorunları Aç/Kapat (Hatalar, Uyarılar, Bilgiler)", + "problems.view.focus.label": "Sorunlara Odakla (Hatalar, Uyarılar, Bilgiler)", + "problems.panel.configuration.title": "Sorunlar Görünümü", + "problems.panel.configuration.autoreveal": "Sorunlar görünümünün; dosyalar açılırken, dosyaları otomatik olarak ortaya çıkarıp çıkarmayacağını denetler.", + "markers.panel.title.problems": "Sorunlar", + "markers.panel.aria.label.problems.tree": "Dosyalara göre gruplandırılmış sorunlar", + "markers.panel.no.problems.build": "Şu ana kadar çalışma alanında herhangi bir sorun tespit edilmedi.", + "markers.panel.no.problems.filters": "Belirtilen süzgeç ölçütleriyle sonuç bulunamadı", + "markers.panel.action.filter": "Sorunları Süz", + "markers.panel.filter.placeholder": "Türe veya metne göre süz", + "markers.panel.filter.errors": "hatalar", + "markers.panel.filter.warnings": "uyarılar", + "markers.panel.filter.infos": "bilgilendirmeler", + "markers.panel.single.error.label": "1 Hata", + "markers.panel.multiple.errors.label": "{0} Hata", + "markers.panel.single.warning.label": "1 Uyarı", + "markers.panel.multiple.warnings.label": "{0} Uyarı", + "markers.panel.single.info.label": "1 Bilgilendirme", + "markers.panel.multiple.infos.label": "{0} Bilgilendirme", + "markers.panel.single.unknown.label": "1 Bilinmeyen", + "markers.panel.multiple.unknowns.label": "{0} Bilinmeyen", + "markers.panel.at.ln.col.number": "({0}, {1})", + "problems.tree.aria.label.resource": "{0} {1} sorun içeriyor", + "errors.warnings.show.label": "Hataları ve Uyarıları Göster" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index ddb5af6067c..3aa95c60f2d 100644 --- a/i18n/trk/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Çıktı", "logViewer": "Günlük Görüntüleyici", "viewCategory": "Görüntüle", - "clearOutput.label": "Çıktıyı Temizle" + "clearOutput.label": "Çıktıyı Temizle", + "openActiveLogOutputFile": "Görüntüle: Aktif Günlük Dosyasını Aç" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json index d655bbf2c91..c9272a2cea6 100644 --- a/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,8 +8,6 @@ ], "nextSearchIncludePattern": "Sonraki Aramaya Dahil Edilen Kalıbı Göster", "previousSearchIncludePattern": "Önceki Aramaya Dahil Edilen Kalıbı Göster", - "nextSearchExcludePattern": "Sonraki Aramada Hariç Tutulan Kalıbı Göster", - "previousSearchExcludePattern": "Önceki Aramada Hariç Tutulan Kalıbı Göster", "nextSearchTerm": "Sonraki Arama Terimini Göster", "previousSearchTerm": "Önceki Arama Terimini Göster", "showSearchViewlet": "Aramayı Göster", diff --git a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json index fc38590cc30..cb483fdd910 100644 --- a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,10 +7,6 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Arama Detaylarını Aç/Kapat", - "searchScope.includes": "dahil edilecek dosyalar", - "label.includes": "Aramaya Dahil Edilen Kalıplar", - "searchScope.excludes": "hariç tutulacak klasörler", - "label.excludes": "Aramada Hariç Tutulan Kalıplar", "replaceAll.confirmation.title": "Tümünü Değiştir", "replaceAll.confirm.button": "&&Değiştir", "replaceAll.occurrence.file.message": "{1} dosyadaki {0} tekrarlama '{2}' ile değiştirildi.", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 8edb00a2a6a..5eeb3e4000b 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,6 +28,8 @@ "JsonSchema.tasks.group.none": "Görevi grupsuz olarak atar", "JsonSchema.tasks.group": "Bu görevin ait olduğu çalıştırma grubunu tanımlar. Derleme grubuna eklemek için \"build\"ı ve test grubuna eklemek için \"test\"i destekler.", "JsonSchema.tasks.type": "Görevin bir işlem olarak veya bir kabukta komut olarak çalıştırılıp çalıştırılmayacağını tanımlar.", + "JsonSchema.command": "Çalıştırılacak komut. Harici bir program veya bir kabuk komutu olabilir.", + "JsonSchema.tasks.args": "Bu görev çağrıldığında, komuta iletilecek argümanlar.", "JsonSchema.tasks.label": "Görevin kullanıcı arayüzü etiketi", "JsonSchema.version": "Yapılandırmanın sürüm numarası.", "JsonSchema.tasks.identifier": "launch.json veya dependsOn maddesindeki göreve atıfta başvuracak, kullanıcı tanımlı bir tanımlayıcı.", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 1d0ce65d0fb..88cc53075e4 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -8,9 +8,11 @@ ], "tasksCategory": "Görevler", "ConfigureTaskRunnerAction.label": "Görevi Yapılandır", - "problems": "Sorunlar", + "totalErrors": "{0} Hata", + "totalWarnings": "{0} Uyarı", + "totalInfos": "{0} Bilgilendirme", "building": "Derleniyor...", - "manyMarkers": "99+", + "manyProblems": "10b+", "runningTasks": "Çalışan Görevleri Göster", "tasks": "Görevler", "TaskSystem.noHotSwap": "Aktif bir görev çalıştıran görev yürütme motorunu değiştirmek pencereyi yeniden yüklemeyi gerektirir", @@ -46,8 +48,8 @@ "recentlyUsed": "yakınlarda kullanılan görevler", "configured": "yapılandırılmış görevler", "detected": "algılanan görevler", - "TaskService.ignoredFolder": "0.1.0 görev sürümünü kullandıkları için şu çalışma alanı klasörleri yok sayıldı: {0}", "TaskService.notAgain": "Tekrar Gösterme", + "TaskService.ignoredFolder": "0.1.0 görev sürümünü kullandıkları için şu çalışma alanı klasörleri yok sayıldı: {0}", "TaskService.pickRunTask": "Çalıştırılacak görevi seçin", "TaslService.noEntryToRun": "Çalıştırılacak hiçbir görev bulunamadı. Görevleri Yapılandır...", "TaskService.fetchingBuildTasks": "Derleme görevleri alınıyor...", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 9c3c1e8fd86..707fc6758f4 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -17,7 +17,6 @@ "ConfigurationParser.missingRequiredProperty": "Hata: ihtiyaç duyulan '{1}' özelliği, '{0}' görev yapılandırmasında eksik. Görev yapılandırması yok sayılacaktır.", "ConfigurationParser.notCustom": "Hata: 'tasks' bir özel görev olarak tanımlanmamış. Yapılandırma yok sayılacaktır.\n{0}\n", "ConfigurationParser.noTaskName": "Hata: bir görev, bir 'label' özelliği belirtmelidir. Görev yok sayılacaktır.\n{0}\n", - "taskConfiguration.shellArgs": "Uyarı: '{0}' görevi bir kabuk komutudur ve argümanlarından biri kaçış karakteri içermeyen boşluklar içeriyor olabilir. Doğru komut satırı alıntısını sağlamak için lütfen argümanları komutlarla birleştirin.", "taskConfiguration.noCommandOrDependsOn": "Hata: '{0}' görevi bir komut veya dependsOn özelliği belirtmiyor. Görev yok sayılacaktır. Görevin tanımı:\n{1}", "taskConfiguration.noCommand": "Hata: '{0}' görevi bir komut tanımlamıyor. Görev yok sayılacaktır. Görevin tanımı:\n{1}", "TaskParse.noOsSpecificGlobalTasks": "2.0.0 görev sürümü genel işletim sistemi özel görevlerini desteklemiyor. Bunları işletim sistemine özel komut içeren bir göreve çevirin. Etkilenen görevler:\n{0}" diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index ad9592dd9e3..f2014fcc12e 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -7,8 +7,8 @@ "Do not edit this file. It is machine generated." ], "copy": "Kopyala", + "split": "Böl", "paste": "Yapıştır", "selectAll": "Tümünü Seç", - "clear": "Temizle", - "split": "Böl" + "clear": "Temizle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json new file mode 100644 index 00000000000..2cfd79cc9e0 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "releaseNotesInputName": "Sürüm Notları: {0}", + "unassigned": "atanmamış" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 795a37034f6..c60ad91555b 100644 --- a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "later": "Daha Sonra", - "unassigned": "atanmamış", "releaseNotes": "Sürüm Notları", "showReleaseNotes": "Sürüm Notlarını Göster", "read the release notes": "{0} v{1} uygulamasına hoş geldiniz! Sürüm Notları'nı okumak ister misiniz?", diff --git a/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json new file mode 100644 index 00000000000..4c6d2775a03 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "webview.editor.label": "web görünümü düzenleyicisi" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json new file mode 100644 index 00000000000..271702f6cc6 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "telemetryOptOut.readMore": "Devamını oku" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/trk/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json b/i18n/trk/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json new file mode 100644 index 00000000000..c9b9ed878f8 --- /dev/null +++ b/i18n/trk/src/vs/workbench/services/dialogs/electron-browser/dialogService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "yesButton": "&&Evet", + "cancelButton": "İptal" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 13fc407f066..4d4a6d071a8 100644 --- a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,7 +10,6 @@ "neverShowAgain": "Tekrar Gösterme", "netVersionError": "Microsoft .NET Framework 4.5 gerekli. Yüklemek için bağlantıyı izleyin.", "learnMore": "Talimatlar", - "enospcError": "{0} için dosya işleçleri bitiyor. Bu sorunu çözmek için lütfen yönerge bağlantısını izleyin.", "binFailed": "'{0}' geri dönüşüm kutusuna taşınamadı", "trashFailed": "'{0}' çöpe taşınamadı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json index a9f7d643231..0032045d6c1 100644 --- a/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,7 +9,6 @@ "fileInvalidPath": "Geçersiz dosya kaynağı ({0})", "fileIsDirectoryError": "Dosya bir dizindir", "fileNotModifiedError": "Dosya şu tarihten beri değiştirilmemiş:", - "fileTooLargeForHeapError": "Dosya boyutu pencere bellek sınırını aşıyor, lütfen code --max-memory=YENIBOYUT komutunu çalıştırın", "fileTooLargeError": "Dosya, açmak için çok büyük", "fileNotFoundError": "Dosya bulunamadı ({0})", "fileBinaryError": "Dosya ikili olarak görünüyor ve metin olarak açılamıyor", diff --git a/i18n/trk/src/vs/workbench/services/progress/browser/progressService2.i18n.json b/i18n/trk/src/vs/workbench/services/progress/browser/progressService2.i18n.json index c5336c074ce..4e6920ae96e 100644 --- a/i18n/trk/src/vs/workbench/services/progress/browser/progressService2.i18n.json +++ b/i18n/trk/src/vs/workbench/services/progress/browser/progressService2.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "progress.subtitle": "{0} - {1}", - "progress.title": "{0}: {1}" + "progress.title": "{0}: {1}", + "cancel": "İptal" } \ No newline at end of file From 5e6decf62a62464499a4d1a22c88299ee12afc85 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 28 Mar 2018 18:27:57 -0700 Subject: [PATCH 0242/1070] Fix #46828 - show both search result count badge and action buttons in wide mode --- .../parts/search/browser/media/searchview.css | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/media/searchview.css b/src/vs/workbench/parts/search/browser/media/searchview.css index 9592001ebe8..11d4a566ac9 100644 --- a/src/vs/workbench/parts/search/browser/media/searchview.css +++ b/src/vs/workbench/parts/search/browser/media/searchview.css @@ -184,10 +184,10 @@ flex: 1; } -.search-view .monaco-tree .monaco-tree-row:hover:not(.highlighted) .foldermatch .monaco-icon-label, -.search-view .monaco-tree .monaco-tree-row.focused .foldermatch .monaco-icon-label, -.search-view .monaco-tree .monaco-tree-row:hover:not(.highlighted) .filematch .monaco-icon-label, -.search-view .monaco-tree .monaco-tree-row.focused .filematch .monaco-icon-label { +.search-view:not(.wide) .monaco-tree .monaco-tree-row:hover:not(.highlighted) .foldermatch .monaco-icon-label, +.search-view:not(.wide) .monaco-tree .monaco-tree-row.focused .foldermatch .monaco-icon-label, +.search-view:not(.wide) .monaco-tree .monaco-tree-row:hover:not(.highlighted) .filematch .monaco-icon-label, +.search-view:not(.wide) .monaco-tree .monaco-tree-row.focused .filematch .monaco-icon-label { flex: 1; } @@ -282,15 +282,24 @@ margin-right: 12px; } -.search-view > .results > .monaco-tree .monaco-tree-row:hover .content .filematch .monaco-count-badge, -.search-view > .results > .monaco-tree .monaco-tree-row:hover .content .foldermatch .monaco-count-badge, -.search-view > .results > .monaco-tree .monaco-tree-row:hover .content .linematch .monaco-count-badge, -.search-view > .results > .monaco-tree .monaco-tree-row.focused .content .filematch .monaco-count-badge, -.search-view > .results > .monaco-tree .monaco-tree-row.focused .content .foldermatch .monaco-count-badge, -.search-view > .results > .monaco-tree .monaco-tree-row.focused .content .linematch .monaco-count-badge { +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row:hover .content .filematch .monaco-count-badge, +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row:hover .content .foldermatch .monaco-count-badge, +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row:hover .content .linematch .monaco-count-badge, +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row.focused .content .filematch .monaco-count-badge, +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row.focused .content .foldermatch .monaco-count-badge, +.search-view:not(.wide) > .results > .monaco-tree .monaco-tree-row.focused .content .linematch .monaco-count-badge { display: none; } +.search-view.wide > .results > .monaco-tree .monaco-tree-row:hover .content .filematch .badge, +.search-view.wide > .results > .monaco-tree .monaco-tree-row:hover .content .foldermatch .badge, +.search-view.wide > .results > .monaco-tree .monaco-tree-row:hover .content .linematch .badge, +.search-view.wide > .results > .monaco-tree .monaco-tree-row.focused .content .filematch .badge, +.search-view.wide > .results > .monaco-tree .monaco-tree-row.focused .content .foldermatch .badge, +.search-view.wide > .results > .monaco-tree .monaco-tree-row.focused .content .linematch .badge { + flex: 1; +} + .search-view .focused .monaco-tree-row.selected:not(.highlighted) > .content.actions .action-remove, .vs-dark .monaco-workbench .search-view .focused .monaco-tree-row.selected:not(.highlighted) > .content.actions .action-remove { background: url("action-remove-focus.svg") center center no-repeat; From 89b196e08fad43d6edb3a93ef75d629ba27094c3 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Wed, 28 Mar 2018 19:39:30 -0700 Subject: [PATCH 0243/1070] Publisher info is now considered SystemMetaData --- .../common/extensionManagementUtil.ts | 15 ++++++--------- .../workbench/api/node/extHostExtensionService.ts | 4 +--- .../electron-browser/workbenchThemeService.ts | 4 +--- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts b/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts index 54fcf01e4d9..7d1bd38ba36 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts @@ -69,6 +69,9 @@ export function getLocalExtensionTelemetryData(extension: ILocalExtension): any id: getGalleryExtensionIdFromLocal(extension), name: extension.manifest.name, galleryId: null, + publisherId: extension.metadata ? extension.metadata.publisherId : null, + publisherName: extension.manifest.publisher, + publisherDisplayName: extension.metadata ? extension.metadata.publisherDisplayName : null, dependencies: extension.manifest.extensionDependencies && extension.manifest.extensionDependencies.length > 0 }; } @@ -79,12 +82,9 @@ export function getLocalExtensionTelemetryData(extension: ILocalExtension): any "id" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "name": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "galleryId": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "publisherId": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "publisherName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "publisherDisplayName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "galleryPublisherId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, - "galleryPublisherName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, - "galleryPublisherDisplayName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, + "publisherId": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "publisherName": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "publisherDisplayName": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "dependencies": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "${include}": [ "${GalleryExtensionTelemetryData2}" @@ -99,9 +99,6 @@ export function getGalleryExtensionTelemetryData(extension: IGalleryExtension): publisherId: extension.publisherId, publisherName: extension.publisher, publisherDisplayName: extension.publisherDisplayName, - galleryPublisherId: extension.publisherId, - galleryPublisherName: extension.publisher, - galleryPublisherDisplayName: extension.publisherDisplayName, dependencies: extension.properties.dependencies.length > 0, ...extension.telemetryData }; diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts index 949c69abdca..25e95031280 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts @@ -423,8 +423,7 @@ function getTelemetryActivationEvent(extensionDescription: IExtensionDescription "TelemetryActivationEvent" : { "id": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, "name": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, - "publisherDisplayName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "galleryPublisherDisplayName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, + "publisherDisplayName": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "activationEvents": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "isBuiltin": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } @@ -433,7 +432,6 @@ function getTelemetryActivationEvent(extensionDescription: IExtensionDescription id: extensionDescription.id, name: extensionDescription.name, publisherDisplayName: extensionDescription.publisher, - galleryPublisherDisplayName: extensionDescription.publisher, activationEvents: extensionDescription.activationEvents ? extensionDescription.activationEvents.join(',') : null, isBuiltin: extensionDescription.isBuiltin }; diff --git a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts index 9c91aa72e6f..6e1bab75448 100644 --- a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts @@ -362,8 +362,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { "id" : { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, "name": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, "isBuiltin": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "publisherDisplayName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "galleryPublisherDisplayName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, + "publisherDisplayName": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "themeId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } } */ @@ -372,7 +371,6 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { name: themeData.extensionName, isBuiltin: themeData.extensionIsBuiltin, publisherDisplayName: themeData.extensionPublisher, - galleryPublisherDisplayName: themeData.extensionPublisher, themeId: themeId }); this.themeExtensionsActivated.set(key, true); From 952b2a641da89a6c7bc28387474bc8afd47f0d2f Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 28 Mar 2018 21:01:41 -0700 Subject: [PATCH 0244/1070] Bump node2 --- build/builtInExtensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index ddd3c9e44be..4fa344c81a9 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -6,7 +6,7 @@ }, { "name": "ms-vscode.node-debug2", - "version": "1.22.5", + "version": "1.22.6", "repo": "https://github.com/Microsoft/vscode-node-debug2" } ] \ No newline at end of file From b5f63bb2fb9e771921b69d5f6d619368787aa419 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Thu, 29 Mar 2018 07:50:23 +0200 Subject: [PATCH 0245/1070] Fixes #45261: Shell tasks force terminal window regardless of presentation setting --- .../parts/tasks/electron-browser/terminalTaskSystem.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index 02621b26855..d0cb9e4f524 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -380,8 +380,8 @@ export class TerminalTaskSystem implements ITaskSystem { if (!terminal) { return TPromise.wrapError(new Error(`Failed to create terminal for task ${task._label}`)); } - this.terminalService.setActiveInstance(terminal); if (task.command.presentation.reveal === RevealKind.Always || (task.command.presentation.reveal === RevealKind.Silent && task.problemMatchers.length === 0)) { + this.terminalService.setActiveInstance(terminal); this.terminalService.showPanel(task.command.presentation.focus); } this.activeTasks[Task.getMapKey(task)] = { terminal, task, promise }; From bb49e6e3c0317e23f01bdd01010dd48d27cc67fe Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 10:42:08 +0200 Subject: [PATCH 0246/1070] fix #46880 --- src/vs/vscode.d.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 672f56eb55b..243d44f73e5 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3749,29 +3749,29 @@ declare module 'vscode' { */ message: string; - /** - * A human-readable string describing the source of this - * diagnostic, e.g. 'typescript' or 'super lint'. - */ - source: string; - /** * The severity, default is [error](#DiagnosticSeverity.Error). */ severity: DiagnosticSeverity; + /** + * A human-readable string describing the source of this + * diagnostic, e.g. 'typescript' or 'super lint'. + */ + source?: string; + /** * A code or identifier for this diagnostics. Will not be surfaced * to the user, but should be used for later processing, e.g. when * providing [code actions](#CodeActionContext). */ - code: string | number; + code?: string | number; /** * An array of related diagnostic information, e.g. when symbol-names within * a scope collide all definitions can be marked via this property. */ - relatedInformation: DiagnosticRelatedInformation[]; + relatedInformation?: DiagnosticRelatedInformation[]; /** * Creates a new diagnostic object. From 98d0b747c2ff33513cb4a1b5b6432b1ac338a958 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 12:16:20 +0200 Subject: [PATCH 0247/1070] fix #46239 --- .../api/electron-browser/mainThreadFileSystem.ts | 13 ++++++++----- src/vs/workbench/api/node/extHost.protocol.ts | 4 ++-- src/vs/workbench/api/node/extHostFileSystem.ts | 13 +++++++++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index df14909d35f..35ea17279f0 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -56,8 +56,8 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { this._fileProvider.get(handle).$onFileSystemChange(changes); } - $reportFileChunk(handle: number, session: number, chunk: number[]): void { - this._fileProvider.get(handle).reportFileChunk(session, chunk); + $reportFileChunk(handle: number, session: number, base64Chunk: string): void { + this._fileProvider.get(handle).reportFileChunk(session, base64Chunk); } // --- search @@ -126,11 +126,14 @@ class RemoteFileSystemProvider implements IFileSystemProvider { return value; }); } - reportFileChunk(session: number, chunk: number[]): void { - this._reads.get(session).progress.report(Buffer.from(chunk)); + reportFileChunk(session: number, encodedChunk: string): void { + this._reads.get(session).progress.report(Buffer.from(encodedChunk, 'base64')); } write(resource: URI, content: Uint8Array): TPromise { - return this._proxy.$write(this._handle, resource, [].slice.call(content)); + let encoded = Buffer.isBuffer(content) + ? content.toString('base64') + : Buffer.from(content.buffer).toString('base64'); + return this._proxy.$write(this._handle, resource, encoded); } unlink(resource: URI): TPromise { return this._proxy.$unlink(this._handle, resource); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 1a1336e3367..fe1dfcdb6ed 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -382,7 +382,7 @@ export interface MainThreadFileSystemShape extends IDisposable { $unregisterProvider(handle: number): void; $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; - $reportFileChunk(handle: number, session: number, chunk: number[] | null): void; + $reportFileChunk(handle: number, session: number, base64Encoded: string | null): void; $handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void; } @@ -561,7 +561,7 @@ export interface ExtHostFileSystemShape { $utimes(handle: number, resource: UriComponents, mtime: number, atime: number): TPromise; $stat(handle: number, resource: UriComponents): TPromise; $read(handle: number, session: number, offset: number, count: number, resource: UriComponents): TPromise; - $write(handle: number, resource: UriComponents, content: number[]): TPromise; + $write(handle: number, resource: UriComponents, base64Encoded: string): TPromise; $unlink(handle: number, resource: UriComponents): TPromise; $move(handle: number, resource: UriComponents, target: UriComponents): TPromise; $mkdir(handle: number, resource: UriComponents): TPromise; diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 00dfa69b6df..5d8499e44fb 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -15,6 +15,7 @@ import { IPatternInfo } from 'vs/platform/search/common/search'; import { values } from 'vs/base/common/map'; import { Range } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; +import { IProgress } from 'vs/platform/progress/common/progress'; class FsLinkProvider implements vscode.DocumentLinkProvider { @@ -109,15 +110,19 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource))); } $read(handle: number, session: number, offset: number, count: number, resource: UriComponents): TPromise { - const progress = { + const progress: IProgress = { report: chunk => { - this._proxy.$reportFileChunk(handle, session, [].slice.call(chunk)); + let base64Chunk = Buffer.isBuffer(chunk) + ? chunk.toString('base64') + : Buffer.from(chunk.buffer).toString('base64'); + + this._proxy.$reportFileChunk(handle, session, base64Chunk); } }; return asWinJsPromise(token => this._fsProvider.get(handle).read(URI.revive(resource), offset, count, progress)); } - $write(handle: number, resource: UriComponents, content: number[]): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).write(URI.revive(resource), Buffer.from(content))); + $write(handle: number, resource: UriComponents, base64Content: string): TPromise { + return asWinJsPromise(token => this._fsProvider.get(handle).write(URI.revive(resource), Buffer.from(base64Content, 'base64'))); } $unlink(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).unlink(URI.revive(resource))); From 99bd3766b7514f101309ab12525890cb09be3aed Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 12:42:24 +0200 Subject: [PATCH 0248/1070] fix #43052 --- src/vs/workbench/api/electron-browser/mainThreadErrors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadErrors.ts b/src/vs/workbench/api/electron-browser/mainThreadErrors.ts index a1ff2a2dd6c..6c283a0d98c 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadErrors.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadErrors.ts @@ -16,7 +16,7 @@ export class MainThreadErrors implements MainThreadErrorsShape { } $onUnexpectedError(err: any | SerializedError): void { - if (err.$isError) { + if (err && err.$isError) { const { name, message, stack } = err; err = new Error(); err.message = message; From c26b220e799f6f99e876bdc18da758acd2300d87 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 29 Mar 2018 12:45:40 +0200 Subject: [PATCH 0249/1070] Fixes #45096: Write previous word in textare on OSX --- .../browser/controller/textAreaHandler.ts | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/browser/controller/textAreaHandler.ts b/src/vs/editor/browser/controller/textAreaHandler.ts index cf5620fdb7c..c8cfc5590e1 100644 --- a/src/vs/editor/browser/controller/textAreaHandler.ts +++ b/src/vs/editor/browser/controller/textAreaHandler.ts @@ -27,6 +27,7 @@ import { LineNumbersOverlay } from 'vs/editor/browser/viewParts/lineNumbers/line import { BareFontInfo } from 'vs/editor/common/config/fontInfo'; import { RenderLineNumbersType } from 'vs/editor/common/config/editorOptions'; import { EndOfLinePreference } from 'vs/editor/common/model'; +import { getMapForWordSeparators, WordCharacterClass } from 'vs/editor/common/controller/wordCharacterClassifier'; export interface ITextAreaHandlerHelper { visibleRangeForPositionRelativeToEditor(lineNumber: number, column: number): HorizontalRange; @@ -203,16 +204,19 @@ export class TextAreaHandler extends ViewPart { if (this._accessibilitySupport === platform.AccessibilitySupport.Disabled) { // We know for a fact that a screen reader is not attached // On OSX, we write the character before the cursor to allow for "long-press" composition + // Also on OSX, we write the word before the cursor to allow for the Accessibility Keyboard to give good hints if (platform.isMacintosh) { const selection = this._selections[0]; if (selection.isEmpty()) { const position = selection.getStartPosition(); - if (position.column > 1) { - const lineContent = this._context.model.getLineContent(position.lineNumber); - const charBefore = lineContent.charAt(position.column - 2); - if (!strings.isHighSurrogate(charBefore.charCodeAt(0))) { - return new TextAreaState(charBefore, 1, 1, position, position); - } + + let textBefore = this._getWordBeforePosition(position); + if (textBefore.length === 0) { + textBefore = this._getCharacterBeforePosition(position); + } + + if (textBefore.length > 0) { + return new TextAreaState(textBefore, textBefore.length, textBefore.length, position, position); } } } @@ -328,6 +332,35 @@ export class TextAreaHandler extends ViewPart { super.dispose(); } + private _getWordBeforePosition(position: Position): string { + const lineContent = this._context.model.getLineContent(position.lineNumber); + const wordSeparators = getMapForWordSeparators(this._context.configuration.editor.wordSeparators); + + let column = position.column; + let distance = 0; + while (column > 1) { + const charCode = lineContent.charCodeAt(column - 2); + const charClass = wordSeparators.get(charCode); + if (charClass !== WordCharacterClass.Regular || distance > 50) { + return lineContent.substring(column - 1, position.column - 1); + } + distance++; + column--; + } + return lineContent.substring(0, position.column - 1); + } + + private _getCharacterBeforePosition(position: Position): string { + if (position.column > 1) { + const lineContent = this._context.model.getLineContent(position.lineNumber); + const charBefore = lineContent.charAt(position.column - 2); + if (!strings.isHighSurrogate(charBefore.charCodeAt(0))) { + return charBefore; + } + } + return ''; + } + // --- begin event handlers public onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean { From 789b345ee02ea1e1ad4ced04bd44ffa0fdad1102 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 12:49:18 +0200 Subject: [PATCH 0250/1070] fix #41081 - cancel action computation when editor goes off-dom --- src/vs/editor/contrib/quickFix/quickFixWidget.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vs/editor/contrib/quickFix/quickFixWidget.ts b/src/vs/editor/contrib/quickFix/quickFixWidget.ts index 1fd65fa824b..aa223cc3cda 100644 --- a/src/vs/editor/contrib/quickFix/quickFixWidget.ts +++ b/src/vs/editor/contrib/quickFix/quickFixWidget.ts @@ -15,6 +15,7 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { Action } from 'vs/base/common/actions'; import { Event, Emitter } from 'vs/base/common/event'; import { ScrollType } from 'vs/editor/common/editorCommon'; +import { canceled } from 'vs/base/common/errors'; export class QuickFixContextMenu { @@ -39,6 +40,12 @@ export class QuickFixContextMenu { () => this._onDidExecuteCodeAction.fire(undefined)); }); }); + }).then(actions => { + if (!this._editor.getDomNode()) { + // cancel when editor went off-dom + return TPromise.wrapError(canceled()); + } + return actions; }); this._contextMenuService.showContextMenu({ From b670f87518ccd4165206e18c40c76d94b053e5c6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 29 Mar 2018 12:50:38 +0200 Subject: [PATCH 0251/1070] bring back listInactiveFocusBackground --- src/vs/platform/theme/common/colorRegistry.ts | 1 + src/vs/platform/theme/common/styler.ts | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/theme/common/colorRegistry.ts b/src/vs/platform/theme/common/colorRegistry.ts index 66aad012e30..0c86fecab82 100644 --- a/src/vs/platform/theme/common/colorRegistry.ts +++ b/src/vs/platform/theme/common/colorRegistry.ts @@ -196,6 +196,7 @@ export const listActiveSelectionBackground = registerColor('list.activeSelection export const listActiveSelectionForeground = registerColor('list.activeSelectionForeground', { dark: Color.white, light: Color.white, hc: null }, nls.localize('listActiveSelectionForeground', "List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")); export const listInactiveSelectionBackground = registerColor('list.inactiveSelectionBackground', { dark: '#3F3F46', light: '#CCCEDB', hc: null }, nls.localize('listInactiveSelectionBackground', "List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")); export const listInactiveSelectionForeground = registerColor('list.inactiveSelectionForeground', { dark: null, light: null, hc: null }, nls.localize('listInactiveSelectionForeground', "List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")); +export const listInactiveFocusBackground = registerColor('list.inactiveFocusBackground', { dark: '#313135', light: '#d8dae6', hc: null }, nls.localize('listInactiveSelectionBackground', "List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")); export const listHoverBackground = registerColor('list.hoverBackground', { dark: '#2A2D2E', light: '#F0F0F0', hc: null }, nls.localize('listHoverBackground', "List/Tree background when hovering over items using the mouse.")); export const listHoverForeground = registerColor('list.hoverForeground', { dark: null, light: null, hc: null }, nls.localize('listHoverForeground', "List/Tree foreground when hovering over items using the mouse.")); export const listDropBackground = registerColor('list.dropBackground', { dark: listFocusBackground, light: listFocusBackground, hc: null }, nls.localize('listDropBackground', "List/Tree drag and drop background when moving items around using the mouse.")); diff --git a/src/vs/platform/theme/common/styler.ts b/src/vs/platform/theme/common/styler.ts index 0b2f83624b6..07dfd1d9551 100644 --- a/src/vs/platform/theme/common/styler.ts +++ b/src/vs/platform/theme/common/styler.ts @@ -6,7 +6,7 @@ 'use strict'; import { ITheme, IThemeService } from 'vs/platform/theme/common/themeService'; -import { focusBorder, inputBackground, inputForeground, ColorIdentifier, selectForeground, selectBackground, selectListBackground, selectBorder, inputBorder, foreground, editorBackground, contrastBorder, inputActiveOptionBorder, listFocusBackground, listFocusForeground, listActiveSelectionBackground, listActiveSelectionForeground, listInactiveSelectionForeground, listInactiveSelectionBackground, listHoverBackground, listHoverForeground, listDropBackground, pickerGroupBorder, pickerGroupForeground, widgetShadow, inputValidationInfoBorder, inputValidationInfoBackground, inputValidationWarningBorder, inputValidationWarningBackground, inputValidationErrorBorder, inputValidationErrorBackground, activeContrastBorder, buttonForeground, buttonBackground, buttonHoverBackground, ColorFunction, lighten, badgeBackground, badgeForeground, progressBarBackground } from 'vs/platform/theme/common/colorRegistry'; +import { focusBorder, inputBackground, inputForeground, ColorIdentifier, selectForeground, selectBackground, selectListBackground, selectBorder, inputBorder, foreground, editorBackground, contrastBorder, inputActiveOptionBorder, listFocusBackground, listFocusForeground, listActiveSelectionBackground, listActiveSelectionForeground, listInactiveSelectionForeground, listInactiveSelectionBackground, listInactiveFocusBackground, listHoverBackground, listHoverForeground, listDropBackground, pickerGroupBorder, pickerGroupForeground, widgetShadow, inputValidationInfoBorder, inputValidationInfoBackground, inputValidationWarningBorder, inputValidationWarningBackground, inputValidationErrorBorder, inputValidationErrorBackground, activeContrastBorder, buttonForeground, buttonBackground, buttonHoverBackground, ColorFunction, lighten, badgeBackground, badgeForeground, progressBarBackground } from 'vs/platform/theme/common/colorRegistry'; import { IDisposable } from 'vs/base/common/lifecycle'; import { Color } from 'vs/base/common/color'; import { mixin } from 'vs/base/common/objects'; @@ -183,7 +183,7 @@ export function attachQuickOpenStyler(widget: IThemable, themeService: IThemeSer listFocusAndSelectionForeground: (style && style.listFocusAndSelectionForeground) || listActiveSelectionForeground, listInactiveSelectionBackground: (style && style.listInactiveSelectionBackground) || listInactiveSelectionBackground, listInactiveSelectionForeground: (style && style.listInactiveSelectionForeground) || listInactiveSelectionForeground, - listInactiveFocusBackground: (style && style.listInactiveFocusBackground), + listInactiveFocusBackground: (style && style.listInactiveFocusBackground) || listInactiveFocusBackground, listHoverBackground: (style && style.listHoverBackground) || listHoverBackground, listHoverForeground: (style && style.listHoverForeground) || listHoverForeground, listDropBackground: (style && style.listDropBackground) || listDropBackground, @@ -225,6 +225,7 @@ export const defaultListStyles: IColorMapping = { listFocusAndSelectionForeground: listActiveSelectionForeground, listInactiveSelectionBackground: listInactiveSelectionBackground, listInactiveSelectionForeground: listInactiveSelectionForeground, + listInactiveFocusBackground: listInactiveFocusBackground, listHoverBackground: listHoverBackground, listHoverForeground: listHoverForeground, listDropBackground: listDropBackground, From d689094a115ab8eac8a40e94ec2478b2203c4e0e Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 12:52:03 +0200 Subject: [PATCH 0252/1070] fix #43559 --- .../referenceSearch/referencesController.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/vs/editor/contrib/referenceSearch/referencesController.ts b/src/vs/editor/contrib/referenceSearch/referencesController.ts index 88079826a6d..349e1eb662c 100644 --- a/src/vs/editor/contrib/referenceSearch/referencesController.ts +++ b/src/vs/editor/contrib/referenceSearch/referencesController.ts @@ -155,16 +155,17 @@ export class ReferencesController implements editorCommon.IEditorContribution { // show widget return this._widget.setModel(this._model).then(() => { + if (this._widget) { // might have been closed + // set title + this._widget.setMetaTitle(options.getMetaTitle(this._model)); - // set title - this._widget.setMetaTitle(options.getMetaTitle(this._model)); - - // set 'best' selection - let uri = this._editor.getModel().uri; - let pos = new Position(range.startLineNumber, range.startColumn); - let selection = this._model.nearestReference(uri, pos); - if (selection) { - return this._widget.setSelection(selection); + // set 'best' selection + let uri = this._editor.getModel().uri; + let pos = new Position(range.startLineNumber, range.startColumn); + let selection = this._model.nearestReference(uri, pos); + if (selection) { + return this._widget.setSelection(selection); + } } return undefined; }); From aec9a5e0651d528fb281d49d1e5308f57d17862d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 12:57:14 +0200 Subject: [PATCH 0253/1070] fix #42602 --- src/vs/workbench/api/node/extHostDecorations.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/api/node/extHostDecorations.ts b/src/vs/workbench/api/node/extHostDecorations.ts index 89987b137bb..77d9b441fc8 100644 --- a/src/vs/workbench/api/node/extHostDecorations.ts +++ b/src/vs/workbench/api/node/extHostDecorations.ts @@ -43,6 +43,10 @@ export class ExtHostDecorations implements ExtHostDecorationsShape { return TPromise.join(requests.map(request => { const { handle, uri, id } = request; const provider = this._provider.get(handle); + if (!provider) { + // might have been unregistered in the meantime + return void 0; + } return asWinJsPromise(token => provider.provideDecoration(URI.revive(uri), token)).then(data => { result[id] = data && [data.priority, data.bubble, data.title, data.abbreviation, data.color, data.source]; }, err => { From f50b6d7f1391236123b033913025d7153c479b71 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Thu, 29 Mar 2018 15:03:49 +0200 Subject: [PATCH 0254/1070] Show Select All unchecked when none visible (fixes #46927) --- .../parts/quickinput/quickInputCheckboxList.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts index 626ba4fe499..4d6ce547687 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts @@ -202,17 +202,21 @@ export class QuickInputCheckboxList { } getAllVisibleChecked() { - return this.allVisibleChecked(this.elements); + return this.allVisibleChecked(this.elements, false); } - private allVisibleChecked(elements: CheckableElement[]) { + private allVisibleChecked(elements: CheckableElement[], whenNoneVisible = true) { for (let i = 0, n = elements.length; i < n; i++) { const element = elements[i]; - if (!element.hidden && !element.checked) { - return false; + if (!element.hidden) { + if (!element.checked) { + return false; + } else { + whenNoneVisible = true; + } } } - return true; + return whenNoneVisible; } getCheckedCount() { From 3462420866060614fe1a929ff8fb65972f484edb Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 29 Mar 2018 15:15:04 +0200 Subject: [PATCH 0255/1070] cap textual suggestions at 10k, #46930 --- .../common/services/editorSimpleWorker.ts | 87 ++++++++++++------- .../services/editorSimpleWorker.test.ts | 21 +++++ 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/src/vs/editor/common/services/editorSimpleWorker.ts b/src/vs/editor/common/services/editorSimpleWorker.ts index b7302571032..046b0f32902 100644 --- a/src/vs/editor/common/services/editorSimpleWorker.ts +++ b/src/vs/editor/common/services/editorSimpleWorker.ts @@ -22,6 +22,7 @@ import { getWordAtText, ensureValidWordDefinition } from 'vs/editor/common/model import { createMonacoBaseAPI } from 'vs/editor/common/standalone/standaloneBase'; import { IWordAtPosition, EndOfLineSequence } from 'vs/editor/common/model'; import { globals } from 'vs/base/common/platform'; +import { IIterator } from 'vs/base/common/iterator'; export interface IMirrorModel { readonly uri: URI; @@ -58,8 +59,8 @@ export interface ICommonModel { getLinesContent(): string[]; getLineCount(): number; getLineContent(lineNumber: number): string; + createWordIterator(wordDefinition: RegExp): IIterator; getWordUntilPosition(position: IPosition, wordDefinition: RegExp): IWordAtPosition; - getAllUniqueWords(wordDefinition: RegExp, skipWordOnce?: string): string[]; getValueInRange(range: IRange): string; getWordAtPosition(position: IPosition, wordDefinition: RegExp): Range; offsetAt(position: IPosition): number; @@ -146,30 +147,37 @@ class MirrorModel extends BaseMirrorModel implements ICommonModel { }; } - private _getAllWords(wordDefinition: RegExp): string[] { - let result: string[] = []; - this._lines.forEach((line) => { - this._wordenize(line, wordDefinition).forEach((info) => { - result.push(line.substring(info.start, info.end)); - }); - }); - return result; - } + public createWordIterator(wordDefinition: RegExp): IIterator { + let obj = { + done: false, + value: '' + }; + let lineNumber = 0; + let lineText: string; + let wordRangesIdx = 0; + let wordRanges: IWordRange[] = []; + let next = () => { + + if (wordRangesIdx < wordRanges.length) { + obj.done = false; + obj.value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end); + wordRangesIdx += 1; + + } else if (lineNumber >= this._lines.length) { + obj.done = true; + obj.value = undefined; - public getAllUniqueWords(wordDefinition: RegExp, skipWordOnce?: string): string[] { - let foundSkipWord = false; - let uniqueWords = Object.create(null); - return this._getAllWords(wordDefinition).filter((word) => { - if (skipWordOnce && !foundSkipWord && skipWordOnce === word) { - foundSkipWord = true; - return false; - } else if (uniqueWords[word]) { - return false; } else { - uniqueWords[word] = true; - return true; + lineText = this._lines[lineNumber]; + wordRanges = this._wordenize(lineText, wordDefinition); + wordRangesIdx = 0; + lineNumber += 1; + return next(); } - }); + + return obj; + }; + return { next }; } private _wordenize(content: string, wordDefinition: RegExp): IWordRange[] { @@ -427,6 +435,8 @@ export abstract class BaseEditorSimpleWorker { // ---- BEGIN suggest -------------------------------------------------------------------------- + private static readonly _suggestionsLimit = 10000; + public textualSuggest(modelUrl: string, position: IPosition, wordDef: string, wordDefFlags: string): TPromise { const model = this._getModel(modelUrl); if (model) { @@ -434,17 +444,32 @@ export abstract class BaseEditorSimpleWorker { 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 - }); + const seen: Record = Object.create(null); + seen[currentWord] = true; + + for ( + let iter = model.createWordIterator(wordDefRegExp), e = iter.next(); + !e.done && suggestions.length <= BaseEditorSimpleWorker._suggestionsLimit; + e = iter.next() + ) { + const word = e.value; + if (seen[word]) { + continue; } + seen[word] = true; + if (!isNaN(Number(word))) { + continue; + } + + suggestions.push({ + type: 'text', + label: word, + insertText: word, + noAutoAccept: true, + overwriteBefore: currentWord.length + }); } + return TPromise.as({ suggestions }); } return undefined; diff --git a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts index 0a8b62e8a55..0d55c58d7c1 100644 --- a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts +++ b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts @@ -168,4 +168,25 @@ suite('EditorSimpleWorker', () => { assert.equal(suggestions[0].label, 'foobar'); }); }); + + test('get words via iterator, issue #46930', function () { + + let model = worker.addModel([ + 'one line', // 1 + 'two line', // 2 + '', + 'past empty', + 'single', + '', + 'and now we are done' + ]); + + let words: string[] = []; + + for (let iter = model.createWordIterator(/[a-z]+/img), e = iter.next(); !e.done; e = iter.next()) { + words.push(e.value); + } + + assert.deepEqual(words, ['one', 'line', 'two', 'line', 'past', 'empty', 'single', 'and', 'now', 'we', 'are', 'done']); + }); }); From 11f5d549dbb69db924122a3d1131979e1c6bc795 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Thu, 29 Mar 2018 15:20:30 +0200 Subject: [PATCH 0256/1070] [css] path completion sometimes only works for one folder level. Fixes #46722 --- .../server/src/pathCompletion.ts | 13 ++--- .../server/src/test/completion.test.ts | 40 ++++++++++++--- .../server/src/modes/pathCompletion.ts | 13 ++--- .../server/src/test/completions.test.ts | 49 ++++++++++++++++++- .../about/media/icon.pic | 4 ++ 5 files changed, 94 insertions(+), 25 deletions(-) create mode 100644 extensions/html-language-features/server/src/test/pathCompletionFixtures/about/media/icon.pic diff --git a/extensions/css-language-features/server/src/pathCompletion.ts b/extensions/css-language-features/server/src/pathCompletion.ts index 2f840184a14..1f8ddfc2df1 100644 --- a/extensions/css-language-features/server/src/pathCompletion.ts +++ b/extensions/css-language-features/server/src/pathCompletion.ts @@ -54,16 +54,11 @@ export function providePathSuggestions(value: string, range: Range, activeDocFsP replaceRange = getReplaceRange(range, valueAfterLastSlash); } - let parentDir: string; - if (lastIndexOfSlash === -1) { - parentDir = path.resolve(root); - } else { - const valueBeforeLastSlash = value.slice(0, lastIndexOfSlash + 1); + const valueBeforeLastSlash = value.slice(0, lastIndexOfSlash + 1); - parentDir = startsWith(value, '/') - ? path.resolve(root, '.' + valueBeforeLastSlash) - : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); - } + const parentDir = startsWith(value, '/') + ? path.resolve(root, '.' + valueBeforeLastSlash) + : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); try { return fs.readdirSync(parentDir).map(f => { diff --git a/extensions/css-language-features/server/src/test/completion.test.ts b/extensions/css-language-features/server/src/test/completion.test.ts index 82f1af7026d..86f57ca523d 100644 --- a/extensions/css-language-features/server/src/test/completion.test.ts +++ b/extensions/css-language-features/server/src/test/completion.test.ts @@ -41,7 +41,7 @@ suite('Completions', () => { const position = document.positionAt(offset); if (!workspaceFolders) { - workspaceFolders = [{ name: 'x', uri: path.dirname(testUri) }]; + workspaceFolders = [{ name: 'x', uri: testUri.substr(0, testUri.lastIndexOf('/')) }]; } let participantResult = CompletionList.create([]); @@ -62,13 +62,14 @@ suite('Completions', () => { } test('CSS Path completion', function () { - let testUri = Uri.file(path.resolve(__dirname, '../../test/pathCompletionFixtures/about/about.css')).fsPath; + let testUri = Uri.file(path.resolve(__dirname, '../../test/pathCompletionFixtures/about/about.css')).toString(); + let folders = [{ name: 'x', uri: Uri.file(path.resolve(__dirname, '../../test')).toString() }]; assertCompletions('html { background-image: url("./|")', { items: [ { label: 'about.html', resultText: 'html { background-image: url("./about.html")' } ] - }, testUri); + }, testUri, folders); assertCompletions(`html { background-image: url('../|')`, { items: [ @@ -76,7 +77,7 @@ suite('Completions', () => { { label: 'index.html', resultText: `html { background-image: url('../index.html')` }, { label: 'src/', resultText: `html { background-image: url('../src/')` } ] - }, testUri); + }, testUri, folders); assertCompletions(`html { background-image: url('../src/a|')`, { items: [ @@ -84,12 +85,39 @@ suite('Completions', () => { { label: 'data/', resultText: `html { background-image: url('../src/data/')` }, { label: 'test.js', resultText: `html { background-image: url('../src/test.js')` } ] - }, testUri); + }, testUri, folders); assertCompletions(`html { background-image: url('../src/data/f|.asar')`, { items: [ { label: 'foo.asar', resultText: `html { background-image: url('../src/data/foo.asar')` } ] - }, testUri); + }, testUri, folders); + + assertCompletions(`html { background-image: url('|')`, { + items: [ + { label: 'about.css', resultText: `html { background-image: url('about.css')` }, + { label: 'about.html', resultText: `html { background-image: url('about.html')` }, + ] + }, testUri, folders); + + assertCompletions(`html { background-image: url('/|')`, { + items: [ + { label: 'pathCompletionFixtures/', resultText: `html { background-image: url('/pathCompletionFixtures/')` } + ] + }, testUri, folders); + + assertCompletions(`html { background-image: url('/pathCompletionFixtures/|')`, { + items: [ + { label: 'about/', resultText: `html { background-image: url('/pathCompletionFixtures/about/')` }, + { label: 'index.html', resultText: `html { background-image: url('/pathCompletionFixtures/index.html')` }, + { label: 'src/', resultText: `html { background-image: url('/pathCompletionFixtures/src/')` } + ] + }, testUri, folders); + + assertCompletions(`html { background-image: url("/|")`, { + items: [ + { label: 'pathCompletionFixtures/', resultText: `html { background-image: url("/pathCompletionFixtures/")` } + ] + }, testUri, folders); }); }); \ No newline at end of file diff --git a/extensions/html-language-features/server/src/modes/pathCompletion.ts b/extensions/html-language-features/server/src/modes/pathCompletion.ts index 10e4649a0e3..139ecc9a25c 100644 --- a/extensions/html-language-features/server/src/modes/pathCompletion.ts +++ b/extensions/html-language-features/server/src/modes/pathCompletion.ts @@ -69,16 +69,11 @@ function providePaths(valueBeforeCursor: string, activeDocFsPath: string, root?: } const lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/'); - let parentDir: string; - if (lastIndexOfSlash === -1) { - parentDir = path.resolve(root); - } else { - const valueBeforeLastSlash = valueBeforeCursor.slice(0, lastIndexOfSlash + 1); + const valueBeforeLastSlash = valueBeforeCursor.slice(0, lastIndexOfSlash + 1); - parentDir = startsWith(valueBeforeCursor, '/') - ? path.resolve(root, '.' + valueBeforeLastSlash) - : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); - } + const parentDir = startsWith(valueBeforeCursor, '/') + ? path.resolve(root, '.' + valueBeforeLastSlash) + : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); try { return fs.readdirSync(parentDir).map(f => { diff --git a/extensions/html-language-features/server/src/test/completions.test.ts b/extensions/html-language-features/server/src/test/completions.test.ts index 23b119eb826..1b2b2076ead 100644 --- a/extensions/html-language-features/server/src/test/completions.test.ts +++ b/extensions/html-language-features/server/src/test/completions.test.ts @@ -166,6 +166,7 @@ suite('HTML Path Completion', () => { }); test('Empty Path Value', () => { + // document: index.html testCompletionFor(' + + \ No newline at end of file diff --git a/src/vs/code/electron-browser/processExplorer/processExplorer.js b/src/vs/code/electron-browser/processExplorer/processExplorer.js new file mode 100644 index 00000000000..1fdb4bb8296 --- /dev/null +++ b/src/vs/code/electron-browser/processExplorer/processExplorer.js @@ -0,0 +1,175 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +const path = require('path'); +const fs = require('fs'); +const remote = require('electron').remote; + +function assign(destination, source) { + return Object.keys(source) + .reduce(function (r, key) { r[key] = source[key]; return r; }, destination); +} + +function parseURLQueryArgs() { + const search = window.location.search || ''; + + return search.split(/[?&]/) + .filter(function (param) { return !!param; }) + .map(function (param) { return param.split('='); }) + .filter(function (param) { return param.length === 2; }) + .reduce(function (r, param) { r[param[0]] = decodeURIComponent(param[1]); return r; }, {}); +} + +function uriFromPath(_path) { + var pathName = path.resolve(_path).replace(/\\/g, '/'); + if (pathName.length > 0 && pathName.charAt(0) !== '/') { + pathName = '/' + pathName; + } + + return encodeURI('file://' + pathName); +} + +function readFile(file) { + return new Promise(function(resolve, reject) { + fs.readFile(file, 'utf8', function(err, data) { + if (err) { + reject(err); + return; + } + resolve(data); + }); + }); +} + +function main() { + const args = parseURLQueryArgs(); + const configuration = JSON.parse(args['config'] || '{}') || {}; + + assign(process.env, configuration.userEnv); + + //#region Add support for using node_modules.asar + (function () { + const path = require('path'); + const Module = require('module'); + let NODE_MODULES_PATH = path.join(configuration.appRoot, 'node_modules'); + if (/[a-z]\:/.test(NODE_MODULES_PATH)) { + // Make drive letter uppercase + NODE_MODULES_PATH = NODE_MODULES_PATH.charAt(0).toUpperCase() + NODE_MODULES_PATH.substr(1); + } + const NODE_MODULES_ASAR_PATH = NODE_MODULES_PATH + '.asar'; + + const originalResolveLookupPaths = Module._resolveLookupPaths; + Module._resolveLookupPaths = function (request, parent, newReturn) { + const result = originalResolveLookupPaths(request, parent, newReturn); + + const paths = newReturn ? result : result[1]; + for (let i = 0, len = paths.length; i < len; i++) { + if (paths[i] === NODE_MODULES_PATH) { + paths.splice(i, 0, NODE_MODULES_ASAR_PATH); + break; + } + } + + return result; + }; + })(); + //#endregion + + // Get the nls configuration into the process.env as early as possible. + var nlsConfig = { availableLanguages: {} }; + const config = process.env['VSCODE_NLS_CONFIG']; + if (config) { + process.env['VSCODE_NLS_CONFIG'] = config; + try { + nlsConfig = JSON.parse(config); + } catch (e) { /*noop*/ } + } + + if (nlsConfig._resolvedLanguagePackCoreLocation) { + let bundles = Object.create(null); + nlsConfig.loadBundle = function(bundle, language, cb) { + let result = bundles[bundle]; + if (result) { + cb(undefined, result); + return; + } + let bundleFile = path.join(nlsConfig._resolvedLanguagePackCoreLocation, bundle.replace(/\//g, '!') + '.nls.json'); + readFile(bundleFile).then(function (content) { + let json = JSON.parse(content); + bundles[bundle] = json; + cb(undefined, json); + }) + .catch(cb); + }; + } + + var locale = nlsConfig.availableLanguages['*'] || 'en'; + if (locale === 'zh-tw') { + locale = 'zh-Hant'; + } else if (locale === 'zh-cn') { + locale = 'zh-Hans'; + } + + window.document.documentElement.setAttribute('lang', locale); + + const extractKey = function (e) { + return [ + e.ctrlKey ? 'ctrl-' : '', + e.metaKey ? 'meta-' : '', + e.altKey ? 'alt-' : '', + e.shiftKey ? 'shift-' : '', + e.keyCode + ].join(''); + }; + + const TOGGLE_DEV_TOOLS_KB = (process.platform === 'darwin' ? 'meta-alt-73' : 'ctrl-shift-73'); // mac: Cmd-Alt-I, rest: Ctrl-Shift-I + const RELOAD_KB = (process.platform === 'darwin' ? 'meta-82' : 'ctrl-82'); // mac: Cmd-R, rest: Ctrl-R + + window.addEventListener('keydown', function (e) { + const key = extractKey(e); + if (key === TOGGLE_DEV_TOOLS_KB) { + remote.getCurrentWebContents().toggleDevTools(); + } else if (key === RELOAD_KB) { + remote.getCurrentWindow().reload(); + } + }); + + // Load the loader + const loaderFilename = configuration.appRoot + '/out/vs/loader.js'; + const loaderSource = fs.readFileSync(loaderFilename); + require('vm').runInThisContext(loaderSource, { filename: loaderFilename }); + var define = global.define; + global.define = undefined; + + window.nodeRequire = require.__$__nodeRequire; + + define('fs', ['original-fs'], function (originalFS) { return originalFS; }); // replace the patched electron fs with the original node fs for all AMD code + + window.MonacoEnvironment = {}; + const rootUrl = uriFromPath(configuration.appRoot) + '/out'; + + require.config({ + baseUrl: rootUrl, + 'vs/nls': nlsConfig, + nodeCachedDataDir: configuration.nodeCachedDataDir, + nodeModules: [/*BUILD->INSERT_NODE_MODULES*/] + }); + + if (nlsConfig.pseudo) { + require(['vs/nls'], function (nlsPlugin) { + nlsPlugin.setPseudoTranslation(nlsConfig.pseudo); + }); + } + + require([ + 'vs/code/electron-browser/processExplorer/processExplorerMain' + ], function (processExplorer) { + processExplorer.startup(configuration.data); + }); +} + +main(); diff --git a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts new file mode 100644 index 00000000000..1fb3ca60b3b --- /dev/null +++ b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts @@ -0,0 +1,184 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import 'vs/css!./media/processExplorer'; +import { listProcesses, ProcessItem } from 'vs/base/node/ps'; +import { remote, webFrame } from 'electron'; +import { repeat } from 'vs/base/common/strings'; +import { totalmem } from 'os'; +import product from 'vs/platform/node/product'; +import { localize } from 'vs/nls'; +import { ProcessExplorerData, ProcessExplorerStyles } from '../../../platform/issue/common/issue'; +import * as browser from 'vs/base/browser/browser'; +import * as platform from 'vs/base/common/platform'; + +let processList: any[]; + +function getProcessList(rootProcess: ProcessItem) { + const processes: any[] = []; + + if (rootProcess) { + getProcessItem(processes, rootProcess, 0); + } + + return processes; +} + +function getProcessItem(processes: any[], item: ProcessItem, indent: number): void { + const isRoot = (indent === 0); + + const MB = 1024 * 1024; + + // Format name with indent + const name = isRoot ? `${product.applicationName} main` : item.name; + const formattedName = isRoot ? name : `${repeat(' ', indent)} ${name}`; + const memory = process.platform === 'win32' ? item.mem : (totalmem() * (item.mem / 100)); + processes.push({ + cpu: Number(item.load.toFixed(0)), + memory: Number((memory / MB).toFixed(0)), + pid: Number((item.pid).toFixed(0)), + name, + formattedName, + cmd: item.cmd + }); + + // Recurse into children if any + if (Array.isArray(item.children)) { + item.children.forEach(child => getProcessItem(processes, child, indent + 1)); + } +} + +function getProcessIdWithHighestProperty(processList, propertyName: string) { + let max = 0; + let maxProcessId; + processList.forEach(process => { + if (process[propertyName] > max) { + max = process[propertyName]; + maxProcessId = process.pid; + } + }); + + return maxProcessId; +} + +function updateProcessInfo(processList): void { + const target = document.getElementById('process-list'); + const highestCPUProcess = getProcessIdWithHighestProperty(processList, 'cpu'); + const highestMemoryProcess = getProcessIdWithHighestProperty(processList, 'memory'); + + let tableHtml = ` + + ${localize('cpu', "CPU %")} + ${localize('memory', "Memory (MB)")} + ${localize('pid', "pid")} + ${localize('name', "Name")} + `; + + processList.forEach(p => { + const cpuClass = p.pid === highestCPUProcess ? 'highest' : ''; + const memoryClass = p.pid === highestMemoryProcess ? 'highest' : ''; + + tableHtml += ` + + ${p.cpu} + ${p.memory} + ${p.pid} + ${p.formattedName} + `; + }); + + target.innerHTML = `${tableHtml}
`; +} + +function applyStyles(styles: ProcessExplorerStyles): void { + const styleTag = document.createElement('style'); + const content: string[] = []; + + if (styles.hoverBackground) { + content.push(`tbody > tr:hover { background-color: ${styles.hoverBackground}; }`); + } + + if (styles.hoverForeground) { + content.push(`tbody > tr:hover{ color: ${styles.hoverForeground}; }`); + } + + if (styles.highlightForeground) { + content.push(`.highest { color: ${styles.highlightForeground}; }`); + } + + styleTag.innerHTML = content.join('\n'); + document.head.appendChild(styleTag); + document.body.style.color = styles.color; +} + +function applyZoom(zoomLevel: number): void { + webFrame.setZoomLevel(zoomLevel); + browser.setZoomFactor(webFrame.getZoomFactor()); + // See https://github.com/Microsoft/vscode/issues/26151 + // Cannot be trusted because the webFrame might take some time + // until it really applies the new zoom level + browser.setZoomLevel(webFrame.getZoomLevel(), /*isTrusted*/false); +} + +function showContextMenu(e) { + e.preventDefault(); + + const pid = parseInt(e.currentTarget.id); + if (pid && typeof pid === 'number') { + const menu = new remote.Menu(); + menu.append(new remote.MenuItem({ + label: localize('killProcess', "Kill Process"), + click() { + process.kill(pid, 'SIGTERM'); + } + }) + ); + + menu.append(new remote.MenuItem({ + label: localize('forceKillProcess', "Force Kill Process"), + click() { + process.kill(pid, 'SIGKILL'); + } + }) + ); + + menu.popup(remote.getCurrentWindow()); + } +} + +export function startup(data: ProcessExplorerData): void { + applyStyles(data.styles); + applyZoom(data.zoomLevel); + + setInterval(() => listProcesses(remote.process.pid).then(processes => { + processList = getProcessList(processes); + updateProcessInfo(processList); + + const tableRows = document.getElementsByTagName('tr'); + for (let i = 0; i < tableRows.length; i++) { + const tableRow = tableRows[i]; + tableRow.addEventListener('click', (e) => { + showContextMenu(e); + }); + } + }), 1200); + + + document.onkeydown = (e: KeyboardEvent) => { + const cmdOrCtrlKey = platform.isMacintosh ? e.metaKey : e.ctrlKey; + + // Cmd/Ctrl + zooms in + if (cmdOrCtrlKey && e.keyCode === 187) { + applyZoom(webFrame.getZoomLevel() + 1); + } + + // Cmd/Ctrl - zooms out + if (cmdOrCtrlKey && e.keyCode === 189) { + applyZoom(webFrame.getZoomLevel() - 1); + } + }; +} \ No newline at end of file diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index 46d965ac212..dad88c4fc00 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -942,6 +942,8 @@ export class CodeMenu { } }, false)); + const openProcessExplorer = new MenuItem({ label: this.mnemonicLabel(nls.localize({ key: 'miOpenProcessExplorerer', comment: ['&& denotes a mnemonic'] }, "Open &&Process Explorer")), click: () => this.runActionInRenderer('workbench.action.openProcessExplorer') }); + let reportIssuesItem: Electron.MenuItem = null; if (product.reportIssueUrl) { const label = nls.localize({ key: 'miReportIssue', comment: ['&& denotes a mnemonic', 'Translate this to "Report Issue in English" in all languages please!'] }, "Report &&Issue"); @@ -990,7 +992,8 @@ export class CodeMenu { }) : null, (product.licenseUrl || product.privacyStatementUrl) ? __separator__() : null, toggleDevToolsItem, - isWindows && product.quality !== 'stable' ? showAccessibilityOptions : null + openProcessExplorer, + isWindows && product.quality !== 'stable' ? showAccessibilityOptions : null, ]).forEach(item => helpMenu.append(item)); if (!isMacintosh) { @@ -1029,7 +1032,7 @@ export class CodeMenu { } private openAccessibilityOptions(): void { - let win = new BrowserWindow({ + const win = new BrowserWindow({ alwaysOnTop: true, skipTaskbar: true, resizable: false, diff --git a/src/vs/platform/issue/common/issue.ts b/src/vs/platform/issue/common/issue.ts index 8955b50b076..228bcdfefb1 100644 --- a/src/vs/platform/issue/common/issue.ts +++ b/src/vs/platform/issue/common/issue.ts @@ -11,6 +11,15 @@ import { ILocalExtension } from 'vs/platform/extensionManagement/common/extensio export const IIssueService = createDecorator('issueService'); +export interface WindowStyles { + backgroundColor: string; + color: string; +} +export interface WindowData { + styles: WindowStyles; + zoomLevel: number; +} + export enum IssueType { Bug, PerformanceIssue, @@ -18,9 +27,7 @@ export enum IssueType { SettingsSearchIssue } -export interface IssueReporterStyles { - backgroundColor: string; - color: string; +export interface IssueReporterStyles extends WindowStyles { textLinkColor: string; inputBackground: string; inputForeground: string; @@ -35,9 +42,8 @@ export interface IssueReporterStyles { sliderActiveColor: string; } -export interface IssueReporterData { +export interface IssueReporterData extends WindowData { styles: IssueReporterStyles; - zoomLevel: number; enabledExtensions: ILocalExtension[]; issueType?: IssueType; } @@ -58,7 +64,18 @@ export interface ISettingsSearchIssueReporterData extends IssueReporterData { export interface IssueReporterFeatures { } +export interface ProcessExplorerStyles extends WindowStyles { + hoverBackground: string; + hoverForeground: string; + highlightForeground: string; +} + +export interface ProcessExplorerData extends WindowData { + styles: ProcessExplorerStyles; +} + export interface IIssueService { _serviceBrand: any; openReporter(data: IssueReporterData): TPromise; + openProcessExplorer(data: ProcessExplorerData): TPromise; } diff --git a/src/vs/platform/issue/common/issueIpc.ts b/src/vs/platform/issue/common/issueIpc.ts index 99d73534b5e..d804c6579fe 100644 --- a/src/vs/platform/issue/common/issueIpc.ts +++ b/src/vs/platform/issue/common/issueIpc.ts @@ -7,7 +7,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; -import { IIssueService, IssueReporterData } from './issue'; +import { IIssueService, IssueReporterData, ProcessExplorerData } from './issue'; export interface IIssueChannel extends IChannel { call(command: 'openIssueReporter', arg: IssueReporterData): TPromise; @@ -23,6 +23,8 @@ export class IssueChannel implements IIssueChannel { switch (command) { case 'openIssueReporter': return this.service.openReporter(arg); + case 'openProcessExplorer': + return this.service.openProcessExplorer(arg); } return undefined; } @@ -37,4 +39,8 @@ export class IssueChannelClient implements IIssueService { openReporter(data: IssueReporterData): TPromise { return this.channel.call('openIssueReporter', data); } + + openProcessExplorer(data: ProcessExplorerData): TPromise { + return this.channel.call('openProcessExplorer', data); + } } \ No newline at end of file diff --git a/src/vs/platform/issue/electron-main/issueService.ts b/src/vs/platform/issue/electron-main/issueService.ts index 7232efc90fb..1d589bf8f16 100644 --- a/src/vs/platform/issue/electron-main/issueService.ts +++ b/src/vs/platform/issue/electron-main/issueService.ts @@ -9,7 +9,7 @@ import { TPromise, Promise } from 'vs/base/common/winjs.base'; import { localize } from 'vs/nls'; import * as objects from 'vs/base/common/objects'; import { parseArgs } from 'vs/platform/environment/node/argv'; -import { IIssueService, IssueReporterData, IssueReporterFeatures } from 'vs/platform/issue/common/issue'; +import { IIssueService, IssueReporterData, IssueReporterFeatures, ProcessExplorerData } from 'vs/platform/issue/common/issue'; import { BrowserWindow, ipcMain, screen } from 'electron'; import { ILaunchService } from 'vs/code/electron-main/launch'; import { getPerformanceInfo, PerformanceInfo, getSystemInfo, SystemInfo } from 'vs/code/electron-main/diagnostics'; @@ -22,7 +22,8 @@ const DEFAULT_BACKGROUND_COLOR = '#1E1E1E'; export class IssueService implements IIssueService { _serviceBrand: any; _issueWindow: BrowserWindow; - _parentWindow: BrowserWindow; + _issueParentWindow: BrowserWindow; + _processExplorerWindow: BrowserWindow; constructor( private machineId: string, @@ -46,11 +47,11 @@ export class IssueService implements IIssueService { }); ipcMain.on('workbenchCommand', (event, arg) => { - this._parentWindow.webContents.send('vscode:runAction', { id: arg, from: 'issueReporter' }); + this._issueParentWindow.webContents.send('vscode:runAction', { id: arg, from: 'issueReporter' }); }); - this._parentWindow = BrowserWindow.getFocusedWindow(); - const position = this.getWindowPosition(); + this._issueParentWindow = BrowserWindow.getFocusedWindow(); + const position = this.getWindowPosition(this._issueParentWindow, 800, 900); this._issueWindow = new BrowserWindow({ width: position.width, height: position.height, @@ -73,7 +74,54 @@ export class IssueService implements IIssueService { return TPromise.as(null); } - private getWindowPosition() { + openProcessExplorer(data: ProcessExplorerData): TPromise { + // Create as singleton + if (!this._processExplorerWindow) { + const position = this.getWindowPosition(BrowserWindow.getFocusedWindow(), 800, 300); + this._processExplorerWindow = new BrowserWindow({ + skipTaskbar: true, + resizable: true, + width: position.width, + height: position.height, + minWidth: 300, + minHeight: 200, + x: position.x, + y: position.y, + backgroundColor: data.styles.backgroundColor, + title: localize('processExplorer', "Process Explorer") + }); + + this._processExplorerWindow.setMenuBarVisibility(false); + + const windowConfiguration = { + appRoot: this.environmentService.appRoot, + nodeCachedDataDir: this.environmentService.nodeCachedDataDir, + windowId: this._processExplorerWindow.id, + userEnv: this.userEnv, + machineId: this.machineId, + data + }; + + const environment = parseArgs(process.argv); + const config = objects.assign(environment, windowConfiguration); + for (let key in config) { + if (config[key] === void 0 || config[key] === null || config[key] === '') { + delete config[key]; // only send over properties that have a true value + } + } + + this._processExplorerWindow.loadURL(`${require.toUrl('vs/code/electron-browser/processExplorer/processExplorer.html')}?config=${encodeURIComponent(JSON.stringify(config))}`); + + this._processExplorerWindow.on('close', () => this._processExplorerWindow = void 0); + } + + // Focus + this._processExplorerWindow.focus(); + + return TPromise.as(null); + } + + private getWindowPosition(parentWindow: BrowserWindow, defaultWidth: number, defaultHeight: number) { // We want the new window to open on the same display that the parent is in let displayToUse: Electron.Display; const displays = screen.getAllDisplays(); @@ -93,8 +141,8 @@ export class IssueService implements IIssueService { } // if we have a last active window, use that display for the new window - if (!displayToUse && this._parentWindow) { - displayToUse = screen.getDisplayMatching(this._parentWindow.getBounds()); + if (!displayToUse && parentWindow) { + displayToUse = screen.getDisplayMatching(parentWindow.getBounds()); } // fallback to primary display or first display @@ -104,8 +152,8 @@ export class IssueService implements IIssueService { } let state = { - width: 800, - height: 900, + width: defaultWidth, + height: defaultHeight, x: undefined, y: undefined }; diff --git a/src/vs/workbench/electron-browser/actions.ts b/src/vs/workbench/electron-browser/actions.ts index 3e0b42414db..7abd5ddb6b1 100644 --- a/src/vs/workbench/electron-browser/actions.ts +++ b/src/vs/workbench/electron-browser/actions.ts @@ -871,6 +871,24 @@ export class OpenIssueReporterAction extends Action { } } +export class OpenProcessExplorer extends Action { + public static readonly ID = 'workbench.action.openProcessExplorer'; + public static readonly LABEL = nls.localize('openProcessExplorer', "Open Process Explorer"); + + constructor( + id: string, + label: string, + @IWorkbenchIssueService private issueService: IWorkbenchIssueService + ) { + super(id, label); + } + + public run(): TPromise { + return this.issueService.openProcessExplorer() + .then(() => true); + } +} + export class ReportPerformanceIssueUsingReporterAction extends Action { public static readonly ID = 'workbench.action.reportPerformanceIssueUsingReporter'; public static readonly LABEL = nls.localize('reportPerformanceIssue', "Report Performance Issue"); diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index c57c28d3c1b..26d69e90739 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -14,7 +14,7 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; -import { KeybindingsReferenceAction, OpenDocumentationUrlAction, OpenIntroductoryVideosUrlAction, OpenTipsAndTricksUrlAction, OpenIssueReporterAction, ReportPerformanceIssueUsingReporterAction, ZoomResetAction, ZoomOutAction, ZoomInAction, ToggleFullScreenAction, ToggleMenuBarAction, CloseWorkspaceAction, CloseCurrentWindowAction, SwitchWindow, NewWindowAction, NavigateUpAction, NavigateDownAction, NavigateLeftAction, NavigateRightAction, IncreaseViewSizeAction, DecreaseViewSizeAction, ShowStartupPerformance, ToggleSharedProcessAction, QuickSwitchWindow, QuickOpenRecentAction, inRecentFilesPickerContextKey, ShowAboutDialogAction, InspectContextKeysAction } from 'vs/workbench/electron-browser/actions'; +import { KeybindingsReferenceAction, OpenDocumentationUrlAction, OpenIntroductoryVideosUrlAction, OpenTipsAndTricksUrlAction, OpenIssueReporterAction, ReportPerformanceIssueUsingReporterAction, ZoomResetAction, ZoomOutAction, ZoomInAction, ToggleFullScreenAction, ToggleMenuBarAction, CloseWorkspaceAction, CloseCurrentWindowAction, SwitchWindow, NewWindowAction, NavigateUpAction, NavigateDownAction, NavigateLeftAction, NavigateRightAction, IncreaseViewSizeAction, DecreaseViewSizeAction, ShowStartupPerformance, ToggleSharedProcessAction, QuickSwitchWindow, QuickOpenRecentAction, inRecentFilesPickerContextKey, ShowAboutDialogAction, InspectContextKeysAction, OpenProcessExplorer } from 'vs/workbench/electron-browser/actions'; import { registerCommands } from 'vs/workbench/electron-browser/commands'; import { AddRootFolderAction, GlobalRemoveRootFolderAction, OpenWorkspaceAction, SaveWorkspaceAsAction, OpenWorkspaceConfigFileAction, OpenFolderAsWorkspaceInNewWindowAction, OpenFileFolderAction, OpenFileAction, OpenFolderAction } from 'vs/workbench/browser/actions/workspaceActions'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; @@ -111,6 +111,7 @@ const developerCategory = nls.localize('developer', "Developer"); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ShowStartupPerformance, ShowStartupPerformance.ID, ShowStartupPerformance.LABEL), 'Developer: Startup Performance', developerCategory); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ToggleSharedProcessAction, ToggleSharedProcessAction.ID, ToggleSharedProcessAction.LABEL), 'Developer: Toggle Shared Process', developerCategory); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(InspectContextKeysAction, InspectContextKeysAction.ID, InspectContextKeysAction.LABEL), 'Developer: Inspect Context Keys', developerCategory); +workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(OpenProcessExplorer, OpenProcessExplorer.ID, OpenProcessExplorer.LABEL), 'Developer: Open Process Explorer', developerCategory); const recentFilesPickerContext = ContextKeyExpr.and(inQuickOpenContext, ContextKeyExpr.has(inRecentFilesPickerContextKey)); diff --git a/src/vs/workbench/services/issue/common/issue.ts b/src/vs/workbench/services/issue/common/issue.ts index b998241ce1c..e97d68ea091 100644 --- a/src/vs/workbench/services/issue/common/issue.ts +++ b/src/vs/workbench/services/issue/common/issue.ts @@ -14,4 +14,5 @@ export const IWorkbenchIssueService = createDecorator('w export interface IWorkbenchIssueService { _serviceBrand: any; openReporter(dataOverrides?: Partial): TPromise; + openProcessExplorer(): TPromise; } diff --git a/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts b/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts index 7e78f2904a5..80d5a39cad2 100644 --- a/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts +++ b/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts @@ -8,7 +8,7 @@ import { IssueReporterStyles, IIssueService, IssueReporterData } from 'vs/platform/issue/common/issue'; import { TPromise } from 'vs/base/common/winjs.base'; import { ITheme, IThemeService } from 'vs/platform/theme/common/themeService'; -import { textLinkForeground, inputBackground, inputBorder, inputForeground, buttonBackground, buttonHoverBackground, buttonForeground, inputValidationErrorBorder, foreground, inputActiveOptionBorder, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground } from 'vs/platform/theme/common/colorRegistry'; +import { textLinkForeground, inputBackground, inputBorder, inputForeground, buttonBackground, buttonHoverBackground, buttonForeground, inputValidationErrorBorder, foreground, inputActiveOptionBorder, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground, editorBackground, editorForeground, listHoverBackground, listHoverForeground, listHighlightForeground } from 'vs/platform/theme/common/colorRegistry'; import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; import { IExtensionManagementService, IExtensionEnablementService, LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; import { webFrame } from 'electron'; @@ -41,6 +41,21 @@ export class WorkbenchIssueService implements IWorkbenchIssueService { return this.issueService.openReporter(issueReporterData); }); } + + openProcessExplorer(): TPromise { + const theme = this.themeService.getTheme(); + const data = { + zoomLevel: webFrame.getZoomLevel(), + styles: { + backgroundColor: theme.getColor(editorBackground) && theme.getColor(editorBackground).toString(), + color: theme.getColor(editorForeground).toString(), + hoverBackground: theme.getColor(listHoverBackground) && theme.getColor(listHoverBackground).toString(), + hoverForeground: theme.getColor(listHoverForeground) && theme.getColor(listHoverForeground).toString(), + highlightForeground: theme.getColor(listHighlightForeground) && theme.getColor(listHighlightForeground).toString() + } + }; + return this.issueService.openProcessExplorer(data); + } } export function getIssueReporterStyles(theme: ITheme): IssueReporterStyles { diff --git a/tslint.json b/tslint.json index 31396c2aa56..9a59614556e 100644 --- a/tslint.json +++ b/tslint.json @@ -409,6 +409,18 @@ "*" // node modules ] }, + { + "target": "**/vs/code/electron-browser/**", + "restrictions": [ + "vs/nls", + "vs/css!./**/*", + "vs/nls", + "**/vs/base/**", + "**/vs/platform/**", + "**/vs/code/**", + "*" // node modules + ] + }, { "target": "**/vs/code/**", "restrictions": [ From d59362a4b3d9d245e7a525f5f30aa5df64d55c80 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 9 Apr 2018 19:29:53 -0700 Subject: [PATCH 0536/1070] Add opacity decoration option Adds a new opacity option for text decorations. This controls the opacity of the text (it does not effect the border or background added by the decoration since those already have alpha channels) Fixes #43004 --- src/vs/editor/browser/services/codeEditorServiceImpl.ts | 5 +++-- src/vs/editor/common/editorCommon.ts | 1 + src/vs/vscode.d.ts | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/services/codeEditorServiceImpl.ts b/src/vs/editor/browser/services/codeEditorServiceImpl.ts index 6f2bde8d93c..99999ad1cab 100644 --- a/src/vs/editor/browser/services/codeEditorServiceImpl.ts +++ b/src/vs/editor/browser/services/codeEditorServiceImpl.ts @@ -194,6 +194,7 @@ class DecorationTypeOptionsProvider implements IModelDecorationOptionsProvider { const _CSS_MAP = { color: 'color:{0} !important;', + opacity: 'opacity:{0};', backgroundColor: 'background-color:{0};', outline: 'outline:{0};', @@ -357,7 +358,7 @@ class DecorationCSSRules { return ''; } let cssTextArr: string[] = []; - this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'cursor', 'color', 'letterSpacing'], cssTextArr); + this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'cursor', 'color', 'opacity', 'letterSpacing'], cssTextArr); return cssTextArr.join(''); } @@ -385,7 +386,7 @@ class DecorationCSSRules { cssTextArr.push(strings.format(_CSS_MAP.contentText, escaped)); } - this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'color', 'backgroundColor', 'margin'], cssTextArr); + this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'color', 'opacity', 'backgroundColor', 'margin'], cssTextArr); if (this.collectCSSText(opts, ['width', 'height'], cssTextArr)) { cssTextArr.push('display:inline-block;'); } diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index 5ad6a70a0f6..8be479866df 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -509,6 +509,7 @@ export interface IThemeDecorationRenderOptions { textDecoration?: string; cursor?: string; color?: string | ThemeColor; + opacity?: number; letterSpacing?: string; gutterIconPath?: string | UriComponents; diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 92b14c0281b..8ab2ed8baec 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -893,6 +893,11 @@ declare module 'vscode' { */ color?: string | ThemeColor; + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + opacity?: string; + /** * CSS styling property that will be applied to text enclosed by a decoration. */ From ce3051621638366cb125fba6fd63b7199424eab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=81=E9=A6=99?= Date: Tue, 10 Apr 2018 11:49:36 +0800 Subject: [PATCH 0537/1070] monaco-editor: web ide app `worksapce/symbol` Reuse document/symbol search ui --- src/vs/editor/standalone/browser/quickOpen/quickOutline.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/standalone/browser/quickOpen/quickOutline.ts b/src/vs/editor/standalone/browser/quickOpen/quickOutline.ts index a4923404f39..39aa87917c3 100644 --- a/src/vs/editor/standalone/browser/quickOpen/quickOutline.ts +++ b/src/vs/editor/standalone/browser/quickOpen/quickOutline.ts @@ -25,7 +25,7 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; let SCOPE_PREFIX = ':'; -class SymbolEntry extends QuickOpenEntryGroup { +export class SymbolEntry extends QuickOpenEntryGroup { private name: string; private type: string; private description: string; From 5fca20a96c3e9b37f340ccd51c9a663472c16e0c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 10 Apr 2018 09:58:18 +0200 Subject: [PATCH 0538/1070] :lipstick: symbols upload --- build/lib/compilation.js | 2 +- build/lib/i18n.js | 2 +- build/lib/nls.js | 3 --- build/tfs/common/symbols.ts | 45 +++++++++++++++++++++---------------- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/build/lib/compilation.js b/build/lib/compilation.js index 998ebb4f379..61c178b392e 100644 --- a/build/lib/compilation.js +++ b/build/lib/compilation.js @@ -22,7 +22,7 @@ var rootDir = path.join(__dirname, '../../src'); var options = require('../../src/tsconfig.json').compilerOptions; options.verbose = false; options.sourceMap = true; -if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry +if (process.env['VSCODE_NO_SOURCEMAP']) { options.sourceMap = false; } options.rootDir = rootDir; diff --git a/build/lib/i18n.js b/build/lib/i18n.js index 61893ed8b1d..6f5558001c4 100644 --- a/build/lib/i18n.js +++ b/build/lib/i18n.js @@ -1083,7 +1083,7 @@ function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pse extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} }; } var externalId = externalExtensions[resource]; - if (!externalId) { // internal extension: remove 'extensions/extensionId/' segnent + if (!externalId) { var secondSlash = path.indexOf('/', firstSlash + 1); extPack.contents[path.substr(secondSlash + 1)] = file.messages; } diff --git a/build/lib/nls.js b/build/lib/nls.js index a63d3699014..7f2730ec891 100644 --- a/build/lib/nls.js +++ b/build/lib/nls.js @@ -150,16 +150,13 @@ function isImportNode(node) { .filter(function (d) { return d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport; }) .map(function (d) { return d.importClause.namedBindings.name; }) .concat(importEqualsDeclarations.map(function (d) { return d.name; })) - // find read-only references to `nls` .map(function (n) { return service.getReferencesAtPosition(filename, n.pos + 1); }) .flatten() .filter(function (r) { return !r.isWriteAccess; }) - // find the deepest call expressions AST nodes that contain those references .map(function (r) { return collect(sourceFile, function (n) { return isCallExpressionWithinTextSpanCollectStep(r.textSpan, n); }); }) .map(function (a) { return lazy(a).last(); }) .filter(function (n) { return !!n; }) .map(function (n) { return n; }) - // only `localize` calls .filter(function (n) { return n.expression.kind === ts.SyntaxKind.PropertyAccessExpression && n.expression.name.getText() === 'localize'; }); // `localize` named imports var allLocalizeImportDeclarations = importDeclarations diff --git a/build/tfs/common/symbols.ts b/build/tfs/common/symbols.ts index 5e4ebbd1a03..858ddbd5d3d 100644 --- a/build/tfs/common/symbols.ts +++ b/build/tfs/common/symbols.ts @@ -136,6 +136,7 @@ async function downloadAsset(repository, assetName: string, targetPath: string, } interface IOptions { + repository: string; platform: Platform; versions: { code: string; insiders: boolean; electron: string; }; access: { hockeyAppToken: string; hockeyAppId: string; githubToken: string }; @@ -147,7 +148,7 @@ async function ensureVersionAndSymbols(options: IOptions) { console.log(`HockeyApp: checking for existing version ${options.versions.code} (${options.platform})`); const versions = await getVersions({ accessToken: options.access.hockeyAppToken, appId: options.access.hockeyAppId }); if (versions.app_versions.some(v => v.version === options.versions.code)) { - console.log(`Returning without uploading symbols because version ${options.versions.code} (${options.platform}) was already found`); + console.log(`HockeyApp: Returning without uploading symbols because version ${options.versions.code} (${options.platform}) was already found`); return; } @@ -155,7 +156,7 @@ async function ensureVersionAndSymbols(options: IOptions) { const symbolsName = symbolsZipName(options.platform, options.versions.electron, options.versions.insiders); const symbolsPath = await tmpFile('symbols.zip'); console.log(`HockeyApp: downloading symbols ${symbolsName} for electron ${options.versions.electron} (${options.platform}) into ${symbolsPath}`); - await downloadAsset(new github({ repo: 'Microsoft/vscode-electron-prebuilt', token: options.access.githubToken }), symbolsName, symbolsPath, options.versions.electron); + await downloadAsset(new github({ repo: options.repository, token: options.access.githubToken }), symbolsName, symbolsPath, options.versions.electron); // Create version console.log(`HockeyApp: creating new version ${options.versions.code} (${options.platform})`); @@ -172,6 +173,7 @@ async function ensureVersionAndSymbols(options: IOptions) { // Environment const pakage = require('../../../package.json'); const product = require('../../../product.json'); +const repository = product.electronRepository; const codeVersion = pakage.version; const electronVersion = require('../../lib/electron').getElectronVersion(); const insiders = product.quality !== 'stable'; @@ -190,20 +192,25 @@ if (process.platform === 'darwin') { } // Create version and upload symbols in HockeyApp -ensureVersionAndSymbols({ - platform, - versions: { - code: codeVersion, - insiders, - electron: electronVersion - }, - access: { - githubToken, - hockeyAppToken, - hockeyAppId - } -}).then(() => { - console.log('HockeyApp: done'); -}, error => { - console.error(`HockeyApp: error (${error})`); -}); \ No newline at end of file +if (repository && codeVersion && electronVersion) { + ensureVersionAndSymbols({ + repository, + platform, + versions: { + code: codeVersion, + insiders, + electron: electronVersion + }, + access: { + githubToken, + hockeyAppToken, + hockeyAppId + } + }).then(() => { + console.log('HockeyApp: done'); + }, error => { + console.error(`HockeyApp: error (${error})`); + }); +} else { + console.log(`HockeyApp: skipping due to insufficient context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion})`); +} \ No newline at end of file From 847f159b2a0379f6c751c6a1ce00a74fae6e0369 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 10 Apr 2018 10:03:48 +0200 Subject: [PATCH 0539/1070] naming, add cancellation tokens, #47475 --- src/vs/vscode.proposed.d.ts | 15 ++++++--------- src/vs/workbench/api/node/extHostFileSystem.ts | 18 +++++++++--------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b4a2aabc165..cf3768f70a3 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -224,25 +224,22 @@ declare module 'vscode' { } // todo@joh discover files etc - // todo@joh CancellationToken everywhere // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 2; + _version: 3; - readonly onDidChange?: Event; + readonly onDidChange: Event; stat(uri: Uri, token: CancellationToken): Thenable; - readdir(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat][]>; + readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat][]>; readFile(uri: Uri, token: CancellationToken): Thenable; writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): Thenable; - // todo@remote - // Thenable - rename(oldUri: Uri, newUri: Uri): Thenable; + rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; // todo@remote // helps with performance bigly @@ -250,10 +247,10 @@ declare module 'vscode' { // todo@remote // ? useTrash, expose trash - delete(resource: Uri, options: { recursive?: boolean; }): Thenable; + delete(uri: Uri, token: CancellationToken): Thenable; // todo@remote - create(resource: Uri, options: { type: FileType }): Thenable; + create(uri: Uri, options: { type: FileType }, token: CancellationToken): Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index aa5115926ea..a11efa15833 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -58,9 +58,9 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 2; + _version: 3; - onDidChange?: vscode.Event; + onDidChange: vscode.Event; constructor(private readonly _delegate: vscode.FileSystemProvider) { this.onDidChange = this._delegate.onDidChange; @@ -72,13 +72,13 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { return this._delegate.move(oldUri, newUri); } - readdir(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat][]> { + readDirectory(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat][]> { return this._delegate.readdir(resource); } // --- delete/create file or folder - delete(resource: vscode.Uri, options: { recursive: boolean; }): Thenable { + delete(resource: vscode.Uri): Thenable { return this.stat(resource).then(stat => { if (stat.type === FileType.Dir) { return this._delegate.rmdir(resource); @@ -127,7 +127,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 2) { + if (newProvider && newProvider._version === 3) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); @@ -171,7 +171,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][], any> { - return asWinJsPromise(token => this._fsProvider.get(handle).readdir(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); } $readFile(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => { @@ -184,13 +184,13 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), token)); } $delete(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), { recursive: true })); + return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token)); } $move(handle: number, oldUri: UriComponents, newUri: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri))); + return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), token)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir })); + return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir }, token)); } $provideFileSearchResults(handle: number, session: number, query: string): TPromise { From 49bf3deee378a7da05913ddd5a61b0efe9319477 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 10 Apr 2018 10:44:27 +0200 Subject: [PATCH 0540/1070] symbols - fix version --- build/tfs/common/symbols.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/build/tfs/common/symbols.ts b/build/tfs/common/symbols.ts index 858ddbd5d3d..55641544c27 100644 --- a/build/tfs/common/symbols.ts +++ b/build/tfs/common/symbols.ts @@ -174,9 +174,12 @@ async function ensureVersionAndSymbols(options: IOptions) { const pakage = require('../../../package.json'); const product = require('../../../product.json'); const repository = product.electronRepository; -const codeVersion = pakage.version; const electronVersion = require('../../lib/electron').getElectronVersion(); const insiders = product.quality !== 'stable'; +let codeVersion = pakage.version; +if (insiders) { + codeVersion = `${codeVersion}-insider`; +} const githubToken = process.argv[2]; const hockeyAppToken = process.argv[3]; const is64 = process.argv[4] === 'x64'; @@ -192,7 +195,7 @@ if (process.platform === 'darwin') { } // Create version and upload symbols in HockeyApp -if (repository && codeVersion && electronVersion) { +if (repository && codeVersion && electronVersion && (product.quality === 'stable' || product.quality === 'insider')) { ensureVersionAndSymbols({ repository, platform, @@ -212,5 +215,5 @@ if (repository && codeVersion && electronVersion) { console.error(`HockeyApp: error (${error})`); }); } else { - console.log(`HockeyApp: skipping due to insufficient context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion})`); + console.log(`HockeyApp: skipping due to unexpected context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion}, quality: ${product.quality})`); } \ No newline at end of file From 5b5427b0c67eb89dc7a1fbb7a60aa600da44e680 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 10:57:11 +0200 Subject: [PATCH 0541/1070] ignore generated d.ts --- test/smoke/.gitignore | 3 ++- test/smoke/src/vscode/driver.d.ts | 30 ------------------------------ 2 files changed, 2 insertions(+), 31 deletions(-) delete mode 100644 test/smoke/src/vscode/driver.d.ts diff --git a/test/smoke/.gitignore b/test/smoke/.gitignore index 532798d3ea9..6601bb4c588 100644 --- a/test/smoke/.gitignore +++ b/test/smoke/.gitignore @@ -4,4 +4,5 @@ Thumbs.db node_modules/ out/ keybindings.*.json -test_data/ \ No newline at end of file +test_data/ +src/vscode/driver.d.ts \ No newline at end of file diff --git a/test/smoke/src/vscode/driver.d.ts b/test/smoke/src/vscode/driver.d.ts deleted file mode 100644 index c51f9b5b248..00000000000 --- a/test/smoke/src/vscode/driver.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -export interface IElement { - tagName: string; - className: string; - textContent: string; -} - -export interface IDriver { - _serviceBrand: any; - getWindowIds(): Promise; - dispatchKeybinding(windowId: number, keybinding: string): Promise; - click(windowId: number, selector: string, xoffset: number | undefined, yoffset: number | undefined): Promise; - doubleClick(windowId: number, selector: string): Promise; - move(windowId: number, selector: string): Promise; - setValue(windowId: number, selector: string, text: string): Promise; - getTitle(windowId: number): Promise; - isActiveElement(windowId: number, selector: string): Promise; - getElements(windowId: number, selector: string): Promise; - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

; -} - -export interface IDisposable { - dispose(): void; -} - -export function connect(outPath: string, handle: string): Promise<{ client: IDisposable, driver: IDriver }>; From e8d6490fca58b6912517ac57d62c975f6d577b6d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 10:57:44 +0200 Subject: [PATCH 0542/1070] smoke: run compile on postinstall --- test/smoke/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/smoke/package.json b/test/smoke/package.json index 63f6cec4818..64a3c955faa 100644 --- a/test/smoke/package.json +++ b/test/smoke/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "main": "./src/main.js", "scripts": { - "postinstall": "tsc", + "postinstall": "npm run compile", "compile": "node tools/prebuild && tsc && node tools/postbuild", "watch": "node tools/prebuild && node tools/postbuild && tsc --watch", "mocha": "mocha" From f8afb1a18c00afcca7f1569783522e439cb95b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Tue, 10 Apr 2018 10:47:27 +0200 Subject: [PATCH 0543/1070] rename IRawAdapter to IDebuggerContribution --- src/vs/workbench/parts/debug/common/debug.ts | 2 +- .../debug/electron-browser/debugConfigurationManager.ts | 4 ++-- src/vs/workbench/parts/debug/node/debugAdapter.ts | 8 ++++---- src/vs/workbench/parts/debug/node/debugger.ts | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 3b3e4856a4f..2597cf19560 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -412,7 +412,7 @@ export interface IRawEnvAdapter { runtimeArgs?: string[]; } -export interface IRawAdapter extends IRawEnvAdapter { +export interface IDebuggerContribution extends IRawEnvAdapter { adapterExecutableCommand?: string; enableBreakpointsFor?: { languageIds: string[] }; configurationAttributes?: any; diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index 65284696d54..ce741cd3008 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -26,7 +26,7 @@ import { IFileService } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ICommandService } from 'vs/platform/commands/common/commands'; -import { IDebugConfigurationProvider, IRawAdapter, ICompound, IDebugConfiguration, IConfig, IEnvConfig, IGlobalConfig, IConfigurationManager, ILaunch, IAdapterExecutable, IDebugAdapterProvider, IDebugAdapter } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugConfigurationProvider, IDebuggerContribution, ICompound, IDebugConfiguration, IConfig, IEnvConfig, IGlobalConfig, IConfigurationManager, ILaunch, IAdapterExecutable, IDebugAdapterProvider, IDebugAdapter } from 'vs/workbench/parts/debug/common/debug'; import { Debugger } from 'vs/workbench/parts/debug/node/debugger'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; @@ -36,7 +36,7 @@ import { launchSchemaId } from 'vs/workbench/services/configuration/common/confi import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; // debuggers extension point -export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint('debuggers', [], { +export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint('debuggers', [], { description: nls.localize('vscode.extension.contributes.debuggers', 'Contributes debug adapters.'), type: 'array', defaultSnippets: [{ body: [{ type: '', extensions: [] }] }], diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index afcb5eb7d9e..23859007bf6 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -304,11 +304,11 @@ export class DebugAdapter extends StreamDebugAdapter { } } - private static extract(dbg: debug.IRawAdapter, extensionFolderPath: string) { + private static extract(dbg: debug.IDebuggerContribution, extensionFolderPath: string) { if (!dbg) { return undefined; } - let x: debug.IRawAdapter = {}; + let x: debug.IDebuggerContribution = {}; if (dbg.runtime) { if (dbg.runtime.indexOf('./') === 0) { // TODO @@ -351,14 +351,14 @@ export class DebugAdapter extends StreamDebugAdapter { static platformAdapterExecutable(extensionDescriptions: IExtensionDescription[], debugType: string): debug.IAdapterExecutable { - let result: debug.IRawAdapter = {}; + let result: debug.IDebuggerContribution = {}; debugType = debugType.toLowerCase(); // merge all contributions into one for (const ed of extensionDescriptions) { if (ed.contributes) { - const debuggers = ed.contributes['debuggers']; + const debuggers = ed.contributes['debuggers']; if (debuggers && debuggers.length > 0) { const dbgs = debuggers.filter(d => strings.equalsIgnoreCase(d.type, debugType)); for (const dbg of dbgs) { diff --git a/src/vs/workbench/parts/debug/node/debugger.ts b/src/vs/workbench/parts/debug/node/debugger.ts index e9e08f8fc2e..1b5075f90f7 100644 --- a/src/vs/workbench/parts/debug/node/debugger.ts +++ b/src/vs/workbench/parts/debug/node/debugger.ts @@ -9,7 +9,7 @@ import * as strings from 'vs/base/common/strings'; import * as objects from 'vs/base/common/objects'; import { IJSONSchema, IJSONSchemaSnippet } from 'vs/base/common/jsonSchema'; import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; -import { IConfig, IRawAdapter, IAdapterExecutable, INTERNAL_CONSOLE_OPTIONS_SCHEMA, IConfigurationManager, IDebugAdapter, IDebugConfiguration } from 'vs/workbench/parts/debug/common/debug'; +import { IConfig, IDebuggerContribution, IAdapterExecutable, INTERNAL_CONSOLE_OPTIONS_SCHEMA, IConfigurationManager, IDebugAdapter, IDebugConfiguration } from 'vs/workbench/parts/debug/common/debug'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ICommandService } from 'vs/platform/commands/common/commands'; @@ -21,7 +21,7 @@ export class Debugger { private _mergedExtensionDescriptions: IExtensionDescription[]; - constructor(private configurationManager: IConfigurationManager, private rawAdapter: IRawAdapter, public extensionDescription: IExtensionDescription, + constructor(private configurationManager: IConfigurationManager, private rawAdapter: IDebuggerContribution, public extensionDescription: IExtensionDescription, @IConfigurationService private configurationService: IConfigurationService, @ICommandService private commandService: ICommandService ) { @@ -82,7 +82,7 @@ export class Debugger { return this.rawAdapter.languages; } - public merge(secondRawAdapter: IRawAdapter, extensionDescription: IExtensionDescription): void { + public merge(secondRawAdapter: IDebuggerContribution, extensionDescription: IExtensionDescription): void { // remember all ext descriptions that are the source of this debugger this._mergedExtensionDescriptions.push(extensionDescription); From e08945a4c28c76d69cfdad7237f6d5b13ac1c2d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Tue, 10 Apr 2018 10:55:23 +0200 Subject: [PATCH 0544/1070] rename IRawEnvAdapter to IPlatformSpecificAdapterContribution --- src/vs/workbench/parts/debug/common/debug.ts | 20 ++++++++++--------- .../parts/debug/node/debugAdapter.ts | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 2597cf19560..143bd568a3e 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -403,16 +403,18 @@ export interface IAdapterExecutable { args?: string[]; } -export interface IRawEnvAdapter { - type?: string; - label?: string; +export interface IPlatformSpecificAdapterContribution { + type?: string; // TODO: doesn't belong here + label?: string; // TODO: doesn't belong here program?: string; args?: string[]; runtime?: string; runtimeArgs?: string[]; } -export interface IDebuggerContribution extends IRawEnvAdapter { +export interface IDebuggerContribution extends IPlatformSpecificAdapterContribution { + // type: string; // TODO: host from IPlatformSpecificAdapterContribution + // label?: string; // TODO: host from IPlatformSpecificAdapterContribution adapterExecutableCommand?: string; enableBreakpointsFor?: { languageIds: string[] }; configurationAttributes?: any; @@ -421,11 +423,11 @@ export interface IDebuggerContribution extends IRawEnvAdapter { languages?: string[]; variables?: { [key: string]: string }; aiKey?: string; - win?: IRawEnvAdapter; - winx86?: IRawEnvAdapter; - windows?: IRawEnvAdapter; - osx?: IRawEnvAdapter; - linux?: IRawEnvAdapter; + win?: IPlatformSpecificAdapterContribution; + winx86?: IPlatformSpecificAdapterContribution; + windows?: IPlatformSpecificAdapterContribution; + osx?: IPlatformSpecificAdapterContribution; + linux?: IPlatformSpecificAdapterContribution; } export interface IDebugConfigurationProvider { diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index 23859007bf6..9e91bf4cf00 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -374,7 +374,7 @@ export class DebugAdapter extends StreamDebugAdapter { } // select the right platform - let platformInfo: debug.IRawEnvAdapter; + let platformInfo: debug.IPlatformSpecificAdapterContribution; if (platform.isWindows && !process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) { platformInfo = result.winx86 || result.win || result.windows; } else if (platform.isWindows) { From 89902f4718422e8ed24c94f487eaea2e10793c30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Tue, 10 Apr 2018 10:59:36 +0200 Subject: [PATCH 0545/1070] arrange IDebuggerContribution attributes logically --- src/vs/workbench/parts/debug/common/debug.ts | 22 +++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 143bd568a3e..69c7e554891 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -415,19 +415,27 @@ export interface IPlatformSpecificAdapterContribution { export interface IDebuggerContribution extends IPlatformSpecificAdapterContribution { // type: string; // TODO: host from IPlatformSpecificAdapterContribution // label?: string; // TODO: host from IPlatformSpecificAdapterContribution + + // debug adapter executable adapterExecutableCommand?: string; - enableBreakpointsFor?: { languageIds: string[] }; - configurationAttributes?: any; - configurationSnippets?: IJSONSchemaSnippet[]; - initialConfigurations?: any[]; - languages?: string[]; - variables?: { [key: string]: string }; - aiKey?: string; win?: IPlatformSpecificAdapterContribution; winx86?: IPlatformSpecificAdapterContribution; windows?: IPlatformSpecificAdapterContribution; osx?: IPlatformSpecificAdapterContribution; linux?: IPlatformSpecificAdapterContribution; + + // internal + aiKey?: string; + + // supported languages + languages?: string[]; + enableBreakpointsFor?: { languageIds: string[] }; + + // debug configuration support + configurationAttributes?: any; + initialConfigurations?: any[]; + configurationSnippets?: IJSONSchemaSnippet[]; + variables?: { [key: string]: string }; } export interface IDebugConfigurationProvider { From 7ac4385c1d8fdad55276921e12d5d4a797c10ef8 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 10 Apr 2018 11:09:07 +0200 Subject: [PATCH 0546/1070] enums starting at 1, add more xyz2-types, #35449 #47475 --- src/vs/platform/files/common/files.ts | 13 ++- src/vs/vscode.proposed.d.ts | 36 +++++-- src/vs/workbench/api/node/extHost.api.impl.ts | 2 + .../workbench/api/node/extHostFileSystem.ts | 102 ++++++++++++++---- src/vs/workbench/api/node/extHostTypes.ts | 12 +++ .../electron-browser/remoteFileService.ts | 12 +-- 6 files changed, 137 insertions(+), 40 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 51f62ad470e..38114652f14 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -156,17 +156,16 @@ export interface IFileService { dispose(): void; } - -export enum FileType { - File = 0, - Dir = 1, - Symlink = 2 +export enum FileType2 { + File = 1, + Directory = 2, + SymbolicLink = 4, } + export interface IStat { - id: number | string; mtime: number; size: number; - type: FileType; + type: FileType2; } export interface IFileSystemProvider { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index cf3768f70a3..63095a4b66b 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -223,34 +223,58 @@ declare module 'vscode' { // create(resource: Uri): Thenable; } + export enum FileChangeType2 { + Changed = 1, + Created = 2, + Deleted = 3, + } + + export interface FileChange2 { + type: FileChangeType2; + resource: Uri; + } + + export enum FileType2 { + File = 0b001, + Directory = 0b010, + SymbolicLink = 0b100, + } + + export interface FileStat2 { + type: FileType2; + mtime: number; + size: number; + } + + // todo@joh discover files etc // todo@joh add open/close calls? export interface FileSystemProvider2 { _version: 3; - readonly onDidChange: Event; + readonly onDidChange: Event; - stat(uri: Uri, token: CancellationToken): Thenable; + stat(uri: Uri, token: CancellationToken): Thenable; - readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat][]>; + readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat2][]>; readFile(uri: Uri, token: CancellationToken): Thenable; writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): Thenable; - rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; + rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; // todo@remote // helps with performance bigly - // copy?(from: Uri, to: Uri): Thenable; + // copy?(from: Uri, to: Uri): Thenable; // todo@remote // ? useTrash, expose trash delete(uri: Uri, token: CancellationToken): Thenable; // todo@remote - create(uri: Uri, options: { type: FileType }, token: CancellationToken): Thenable; + create(uri: Uri, options: { type: FileType }, token: CancellationToken): Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index da7a17f7d25..fb844f52ef5 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -679,6 +679,8 @@ export function createApiFactory( FileChangeType: extHostTypes.FileChangeType, FileType: extHostTypes.FileType, + FileChangeType2: extHostTypes.FileChangeType2, + FileType2: extHostTypes.FileType2, FoldingRangeList: extHostTypes.FoldingRangeList, FoldingRange: extHostTypes.FoldingRange, FoldingRangeType: extHostTypes.FoldingRangeType diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index a11efa15833..109c18061b1 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -6,14 +6,15 @@ import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; +import { Event, mapEvent } from 'vs/base/common/event'; import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape } from './extHost.protocol'; import * as vscode from 'vscode'; -import { IStat } from 'vs/platform/files/common/files'; +import * as files from 'vs/platform/files/common/files'; import { IDisposable } from 'vs/base/common/lifecycle'; import { asWinJsPromise } from 'vs/base/common/async'; import { IPatternInfo } from 'vs/platform/search/common/search'; import { values } from 'vs/base/common/map'; -import { Range, FileType } from 'vs/workbench/api/node/extHostTypes'; +import { Range, FileType, FileChangeType, FileChangeType2, FileType2 } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; class FsLinkProvider implements vscode.DocumentLinkProvider { @@ -60,26 +61,69 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { _version: 3; - onDidChange: vscode.Event; + onDidChange: vscode.Event; constructor(private readonly _delegate: vscode.FileSystemProvider) { - this.onDidChange = this._delegate.onDidChange; + if (!this._delegate.onDidChange) { + this.onDidChange = Event.None; + } else { + this.onDidChange = mapEvent(this._delegate.onDidChange, old => old.map(FileSystemProviderShim._modernizeFileChange)); + } } - stat(resource: vscode.Uri): Thenable { - return this._delegate.stat(resource); + stat(resource: vscode.Uri): Thenable { + return this._delegate.stat(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } - rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { - return this._delegate.move(oldUri, newUri); + rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { + return this._delegate.move(oldUri, newUri).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } - readDirectory(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat][]> { - return this._delegate.readdir(resource); + readDirectory(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat2][]> { + return this._delegate.readdir(resource).then(tuples => { + return tuples.map(tuple => <[vscode.Uri, vscode.FileStat2]>[tuple[0], FileSystemProviderShim._modernizeFileStat(tuple[1])]); + }); + } + + private static _modernizeFileStat(stat: vscode.FileStat): vscode.FileStat2 { + let { mtime, size, type } = stat; + let newType: vscode.FileType2; + + // no support for bitmask, effectively no support for symlinks + switch (type) { + case FileType.Dir: + newType = FileType2.Directory; + break; + case FileType.File: + newType = FileType2.File; + break; + case FileType.Symlink: + newType = FileType2.SymbolicLink; + break; + } + return { mtime, size, type: newType }; + } + + private static _modernizeFileChange(e: vscode.FileChange): vscode.FileChange2 { + let { resource, type } = e; + let newType: vscode.FileChangeType2; + switch (type) { + case FileChangeType.Updated: + newType = FileChangeType2.Changed; + break; + case FileChangeType.Added: + newType = FileChangeType2.Created; + break; + case FileChangeType.Deleted: + newType = FileChangeType2.Deleted; + break; + + } + return { resource, type: newType }; } // --- delete/create file or folder delete(resource: vscode.Uri): Thenable { - return this.stat(resource).then(stat => { + return this._delegate.stat(resource).then(stat => { if (stat.type === FileType.Dir) { return this._delegate.rmdir(resource); } else { @@ -87,11 +131,13 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { } }); } - create(resource: vscode.Uri, options: { type: vscode.FileType; }): Thenable { + create(resource: vscode.Uri, options: { type: vscode.FileType; }): Thenable { if (options.type === FileType.Dir) { - return this._delegate.mkdir(resource); + return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } else { - return this._delegate.write(resource, Buffer.from([])).then(() => this._delegate.stat(resource)); + return this._delegate.write(resource, Buffer.from([])) + .then(() => this._delegate.stat(resource)) + .then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } } @@ -141,7 +187,25 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { this._proxy.$registerFileSystemProvider(handle, scheme); let reg: IDisposable; if (provider.onDidChange) { - reg = provider.onDidChange(event => this._proxy.$onFileSystemChange(handle, event)); + reg = provider.onDidChange(event => { + let newEvent = event.map(e => { + let { resource, type } = e; + let newType: files.FileChangeType; + switch (type) { + case FileChangeType2.Changed: + newType = files.FileChangeType.UPDATED; + break; + case FileChangeType2.Created: + newType = files.FileChangeType.ADDED; + break; + case FileChangeType2.Deleted: + newType = files.FileChangeType.DELETED; + break; + } + return { resource, type: newType }; + }); + this._proxy.$onFileSystemChange(handle, newEvent); + }); } return { dispose: () => { @@ -167,10 +231,10 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { }; } - $stat(handle: number, resource: UriComponents): TPromise { + $stat(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } - $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][], any> { + $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, files.IStat][], any> { return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); } $readFile(handle: number, resource: UriComponents): TPromise { @@ -186,10 +250,10 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $delete(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token)); } - $move(handle: number, oldUri: UriComponents, newUri: UriComponents): TPromise { + $move(handle: number, oldUri: UriComponents, newUri: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), token)); } - $mkdir(handle: number, resource: UriComponents): TPromise { + $mkdir(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir }, token)); } diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index def9661a41d..1fe1b5bd13b 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1818,12 +1818,24 @@ export enum FileChangeType { Deleted = 2 } +export enum FileChangeType2 { + Changed = 1, + Created = 2, + Deleted = 3, +} + export enum FileType { File = 0, Dir = 1, Symlink = 2 } +export enum FileType2 { + File = 1, + Directory = 2, + SymbolicLink = 4, +} + //#endregion //#region folding api diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index b486a7180f5..84097d96331 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -6,7 +6,7 @@ import URI from 'vs/base/common/uri'; import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; -import { IContent, IStreamContent, IFileStat, IResolveContentOptions, IUpdateContentOptions, IResolveFileOptions, IResolveFileResult, FileOperationEvent, FileOperation, IFileSystemProvider, IStat, FileType, IImportResult, FileChangesEvent, ICreateFileOptions, FileOperationError, FileOperationResult, ITextSnapshot, snapshotToString } from 'vs/platform/files/common/files'; +import { IContent, IStreamContent, IFileStat, IResolveContentOptions, IUpdateContentOptions, IResolveFileOptions, IResolveFileResult, FileOperationEvent, FileOperation, IFileSystemProvider, IStat, FileType2, IImportResult, FileChangesEvent, ICreateFileOptions, FileOperationError, FileOperationResult, ITextSnapshot, snapshotToString } from 'vs/platform/files/common/files'; import { TPromise } from 'vs/base/common/winjs.base'; import { posix } from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; @@ -27,8 +27,8 @@ import { INotificationService } from 'vs/platform/notification/common/notificati function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise { const [resource, stat] = tuple; const fileStat: IFileStat = { - isDirectory: false, - isSymbolicLink: stat.type === FileType.Symlink, + isDirectory: (stat.type & FileType2.Directory) !== 0, + isSymbolicLink: (stat.type & FileType2.SymbolicLink) !== 0, resource: resource, name: posix.basename(resource.path), mtime: stat.mtime, @@ -36,14 +36,10 @@ function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse etag: stat.mtime.toString(29) + stat.size.toString(31), }; - if (stat.type === FileType.Dir) { - fileStat.isDirectory = true; - + if (fileStat.isDirectory) { if (recurse && recurse([resource, stat])) { // dir -> resolve return provider.readdir(resource).then(entries => { - fileStat.isDirectory = true; - // resolve children if requested return TPromise.join(entries.map(stat => toIFileStat(provider, stat, recurse))).then(children => { fileStat.children = children; From 03f983af2753daa35fc49b06ddfe4496eefef0ae Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:14:10 +0200 Subject: [PATCH 0547/1070] stub out more methods --- src/vs/platform/driver/common/driver.ts | 61 ++++++++++++++----- .../driver/electron-browser/driver.ts | 36 +++++++++++ .../platform/driver/electron-main/driver.ts | 41 ++++++++++++- 3 files changed, 121 insertions(+), 17 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 998b5c4d648..d22ba362654 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -28,8 +28,8 @@ export interface IDriver { doubleClick(windowId: number, selector: string): TPromise; move(windowId: number, selector: string): TPromise; setValue(windowId: number, selector: string, text: string): TPromise; - getTitle(windowId: number): TPromise; - isActiveElement(windowId: number, selector: string): TPromise; + getTitle(windowId: number): TPromise; + isActiveElement(windowId: number, selector: string): TPromise; getElements(windowId: number, selector: string): TPromise; selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } @@ -42,8 +42,8 @@ export interface IDriverChannel extends IChannel { call(command: 'doubleClick', arg: [number, string]): TPromise; call(command: 'move', arg: [number, string]): TPromise; call(command: 'setValue', arg: [number, string, string]): TPromise; - call(command: 'getTitle', arg: [number]): TPromise; - call(command: 'isActiveElement', arg: [number, string]): TPromise; + call(command: 'getTitle', arg: [number]): TPromise; + call(command: 'isActiveElement', arg: [number, string]): TPromise; call(command: 'getElements', arg: [number, string]): TPromise; call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; @@ -64,7 +64,9 @@ export class DriverChannel implements IDriverChannel { case 'getTitle': return this.driver.getTitle(arg[0]); case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]); case 'getElements': return this.driver.getElements(arg[0], arg[1]); - case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], new Function(arg[2]), ...arg[2]); + + // TODO@joao + case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[1], ...arg[2]); } return undefined; @@ -101,11 +103,11 @@ export class DriverChannelClient implements IDriver { return this.channel.call('setValue', [windowId, selector, text]); } - getTitle(windowId: number): TPromise { + getTitle(windowId: number): TPromise { return this.channel.call('getTitle', [windowId]); } - isActiveElement(windowId: number, selector: string): TPromise { + isActiveElement(windowId: number, selector: string): TPromise { return this.channel.call('isActiveElement', [windowId, selector]); } @@ -114,6 +116,7 @@ export class DriverChannelClient implements IDriver { } selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ + // TODO@joao return this.channel.call('selectorExecute', [windowId, selector, script.toString(), args]); } } @@ -157,8 +160,8 @@ export interface IWindowDriver { doubleClick(selector: string): TPromise; move(selector: string): TPromise; setValue(selector: string, text: string): TPromise; - getTitle(): TPromise; - isActiveElement(selector: string): TPromise; + getTitle(): TPromise; + isActiveElement(selector: string): TPromise; getElements(selector: string): TPromise; selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } @@ -169,8 +172,8 @@ export interface IWindowDriverChannel extends IChannel { call(command: 'doubleClick', arg: string): TPromise; call(command: 'move', arg: string): TPromise; call(command: 'setValue', arg: [string, string]): TPromise; - call(command: 'getTitle'): TPromise; - call(command: 'isActiveElement', arg: string): TPromise; + call(command: 'getTitle'): TPromise; + call(command: 'isActiveElement', arg: string): TPromise; call(command: 'getElements', arg: string): TPromise; call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; @@ -190,7 +193,8 @@ export class WindowDriverChannel implements IWindowDriverChannel { case 'getTitle': return this.driver.getTitle(); case 'isActiveElement': return this.driver.isActiveElement(arg); case 'getElements': return this.driver.getElements(arg); - case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[2], ...arg[2]); + // TODO@joao + case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], ...arg[2]); } return undefined; @@ -203,11 +207,40 @@ export class WindowDriverChannelClient implements IWindowDriver { constructor(private channel: IWindowDriverChannel) { } + dispatchKeybinding(keybinding: string): TPromise { + return this.channel.call('dispatchKeybinding', keybinding); + } + + click(selector: string, xoffset?: number, yoffset?: number): TPromise { + return this.channel.call('click', [selector, xoffset, yoffset]); + } + + doubleClick(selector: string): TPromise { + return this.channel.call('doubleClick', selector); + } + + move(selector: string): TPromise { + return this.channel.call('move', selector); + } + + setValue(selector: string, text: string): TPromise { + return this.channel.call('setValue', [selector, text]); + } + + getTitle(): TPromise { + return this.channel.call('getTitle'); + } + + isActiveElement(selector: string): TPromise { + return this.channel.call('isActiveElement', selector); + } + getElements(selector: string): TPromise { return this.channel.call('getElements', selector); } - dispatchKeybinding(keybinding: string): TPromise { - return this.channel.call('dispatchKeybinding', keybinding); + selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ + // TODO@joao + return this.channel.call('selectorExecute', [selector, script.toString(), args]); } } \ No newline at end of file diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 2e6d60b0903..094e607e5ee 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -56,6 +56,38 @@ class WindowDriver implements IWindowDriver { // document.activeElement.dispatchEvent(new KeyboardEvent('keyup', event)); } + + click(selector: string, xoffset?: number, yoffset?: number): TPromise { + throw new Error('Method not implemented.'); + } + + doubleClick(selector: string): TPromise { + throw new Error('Method not implemented.'); + } + + move(selector: string): TPromise { + throw new Error('Method not implemented.'); + } + + async setValue(selector: string, text: string): TPromise { + const element = document.querySelector(selector); + + if (!element) { + throw new Error('Element not found'); + } + + (element as HTMLInputElement).value = text; + } + + async getTitle(): TPromise { + return document.title; + } + + async isActiveElement(selector: string): TPromise { + const element = document.querySelector(selector); + return element === document.activeElement; + } + async getElements(selector: string): TPromise { const query = document.querySelectorAll(selector); const result: IElement[] = []; @@ -72,6 +104,10 @@ class WindowDriver implements IWindowDriver { return result; } + + selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ + return TPromise.wrapError(new Error('not implemented')); + } } export async function registerWindowDriver( diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index f456136c777..8c5e7d57bc8 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -44,14 +44,49 @@ export class Driver implements IDriver, IWindowDriverRegistry { .filter(id => this.registeredWindowIds.has(id)); } - getElements(windowId: number, selector: string): TPromise { + dispatchKeybinding(windowId: number, keybinding: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.dispatchKeybinding(keybinding); + } + + click(windowId: number, selector: string, xoffset?: number, yoffset?: number): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.click(selector, xoffset, yoffset); + } + + doubleClick(windowId: number, selector: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.doubleClick(selector); + } + + move(windowId: number, selector: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.move(selector); + } + + setValue(windowId: number, selector: string, text: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.setValue(selector, text); + } + + getTitle(windowId: number): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.getTitle(); + } + + isActiveElement(windowId: number, selector: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.isActiveElement(selector); + } + + getElements(windowId: number, selector: string): TPromise { const windowDriver = this.getWindowDriver(windowId); return windowDriver.getElements(selector); } - dispatchKeybinding(windowId: number, keybinding: string): TPromise { + selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ const windowDriver = this.getWindowDriver(windowId); - return windowDriver.dispatchKeybinding(keybinding); + return windowDriver.selectorExecute(selector, script, ...args); } private getWindowDriver(windowId: number): IWindowDriver { From f1b47bf39898ceb035318ba4762d1870f41c9aeb Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:43:13 +0200 Subject: [PATCH 0548/1070] dispatch keys! --- src/vs/base/browser/keyboardEvent.ts | 255 +++++++++--------- .../standalone/browser/simpleServices.ts | 2 +- .../test/browser/simpleServices.test.ts | 2 +- .../driver/electron-browser/driver.ts | 64 +++-- .../common/abstractKeybindingService.ts | 2 +- .../platform/keybinding/common/keybinding.ts | 5 - .../common/abstractKeybindingService.test.ts | 2 +- .../electron-browser/keybindingService.ts | 2 +- 8 files changed, 186 insertions(+), 148 deletions(-) diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts index 22b92dbb28f..646964e4e33 100644 --- a/src/vs/base/browser/keyboardEvent.ts +++ b/src/vs/base/browser/keyboardEvent.ts @@ -9,149 +9,160 @@ import { KeyCode, KeyCodeUtils, KeyMod, SimpleKeybinding } from 'vs/base/common/ import * as platform from 'vs/base/common/platform'; import * as browser from 'vs/base/browser/browser'; -let KEY_CODE_MAP: { [keyCode: number]: KeyCode } = {}; +let KEY_CODE_MAP: { [keyCode: number]: KeyCode } = new Array(230); +let INVERSE_KEY_CODE_MAP: KeyCode[] = new Array(KeyCode.MAX_VALUE); + (function () { - KEY_CODE_MAP[3] = KeyCode.PauseBreak; // VK_CANCEL 0x03 Control-break processing - KEY_CODE_MAP[8] = KeyCode.Backspace; - KEY_CODE_MAP[9] = KeyCode.Tab; - KEY_CODE_MAP[13] = KeyCode.Enter; - KEY_CODE_MAP[16] = KeyCode.Shift; - KEY_CODE_MAP[17] = KeyCode.Ctrl; - KEY_CODE_MAP[18] = KeyCode.Alt; - KEY_CODE_MAP[19] = KeyCode.PauseBreak; - KEY_CODE_MAP[20] = KeyCode.CapsLock; - KEY_CODE_MAP[27] = KeyCode.Escape; - KEY_CODE_MAP[32] = KeyCode.Space; - KEY_CODE_MAP[33] = KeyCode.PageUp; - KEY_CODE_MAP[34] = KeyCode.PageDown; - KEY_CODE_MAP[35] = KeyCode.End; - KEY_CODE_MAP[36] = KeyCode.Home; - KEY_CODE_MAP[37] = KeyCode.LeftArrow; - KEY_CODE_MAP[38] = KeyCode.UpArrow; - KEY_CODE_MAP[39] = KeyCode.RightArrow; - KEY_CODE_MAP[40] = KeyCode.DownArrow; - KEY_CODE_MAP[45] = KeyCode.Insert; - KEY_CODE_MAP[46] = KeyCode.Delete; + for (let i = 0; i < INVERSE_KEY_CODE_MAP.length; i++) { + INVERSE_KEY_CODE_MAP[i] = -1; + } - KEY_CODE_MAP[48] = KeyCode.KEY_0; - KEY_CODE_MAP[49] = KeyCode.KEY_1; - KEY_CODE_MAP[50] = KeyCode.KEY_2; - KEY_CODE_MAP[51] = KeyCode.KEY_3; - KEY_CODE_MAP[52] = KeyCode.KEY_4; - KEY_CODE_MAP[53] = KeyCode.KEY_5; - KEY_CODE_MAP[54] = KeyCode.KEY_6; - KEY_CODE_MAP[55] = KeyCode.KEY_7; - KEY_CODE_MAP[56] = KeyCode.KEY_8; - KEY_CODE_MAP[57] = KeyCode.KEY_9; + function define(code: number, keyCode: KeyCode): void { + KEY_CODE_MAP[code] = keyCode; + INVERSE_KEY_CODE_MAP[keyCode] = code; + } - KEY_CODE_MAP[65] = KeyCode.KEY_A; - KEY_CODE_MAP[66] = KeyCode.KEY_B; - KEY_CODE_MAP[67] = KeyCode.KEY_C; - KEY_CODE_MAP[68] = KeyCode.KEY_D; - KEY_CODE_MAP[69] = KeyCode.KEY_E; - KEY_CODE_MAP[70] = KeyCode.KEY_F; - KEY_CODE_MAP[71] = KeyCode.KEY_G; - KEY_CODE_MAP[72] = KeyCode.KEY_H; - KEY_CODE_MAP[73] = KeyCode.KEY_I; - KEY_CODE_MAP[74] = KeyCode.KEY_J; - KEY_CODE_MAP[75] = KeyCode.KEY_K; - KEY_CODE_MAP[76] = KeyCode.KEY_L; - KEY_CODE_MAP[77] = KeyCode.KEY_M; - KEY_CODE_MAP[78] = KeyCode.KEY_N; - KEY_CODE_MAP[79] = KeyCode.KEY_O; - KEY_CODE_MAP[80] = KeyCode.KEY_P; - KEY_CODE_MAP[81] = KeyCode.KEY_Q; - KEY_CODE_MAP[82] = KeyCode.KEY_R; - KEY_CODE_MAP[83] = KeyCode.KEY_S; - KEY_CODE_MAP[84] = KeyCode.KEY_T; - KEY_CODE_MAP[85] = KeyCode.KEY_U; - KEY_CODE_MAP[86] = KeyCode.KEY_V; - KEY_CODE_MAP[87] = KeyCode.KEY_W; - KEY_CODE_MAP[88] = KeyCode.KEY_X; - KEY_CODE_MAP[89] = KeyCode.KEY_Y; - KEY_CODE_MAP[90] = KeyCode.KEY_Z; + define(3, KeyCode.PauseBreak); // VK_CANCEL 0x03 Control-break processing + define(8, KeyCode.Backspace); + define(9, KeyCode.Tab); + define(13, KeyCode.Enter); + define(16, KeyCode.Shift); + define(17, KeyCode.Ctrl); + define(18, KeyCode.Alt); + define(19, KeyCode.PauseBreak); + define(20, KeyCode.CapsLock); + define(27, KeyCode.Escape); + define(32, KeyCode.Space); + define(33, KeyCode.PageUp); + define(34, KeyCode.PageDown); + define(35, KeyCode.End); + define(36, KeyCode.Home); + define(37, KeyCode.LeftArrow); + define(38, KeyCode.UpArrow); + define(39, KeyCode.RightArrow); + define(40, KeyCode.DownArrow); + define(45, KeyCode.Insert); + define(46, KeyCode.Delete); - KEY_CODE_MAP[93] = KeyCode.ContextMenu; + define(48, KeyCode.KEY_0); + define(49, KeyCode.KEY_1); + define(50, KeyCode.KEY_2); + define(51, KeyCode.KEY_3); + define(52, KeyCode.KEY_4); + define(53, KeyCode.KEY_5); + define(54, KeyCode.KEY_6); + define(55, KeyCode.KEY_7); + define(56, KeyCode.KEY_8); + define(57, KeyCode.KEY_9); - KEY_CODE_MAP[96] = KeyCode.NUMPAD_0; - KEY_CODE_MAP[97] = KeyCode.NUMPAD_1; - KEY_CODE_MAP[98] = KeyCode.NUMPAD_2; - KEY_CODE_MAP[99] = KeyCode.NUMPAD_3; - KEY_CODE_MAP[100] = KeyCode.NUMPAD_4; - KEY_CODE_MAP[101] = KeyCode.NUMPAD_5; - KEY_CODE_MAP[102] = KeyCode.NUMPAD_6; - KEY_CODE_MAP[103] = KeyCode.NUMPAD_7; - KEY_CODE_MAP[104] = KeyCode.NUMPAD_8; - KEY_CODE_MAP[105] = KeyCode.NUMPAD_9; - KEY_CODE_MAP[106] = KeyCode.NUMPAD_MULTIPLY; - KEY_CODE_MAP[107] = KeyCode.NUMPAD_ADD; - KEY_CODE_MAP[108] = KeyCode.NUMPAD_SEPARATOR; - KEY_CODE_MAP[109] = KeyCode.NUMPAD_SUBTRACT; - KEY_CODE_MAP[110] = KeyCode.NUMPAD_DECIMAL; - KEY_CODE_MAP[111] = KeyCode.NUMPAD_DIVIDE; + define(65, KeyCode.KEY_A); + define(66, KeyCode.KEY_B); + define(67, KeyCode.KEY_C); + define(68, KeyCode.KEY_D); + define(69, KeyCode.KEY_E); + define(70, KeyCode.KEY_F); + define(71, KeyCode.KEY_G); + define(72, KeyCode.KEY_H); + define(73, KeyCode.KEY_I); + define(74, KeyCode.KEY_J); + define(75, KeyCode.KEY_K); + define(76, KeyCode.KEY_L); + define(77, KeyCode.KEY_M); + define(78, KeyCode.KEY_N); + define(79, KeyCode.KEY_O); + define(80, KeyCode.KEY_P); + define(81, KeyCode.KEY_Q); + define(82, KeyCode.KEY_R); + define(83, KeyCode.KEY_S); + define(84, KeyCode.KEY_T); + define(85, KeyCode.KEY_U); + define(86, KeyCode.KEY_V); + define(87, KeyCode.KEY_W); + define(88, KeyCode.KEY_X); + define(89, KeyCode.KEY_Y); + define(90, KeyCode.KEY_Z); - KEY_CODE_MAP[112] = KeyCode.F1; - KEY_CODE_MAP[113] = KeyCode.F2; - KEY_CODE_MAP[114] = KeyCode.F3; - KEY_CODE_MAP[115] = KeyCode.F4; - KEY_CODE_MAP[116] = KeyCode.F5; - KEY_CODE_MAP[117] = KeyCode.F6; - KEY_CODE_MAP[118] = KeyCode.F7; - KEY_CODE_MAP[119] = KeyCode.F8; - KEY_CODE_MAP[120] = KeyCode.F9; - KEY_CODE_MAP[121] = KeyCode.F10; - KEY_CODE_MAP[122] = KeyCode.F11; - KEY_CODE_MAP[123] = KeyCode.F12; - KEY_CODE_MAP[124] = KeyCode.F13; - KEY_CODE_MAP[125] = KeyCode.F14; - KEY_CODE_MAP[126] = KeyCode.F15; - KEY_CODE_MAP[127] = KeyCode.F16; - KEY_CODE_MAP[128] = KeyCode.F17; - KEY_CODE_MAP[129] = KeyCode.F18; - KEY_CODE_MAP[130] = KeyCode.F19; + define(93, KeyCode.ContextMenu); - KEY_CODE_MAP[144] = KeyCode.NumLock; - KEY_CODE_MAP[145] = KeyCode.ScrollLock; + define(96, KeyCode.NUMPAD_0); + define(97, KeyCode.NUMPAD_1); + define(98, KeyCode.NUMPAD_2); + define(99, KeyCode.NUMPAD_3); + define(100, KeyCode.NUMPAD_4); + define(101, KeyCode.NUMPAD_5); + define(102, KeyCode.NUMPAD_6); + define(103, KeyCode.NUMPAD_7); + define(104, KeyCode.NUMPAD_8); + define(105, KeyCode.NUMPAD_9); + define(106, KeyCode.NUMPAD_MULTIPLY); + define(107, KeyCode.NUMPAD_ADD); + define(108, KeyCode.NUMPAD_SEPARATOR); + define(109, KeyCode.NUMPAD_SUBTRACT); + define(110, KeyCode.NUMPAD_DECIMAL); + define(111, KeyCode.NUMPAD_DIVIDE); - KEY_CODE_MAP[186] = KeyCode.US_SEMICOLON; - KEY_CODE_MAP[187] = KeyCode.US_EQUAL; - KEY_CODE_MAP[188] = KeyCode.US_COMMA; - KEY_CODE_MAP[189] = KeyCode.US_MINUS; - KEY_CODE_MAP[190] = KeyCode.US_DOT; - KEY_CODE_MAP[191] = KeyCode.US_SLASH; - KEY_CODE_MAP[192] = KeyCode.US_BACKTICK; - KEY_CODE_MAP[193] = KeyCode.ABNT_C1; - KEY_CODE_MAP[194] = KeyCode.ABNT_C2; - KEY_CODE_MAP[219] = KeyCode.US_OPEN_SQUARE_BRACKET; - KEY_CODE_MAP[220] = KeyCode.US_BACKSLASH; - KEY_CODE_MAP[221] = KeyCode.US_CLOSE_SQUARE_BRACKET; - KEY_CODE_MAP[222] = KeyCode.US_QUOTE; - KEY_CODE_MAP[223] = KeyCode.OEM_8; + define(112, KeyCode.F1); + define(113, KeyCode.F2); + define(114, KeyCode.F3); + define(115, KeyCode.F4); + define(116, KeyCode.F5); + define(117, KeyCode.F6); + define(118, KeyCode.F7); + define(119, KeyCode.F8); + define(120, KeyCode.F9); + define(121, KeyCode.F10); + define(122, KeyCode.F11); + define(123, KeyCode.F12); + define(124, KeyCode.F13); + define(125, KeyCode.F14); + define(126, KeyCode.F15); + define(127, KeyCode.F16); + define(128, KeyCode.F17); + define(129, KeyCode.F18); + define(130, KeyCode.F19); - KEY_CODE_MAP[226] = KeyCode.OEM_102; + define(144, KeyCode.NumLock); + define(145, KeyCode.ScrollLock); + + define(186, KeyCode.US_SEMICOLON); + define(187, KeyCode.US_EQUAL); + define(188, KeyCode.US_COMMA); + define(189, KeyCode.US_MINUS); + define(190, KeyCode.US_DOT); + define(191, KeyCode.US_SLASH); + define(192, KeyCode.US_BACKTICK); + define(193, KeyCode.ABNT_C1); + define(194, KeyCode.ABNT_C2); + define(219, KeyCode.US_OPEN_SQUARE_BRACKET); + define(220, KeyCode.US_BACKSLASH); + define(221, KeyCode.US_CLOSE_SQUARE_BRACKET); + define(222, KeyCode.US_QUOTE); + define(223, KeyCode.OEM_8); + + define(226, KeyCode.OEM_102); /** * https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html * If an Input Method Editor is processing key input and the event is keydown, return 229. */ - KEY_CODE_MAP[229] = KeyCode.KEY_IN_COMPOSITION; + define(229, KeyCode.KEY_IN_COMPOSITION); if (browser.isIE) { - KEY_CODE_MAP[91] = KeyCode.Meta; + define(91, KeyCode.Meta); } else if (browser.isFirefox) { - KEY_CODE_MAP[59] = KeyCode.US_SEMICOLON; - KEY_CODE_MAP[107] = KeyCode.US_EQUAL; - KEY_CODE_MAP[109] = KeyCode.US_MINUS; + define(59, KeyCode.US_SEMICOLON); + define(107, KeyCode.US_EQUAL); + define(109, KeyCode.US_MINUS); if (platform.isMacintosh) { - KEY_CODE_MAP[224] = KeyCode.Meta; + define(224, KeyCode.Meta); } } else if (browser.isWebKit) { - KEY_CODE_MAP[91] = KeyCode.Meta; + define(91, KeyCode.Meta); if (platform.isMacintosh) { // the two meta keys in the Mac have different key codes (91 and 93) - KEY_CODE_MAP[93] = KeyCode.Meta; + define(93, KeyCode.Meta); } else { - KEY_CODE_MAP[92] = KeyCode.Meta; + define(92, KeyCode.Meta); } } })(); @@ -165,6 +176,10 @@ function extractKeyCode(e: KeyboardEvent): KeyCode { return KEY_CODE_MAP[e.keyCode] || KeyCode.Unknown; } +export function getCodeForKeyCode(keyCode: KeyCode): number { + return INVERSE_KEY_CODE_MAP[keyCode]; +} + export interface IKeyboardEvent { readonly browserEvent: KeyboardEvent; readonly target: HTMLElement; diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index e928613fb9b..a09429f1137 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -360,7 +360,7 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { this.toDispose.push(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => { let keyEvent = new StandardKeyboardEvent(e); - let shouldPreventDefault = this.dispatchEvent(keyEvent, keyEvent.target); + let shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target); if (shouldPreventDefault) { keyEvent.preventDefault(); } diff --git a/src/vs/editor/standalone/test/browser/simpleServices.test.ts b/src/vs/editor/standalone/test/browser/simpleServices.test.ts index ef3756c76c8..e13eab64aa9 100644 --- a/src/vs/editor/standalone/test/browser/simpleServices.test.ts +++ b/src/vs/editor/standalone/test/browser/simpleServices.test.ts @@ -17,7 +17,7 @@ suite('StandaloneKeybindingService', () => { class TestStandaloneKeybindingService extends StandaloneKeybindingService { public testDispatch(e: IKeyboardEvent): void { - super.dispatchEvent(e, null); + super._dispatch(e, null); } } diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 094e607e5ee..d94d59a5afe 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -11,42 +11,70 @@ import { IWindowDriver, IElement, WindowDriverChannel, WindowDriverRegistryChann import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; import { SimpleKeybinding } from 'vs/base/common/keyCodes'; -import { ScanCodeBinding, IMMUTABLE_KEY_CODE_TO_CODE, ScanCodeUtils } from 'vs/workbench/services/keybinding/common/scanCode'; -import { IKeybindingService, IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding'; +import { ScanCodeBinding } from 'vs/workbench/services/keybinding/common/scanCode'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import * as electron from 'electron'; +import { USLayoutResolvedKeybinding } from '../../keybinding/common/usLayoutResolvedKeybinding'; +import { OS } from 'vs/base/common/platform'; class WindowDriver implements IWindowDriver { - constructor( - @IKeybindingService private keybindingService: IKeybindingService - ) { } + constructor() { } async dispatchKeybinding(rawKeybinding: string): TPromise { const [first, second] = KeybindingIO._readUserBinding(rawKeybinding); - this._dispatchKeybinding(first); + await this._dispatchKeybinding(first); if (second) { - this._dispatchKeybinding(second); + await this._dispatchKeybinding(second); } } - private _dispatchKeybinding(keybinding: SimpleKeybinding | ScanCodeBinding): void { + private async _dispatchKeybinding(keybinding: SimpleKeybinding | ScanCodeBinding): TPromise { if (keybinding instanceof ScanCodeBinding) { throw new Error('ScanCodeBindings not supported'); } - const scanCode = IMMUTABLE_KEY_CODE_TO_CODE[keybinding.keyCode]; - const event: IKeyboardEvent = { - ctrlKey: keybinding.ctrlKey, - altKey: keybinding.altKey, - shiftKey: keybinding.shiftKey, - metaKey: keybinding.metaKey, - keyCode: keybinding.keyCode, - code: ScanCodeUtils.toString(scanCode) - }; + const webContents = electron.remote.getCurrentWebContents(); + const noModifiedKeybinding = new SimpleKeybinding(false, false, false, false, keybinding.keyCode); + const resolvedKeybinding = new USLayoutResolvedKeybinding(noModifiedKeybinding, OS); + const keyCode = resolvedKeybinding.getElectronAccelerator(); - this.keybindingService.dispatchEvent(event, document.activeElement); + const modifiers = []; + + if (keybinding.ctrlKey) { + modifiers.push('ctrl'); + } + + if (keybinding.metaKey) { + modifiers.push('meta'); + } + + if (keybinding.shiftKey) { + modifiers.push('shift'); + } + + if (keybinding.altKey) { + modifiers.push('alt'); + } + + webContents.sendInputEvent({ type: 'keyDown', keyCode, modifiers } as any); + webContents.sendInputEvent({ type: 'char', keyCode, modifiers } as any); + webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); + + await TPromise.timeout(100); + + // const event: IKeyboardEvent = { + // ctrlKey: keybinding.ctrlKey, + // altKey: keybinding.altKey, + // shiftKey: keybinding.shiftKey, + // metaKey: keybinding.metaKey, + // keyCode: keybinding.keyCode, + // code: ScanCodeUtils.toString(scanCode) + // }; + + // this.keybindingService.dispatchEvent(event, document.activeElement); // console.log(keybinding); diff --git a/src/vs/platform/keybinding/common/abstractKeybindingService.ts b/src/vs/platform/keybinding/common/abstractKeybindingService.ts index abf8f7246f6..8e41b285347 100644 --- a/src/vs/platform/keybinding/common/abstractKeybindingService.ts +++ b/src/vs/platform/keybinding/common/abstractKeybindingService.ts @@ -114,7 +114,7 @@ export abstract class AbstractKeybindingService implements IKeybindingService { return this._getResolver().resolve(contextValue, currentChord, firstPart); } - dispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean { + protected _dispatch(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean { let shouldPreventDefault = false; const keybinding = this.resolveKeyboardEvent(e); diff --git a/src/vs/platform/keybinding/common/keybinding.ts b/src/vs/platform/keybinding/common/keybinding.ts index dde18ad1da3..c491ec7a8d0 100644 --- a/src/vs/platform/keybinding/common/keybinding.ts +++ b/src/vs/platform/keybinding/common/keybinding.ts @@ -77,10 +77,5 @@ export interface IKeybindingService { getKeybindings(): ResolvedKeybindingItem[]; customKeybindingsCount(): number; - - /** - * For simulation purposes (eg, smoke test) - */ - dispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean; } diff --git a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts index 032e9138c9c..44ea5de8c5d 100644 --- a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts +++ b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts @@ -70,7 +70,7 @@ suite('AbstractKeybindingService', () => { public testDispatch(kb: number): boolean { const keybinding = createSimpleKeybinding(kb, OS); - return this.dispatchEvent({ + return this._dispatch({ ctrlKey: keybinding.ctrlKey, shiftKey: keybinding.shiftKey, altKey: keybinding.altKey, diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts index 53a383766df..94cce17a1d0 100644 --- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts @@ -313,7 +313,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { this.toDispose.push(dom.addDisposableListener(windowElement, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => { let keyEvent = new StandardKeyboardEvent(e); - let shouldPreventDefault = this.dispatchEvent(keyEvent, keyEvent.target); + let shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target); if (shouldPreventDefault) { keyEvent.preventDefault(); } From 48bd86b4be855b1b2929a27bdacf18c6aba8336f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:43:32 +0200 Subject: [PATCH 0549/1070] :lipstick: --- .../driver/electron-browser/driver.ts | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index d94d59a5afe..3ca910c7113 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -64,27 +64,8 @@ class WindowDriver implements IWindowDriver { webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); await TPromise.timeout(100); - - // const event: IKeyboardEvent = { - // ctrlKey: keybinding.ctrlKey, - // altKey: keybinding.altKey, - // shiftKey: keybinding.shiftKey, - // metaKey: keybinding.metaKey, - // keyCode: keybinding.keyCode, - // code: ScanCodeUtils.toString(scanCode) - // }; - - // this.keybindingService.dispatchEvent(event, document.activeElement); - - // console.log(keybinding); - - // const e = new KeyboardEvent('keydown', event); - // console.log('dispatching', e); - // document.activeElement.dispatchEvent(e); - // document.activeElement.dispatchEvent(new KeyboardEvent('keyup', event)); } - click(selector: string, xoffset?: number, yoffset?: number): TPromise { throw new Error('Method not implemented.'); } From e47f1213f7335fb8832d364a707f63a170c174d3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:47:45 +0200 Subject: [PATCH 0550/1070] dispatchKeybinding from main --- src/vs/platform/driver/common/driver.ts | 7 --- .../driver/electron-browser/driver.ts | 51 ------------------ .../platform/driver/electron-main/driver.ts | 54 +++++++++++++++++-- 3 files changed, 51 insertions(+), 61 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index d22ba362654..4adbbd20009 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -155,7 +155,6 @@ export class WindowDriverRegistryChannelClient implements IWindowDriverRegistry } export interface IWindowDriver { - dispatchKeybinding(keybinding: string): TPromise; click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise; doubleClick(selector: string): TPromise; move(selector: string): TPromise; @@ -167,7 +166,6 @@ export interface IWindowDriver { } export interface IWindowDriverChannel extends IChannel { - call(command: 'dispatchKeybinding', arg: string): TPromise; call(command: 'click', arg: [string, number | undefined, number | undefined]): TPromise; call(command: 'doubleClick', arg: string): TPromise; call(command: 'move', arg: string): TPromise; @@ -185,7 +183,6 @@ export class WindowDriverChannel implements IWindowDriverChannel { call(command: string, arg?: any): TPromise { switch (command) { - case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg); case 'click': return this.driver.click(arg[0], arg[1], arg[2]); case 'doubleClick': return this.driver.doubleClick(arg); case 'move': return this.driver.move(arg); @@ -207,10 +204,6 @@ export class WindowDriverChannelClient implements IWindowDriver { constructor(private channel: IWindowDriverChannel) { } - dispatchKeybinding(keybinding: string): TPromise { - return this.channel.call('dispatchKeybinding', keybinding); - } - click(selector: string, xoffset?: number, yoffset?: number): TPromise { return this.channel.call('click', [selector, xoffset, yoffset]); } diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 3ca910c7113..e00563abcd1 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -9,63 +9,12 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable } from 'vs/base/common/lifecycle'; import { IWindowDriver, IElement, WindowDriverChannel, WindowDriverRegistryChannelClient } from 'vs/platform/driver/common/driver'; import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; -import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; -import { SimpleKeybinding } from 'vs/base/common/keyCodes'; -import { ScanCodeBinding } from 'vs/workbench/services/keybinding/common/scanCode'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import * as electron from 'electron'; -import { USLayoutResolvedKeybinding } from '../../keybinding/common/usLayoutResolvedKeybinding'; -import { OS } from 'vs/base/common/platform'; class WindowDriver implements IWindowDriver { constructor() { } - async dispatchKeybinding(rawKeybinding: string): TPromise { - const [first, second] = KeybindingIO._readUserBinding(rawKeybinding); - - await this._dispatchKeybinding(first); - - if (second) { - await this._dispatchKeybinding(second); - } - } - - private async _dispatchKeybinding(keybinding: SimpleKeybinding | ScanCodeBinding): TPromise { - if (keybinding instanceof ScanCodeBinding) { - throw new Error('ScanCodeBindings not supported'); - } - - const webContents = electron.remote.getCurrentWebContents(); - const noModifiedKeybinding = new SimpleKeybinding(false, false, false, false, keybinding.keyCode); - const resolvedKeybinding = new USLayoutResolvedKeybinding(noModifiedKeybinding, OS); - const keyCode = resolvedKeybinding.getElectronAccelerator(); - - const modifiers = []; - - if (keybinding.ctrlKey) { - modifiers.push('ctrl'); - } - - if (keybinding.metaKey) { - modifiers.push('meta'); - } - - if (keybinding.shiftKey) { - modifiers.push('shift'); - } - - if (keybinding.altKey) { - modifiers.push('alt'); - } - - webContents.sendInputEvent({ type: 'keyDown', keyCode, modifiers } as any); - webContents.sendInputEvent({ type: 'char', keyCode, modifiers } as any); - webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); - - await TPromise.timeout(100); - } - click(selector: string, xoffset?: number, yoffset?: number): TPromise { throw new Error('Method not implemented.'); } diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 8c5e7d57bc8..0b971ac2632 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -12,6 +12,13 @@ import { serve as serveNet } from 'vs/base/parts/ipc/node/ipc.net'; import { combinedDisposable, IDisposable } from 'vs/base/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IPCServer, IClientRouter } from 'vs/base/parts/ipc/common/ipc'; +import { SimpleKeybinding } from 'vs/base/common/keyCodes'; +import { USLayoutResolvedKeybinding } from 'vs/platform/keybinding/common/usLayoutResolvedKeybinding'; +import { OS } from 'vs/base/common/platform'; + +// TODO@joao: bad layering! +import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; +import { ScanCodeBinding } from 'vs/workbench/services/keybinding/common/scanCode'; class WindowRouter implements IClientRouter { @@ -44,9 +51,50 @@ export class Driver implements IDriver, IWindowDriverRegistry { .filter(id => this.registeredWindowIds.has(id)); } - dispatchKeybinding(windowId: number, keybinding: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); - return windowDriver.dispatchKeybinding(keybinding); + async dispatchKeybinding(windowId: number, keybinding: string): TPromise { + const [first, second] = KeybindingIO._readUserBinding(keybinding); + + await this._dispatchKeybinding(windowId, first); + + if (second) { + await this._dispatchKeybinding(windowId, second); + } + } + + private async _dispatchKeybinding(windowId: number, keybinding: SimpleKeybinding | ScanCodeBinding): TPromise { + if (keybinding instanceof ScanCodeBinding) { + throw new Error('ScanCodeBindings not supported'); + } + + const window = this.windowsService.getWindowById(windowId); + const webContents = window.win.webContents; + const noModifiedKeybinding = new SimpleKeybinding(false, false, false, false, keybinding.keyCode); + const resolvedKeybinding = new USLayoutResolvedKeybinding(noModifiedKeybinding, OS); + const keyCode = resolvedKeybinding.getElectronAccelerator(); + + const modifiers = []; + + if (keybinding.ctrlKey) { + modifiers.push('ctrl'); + } + + if (keybinding.metaKey) { + modifiers.push('meta'); + } + + if (keybinding.shiftKey) { + modifiers.push('shift'); + } + + if (keybinding.altKey) { + modifiers.push('alt'); + } + + webContents.sendInputEvent({ type: 'keyDown', keyCode, modifiers } as any); + webContents.sendInputEvent({ type: 'char', keyCode, modifiers } as any); + webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); + + await TPromise.timeout(100); } click(windowId: number, selector: string, xoffset?: number, yoffset?: number): TPromise { From d7981f1a0b5eef8812d43cc4d5177e15ee656f2c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:48:32 +0200 Subject: [PATCH 0551/1070] lower timeout --- test/smoke/test/mocha.opts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/smoke/test/mocha.opts b/test/smoke/test/mocha.opts index ce88473e86b..a4520575eb6 100644 --- a/test/smoke/test/mocha.opts +++ b/test/smoke/test/mocha.opts @@ -1,3 +1,3 @@ ---timeout 20000 +--timeout 10000 --slow 2000 out/main.js \ No newline at end of file From 37b566135616331d0c29bd05467c1ed56eb6a3b9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 11:52:40 +0200 Subject: [PATCH 0552/1070] forward driver calls --- test/smoke/src/driver.ts | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/test/smoke/src/driver.ts b/test/smoke/src/driver.ts index 5c4652a46d5..e3163c6cfe1 100644 --- a/test/smoke/src/driver.ts +++ b/test/smoke/src/driver.ts @@ -142,52 +142,58 @@ export class CodeDriver implements Driver { await this.driver.dispatchKeybinding(windowId, keybinding); } - click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { + async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { if (this.verbose) { console.log('- click:', selector); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + await this.driver.click(windowId, selector, xoffset, yoffset); } - doubleClick(selector: string): Promise { + async doubleClick(selector: string): Promise { if (this.verbose) { console.log('- doubleClick:', selector); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + await this.driver.doubleClick(windowId, selector); } - move(selector: string): Promise { + async move(selector: string): Promise { if (this.verbose) { console.log('- move:', selector); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + await this.driver.move(windowId, selector); } - setValue(selector: string, text: string): Promise { + async setValue(selector: string, text: string): Promise { if (this.verbose) { console.log('- setValue:', selector, text); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + await this.driver.setValue(windowId, selector, text); } - getTitle(): Promise { + async getTitle(): Promise { if (this.verbose) { console.log('- getTitle:'); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + return await this.driver.getTitle(windowId); } - isActiveElement(selector: string): Promise { + async isActiveElement(selector: string): Promise { if (this.verbose) { console.log('- isActiveElement:', selector); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + return await this.driver.isActiveElement(windowId, selector); } async getElements(selector: string): Promise { @@ -200,12 +206,13 @@ export class CodeDriver implements Driver { return result; } - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ + async selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ if (this.verbose) { console.log('- selectorExecute:', selector); } - throw new Error('Method not implemented.'); + const windowId = await this.getWindowId(); + return await this.driver.selectorExecute(windowId, selector, script, ...args); } private async getWindowId(): Promise { From 43207efb461f75aae3b769279ef7d64391fae22f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 12:19:49 +0200 Subject: [PATCH 0553/1070] dispatch input event --- src/vs/platform/driver/electron-browser/driver.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index e00563abcd1..99f7a7e5cd0 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -34,7 +34,11 @@ class WindowDriver implements IWindowDriver { throw new Error('Element not found'); } - (element as HTMLInputElement).value = text; + const inputElement = element as HTMLInputElement; + inputElement.value = text; + + const event = new Event('input', { bubbles: true, cancelable: true }); + inputElement.dispatchEvent(event); } async getTitle(): TPromise { From cfb26b3d4bc55d080e822b7840f9aaf821ee0a8f Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 10 Apr 2018 12:20:24 +0200 Subject: [PATCH 0554/1070] Remove left-over console.log --- src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts b/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts index 0fc4b4ef5ea..6dbaa2e4525 100644 --- a/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts +++ b/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts @@ -391,7 +391,6 @@ class Widget { } if (this.allowEditorOverflow) { - console.log(`here i am: ${JSON.stringify(topLeft)}`); placement = this._layoutBoxInPage(topLeft, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, ctx); } else { placement = this._layoutBoxInViewport(topLeft, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, ctx); From 7bd69c0c86dc78329eec3a98366f3f137b558828 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 12:34:46 +0200 Subject: [PATCH 0555/1070] attributes, children on IElement instances --- src/vs/platform/driver/common/driver.ts | 22 ++++++------ .../driver/electron-browser/driver.ts | 34 +++++++++++++++---- .../platform/driver/electron-main/driver.ts | 4 +-- test/smoke/src/api.ts | 4 +-- test/smoke/src/areas/debug/debug.ts | 2 +- test/smoke/src/areas/editor/editor.ts | 4 +-- test/smoke/src/areas/editor/peek.ts | 2 +- .../src/areas/preferences/preferences.test.ts | 4 +-- test/smoke/src/areas/quickopen/quickopen.ts | 2 +- test/smoke/src/driver.ts | 10 +++--- 10 files changed, 56 insertions(+), 32 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 4adbbd20009..0fdcc5d46c5 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -17,6 +17,8 @@ export interface IElement { tagName: string; className: string; textContent: string; + attributes: { [name: string]: string; }; + children: IElement[]; } export interface IDriver { @@ -30,7 +32,7 @@ export interface IDriver { setValue(windowId: number, selector: string, text: string): TPromise; getTitle(windowId: number): TPromise; isActiveElement(windowId: number, selector: string): TPromise; - getElements(windowId: number, selector: string): TPromise; + getElements(windowId: number, selector: string, recursive: boolean): TPromise; selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } //*END @@ -44,7 +46,7 @@ export interface IDriverChannel extends IChannel { call(command: 'setValue', arg: [number, string, string]): TPromise; call(command: 'getTitle', arg: [number]): TPromise; call(command: 'isActiveElement', arg: [number, string]): TPromise; - call(command: 'getElements', arg: [number, string]): TPromise; + call(command: 'getElements', arg: [number, string, boolean]): TPromise; call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; } @@ -63,7 +65,7 @@ export class DriverChannel implements IDriverChannel { case 'setValue': return this.driver.setValue(arg[0], arg[1], arg[2]); case 'getTitle': return this.driver.getTitle(arg[0]); case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]); - case 'getElements': return this.driver.getElements(arg[0], arg[1]); + case 'getElements': return this.driver.getElements(arg[0], arg[1], arg[2]); // TODO@joao case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[1], ...arg[2]); @@ -111,8 +113,8 @@ export class DriverChannelClient implements IDriver { return this.channel.call('isActiveElement', [windowId, selector]); } - getElements(windowId: number, selector: string): TPromise { - return this.channel.call('getElements', [windowId, selector]); + getElements(windowId: number, selector: string, recursive: boolean): TPromise { + return this.channel.call('getElements', [windowId, selector, recursive]); } selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ @@ -161,7 +163,7 @@ export interface IWindowDriver { setValue(selector: string, text: string): TPromise; getTitle(): TPromise; isActiveElement(selector: string): TPromise; - getElements(selector: string): TPromise; + getElements(selector: string, recursive: boolean): TPromise; selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } @@ -172,7 +174,7 @@ export interface IWindowDriverChannel extends IChannel { call(command: 'setValue', arg: [string, string]): TPromise; call(command: 'getTitle'): TPromise; call(command: 'isActiveElement', arg: string): TPromise; - call(command: 'getElements', arg: string): TPromise; + call(command: 'getElements', arg: [string, boolean]): TPromise; call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; } @@ -189,7 +191,7 @@ export class WindowDriverChannel implements IWindowDriverChannel { case 'setValue': return this.driver.setValue(arg[0], arg[1]); case 'getTitle': return this.driver.getTitle(); case 'isActiveElement': return this.driver.isActiveElement(arg); - case 'getElements': return this.driver.getElements(arg); + case 'getElements': return this.driver.getElements(arg[0], arg[1]); // TODO@joao case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], ...arg[2]); } @@ -228,8 +230,8 @@ export class WindowDriverChannelClient implements IWindowDriver { return this.channel.call('isActiveElement', selector); } - getElements(selector: string): TPromise { - return this.channel.call('getElements', selector); + getElements(selector: string, recursive: boolean): TPromise { + return this.channel.call('getElements', [selector, recursive]); } selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 99f7a7e5cd0..44100426f4f 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -11,6 +11,31 @@ import { IWindowDriver, IElement, WindowDriverChannel, WindowDriverRegistryChann import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +function serializeElement(element: Element, recursive: boolean): IElement { + const attributes = Object.create(null); + + for (let j = 0; j < element.attributes.length; j++) { + const attr = element.attributes.item(j); + attributes[attr.name] = attr.value; + } + + const children = []; + + if (recursive) { + for (let i = 0; i < element.children.length; i++) { + children.push(serializeElement(element.children.item(i), true)); + } + } + + return { + tagName: element.tagName, + className: element.className, + textContent: element.textContent || '', + attributes, + children + }; +} + class WindowDriver implements IWindowDriver { constructor() { } @@ -50,18 +75,13 @@ class WindowDriver implements IWindowDriver { return element === document.activeElement; } - async getElements(selector: string): TPromise { + async getElements(selector: string, recursive: boolean): TPromise { const query = document.querySelectorAll(selector); const result: IElement[] = []; for (let i = 0; i < query.length; i++) { const element = query.item(i); - - result.push({ - tagName: element.tagName, - className: element.className, - textContent: element.textContent || '' - }); + result.push(serializeElement(element, recursive)); } return result; diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 0b971ac2632..1676316a3a5 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -127,9 +127,9 @@ export class Driver implements IDriver, IWindowDriverRegistry { return windowDriver.isActiveElement(selector); } - getElements(windowId: number, selector: string): TPromise { + getElements(windowId: number, selector: string, recursive: boolean): TPromise { const windowDriver = this.getWindowDriver(windowId); - return windowDriver.getElements(selector); + return windowDriver.getElements(selector, recursive); } selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index a2f8b5ce21d..d93d19ff05f 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -60,8 +60,8 @@ export class API { return elements.length; } - waitForElements(selector: string, accept: (result: Element[]) => boolean = result => result.length > 0): Promise { - return this.waitFor(() => this.driver.getElements(selector), accept, `elements with selector ${selector}`) as Promise; + waitForElements(selector: string, recursive: boolean, accept: (result: Element[]) => boolean = result => result.length > 0): Promise { + return this.waitFor(() => this.driver.getElements(selector, recursive), accept, `elements with selector ${selector}`) as Promise; } waitForElement(selector: string, accept: (result: Element | undefined) => boolean = result => !!result): Promise { diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index b346f7395c9..630c5c95340 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -105,7 +105,7 @@ export class Debug extends Viewlet { } async waitForStackFrameLength(length: number): Promise { - await this.api.waitForElements(STACK_FRAME, result => result.length === length); + await this.api.waitForElements(STACK_FRAME, false, result => result.length === length); } async focusStackFrame(name: string, message: string): Promise { diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index 74486d947b3..552a4fc743b 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -125,13 +125,13 @@ export class Editor { } private async getClassSelectors(term: string, viewline: number): Promise { - const elements = await this.api.waitForElements(`${Editor.VIEW_LINES}>:nth-child(${viewline}) span span`, els => els.some(el => el.textContent === term)); + const elements = await this.api.waitForElements(`${Editor.VIEW_LINES}>:nth-child(${viewline}) span span`, false, els => els.some(el => el.textContent === term)); const { className } = elements.filter(r => r.textContent === term)[0]; return className.split(/\s/g); } private async getViewLineIndex(line: number): Promise { - const elements = await this.api.waitForElements(Editor.LINE_NUMBERS, els => { + const elements = await this.api.waitForElements(Editor.LINE_NUMBERS, false, els => { return els.some(el => el.textContent === `${line}`); }); diff --git a/test/smoke/src/areas/editor/peek.ts b/test/smoke/src/areas/editor/peek.ts index fe094cdb683..4f0bd9170b2 100644 --- a/test/smoke/src/areas/editor/peek.ts +++ b/test/smoke/src/areas/editor/peek.ts @@ -26,7 +26,7 @@ export class References { } async waitForReferencesCount(count: number): Promise { - await this.api.waitForElements(References.REFERENCES, result => result && result.length === count); + await this.api.waitForElements(References.REFERENCES, false, result => result && result.length === count); } async waitForFile(file: string): Promise { diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index fc1dccb8d6d..e0d0e8223ab 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -18,12 +18,12 @@ export function setup() { const app = this.app as SpectronApplication; await app.workbench.explorer.openFile('app.js'); - await app.api.waitForElements('.line-numbers', elements => !!elements.length); + await app.api.waitForElements('.line-numbers', false, elements => !!elements.length); await app.screenCapturer.capture('app.js has line numbers'); await app.workbench.settingsEditor.addUserSetting('editor.lineNumbers', '"off"'); await app.workbench.editors.selectTab('app.js'); - await app.api.waitForElements('.line-numbers', result => !result || result.length === 0); + await app.api.waitForElements('.line-numbers', false, result => !result || result.length === 0); await app.screenCapturer.capture('line numbers hidden'); }); diff --git a/test/smoke/src/areas/quickopen/quickopen.ts b/test/smoke/src/areas/quickopen/quickopen.ts index a4a14ee2cf3..9d411f60d77 100644 --- a/test/smoke/src/areas/quickopen/quickopen.ts +++ b/test/smoke/src/areas/quickopen/quickopen.ts @@ -65,7 +65,7 @@ export class QuickOpen { } async waitForQuickOpenElements(accept: (names: string[]) => boolean): Promise { - await this.api.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_LABEL_SELECTOR, els => accept(els.map(e => e.textContent))); + await this.api.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_LABEL_SELECTOR, false, els => accept(els.map(e => e.textContent))); } async runCommand(command: string): Promise { diff --git a/test/smoke/src/driver.ts b/test/smoke/src/driver.ts index e3163c6cfe1..bc7d4edb503 100644 --- a/test/smoke/src/driver.ts +++ b/test/smoke/src/driver.ts @@ -10,6 +10,7 @@ export interface Element { tagName: string; className: string; textContent: string; + attributes: { [name: string]: string }; } export interface Driver { @@ -21,7 +22,7 @@ export interface Driver { getTitle(): Promise; isActiveElement(selector: string): Promise; - getElements(selector: string): Promise; + getElements(selector: string, recursive?: boolean): Promise; selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

; } @@ -104,7 +105,8 @@ export class SpectronDriver implements Driver { result.push({ tagName: element.tagName, className: element.className, - textContent: element.textContent || '' + textContent: element.textContent || '', + attributes: {} }); } @@ -196,13 +198,13 @@ export class CodeDriver implements Driver { return await this.driver.isActiveElement(windowId, selector); } - async getElements(selector: string): Promise { + async getElements(selector: string, recursive = false): Promise { if (this.verbose) { console.log('- getElements:', selector); } const windowId = await this.getWindowId(); - const result = await this.driver.getElements(windowId, selector); + const result = await this.driver.getElements(windowId, selector, recursive); return result; } From 825d5f3f66d1dda8851ffa36c036db28d61c97ba Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Tue, 10 Apr 2018 12:57:39 +0200 Subject: [PATCH 0556/1070] Fixes #47465: Provide a method of matching TaskExecution objects --- src/vs/workbench/api/node/extHostTask.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index 03e3ae433e0..7128c03fb41 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -711,6 +711,7 @@ export class ExtHostTask implements ExtHostTaskShape { private _extHostWorkspace: ExtHostWorkspace; private _handleCounter: number; private _handlers: Map; + private _taskExecutions: Map; private readonly _onDidExecuteTask: Emitter = new Emitter(); private readonly _onDidTerminateTask: Emitter = new Emitter(); @@ -720,6 +721,7 @@ export class ExtHostTask implements ExtHostTaskShape { this._extHostWorkspace = extHostWorkspace; this._handleCounter = 0; this._handlers = new Map(); + this._taskExecutions = new Map(); } public get extHostWorkspace(): ExtHostWorkspace { @@ -756,19 +758,19 @@ export class ExtHostTask implements ExtHostTaskShape { let tTask = (task as types.Task); // We have a preserved ID. So the task didn't change. if (tTask._id !== void 0) { - return this._proxy.$executeTask(TaskHandleDTO.from(tTask)).then(value => new TaskExecutionImpl(value.id, task, this)); + return this._proxy.$executeTask(TaskHandleDTO.from(tTask)).then(value => this.getTaskExecution(value, task)); } else { let dto = TaskDTO.from(task, extension); if (dto === void 0) { return Promise.reject(new Error('Task is not valid')); } - return this._proxy.$executeTask(dto).then(value => new TaskExecutionImpl(value.id, task, this)); + return this._proxy.$executeTask(dto).then(value => this.getTaskExecution(value, task)); } } public $taskStarted(execution: TaskExecutionDTO): void { this._onDidExecuteTask.fire({ - execution: TaskExecutionDTO.to(execution, this) + execution: this.getTaskExecution(execution) }); } @@ -784,8 +786,10 @@ export class ExtHostTask implements ExtHostTaskShape { } public $taskEnded(execution: TaskExecutionDTO): void { + const _execution = this.getTaskExecution(execution); + this._taskExecutions.delete(execution.id); this._onDidTerminateTask.fire({ - execution: TaskExecutionDTO.to(execution, this) + execution: _execution }); } @@ -810,4 +814,14 @@ export class ExtHostTask implements ExtHostTaskShape { private nextHandle(): number { return this._handleCounter++; } + + private getTaskExecution(execution: TaskExecutionDTO, task?: vscode.Task): TaskExecutionImpl { + let result: TaskExecutionImpl = this._taskExecutions.get(execution.id); + if (result) { + return result; + } + result = new TaskExecutionImpl(execution.id, task ? task : TaskDTO.to(execution.task, this._extHostWorkspace), this); + this._taskExecutions.set(execution.id, result); + return result; + } } From 49f03902b661c5b2aa5be5ef9a98600652e9574d Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 10 Apr 2018 15:09:29 +0200 Subject: [PATCH 0557/1070] Late update for 1.22.1 --- .github/calendar.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/calendar.yml b/.github/calendar.yml index 06ea947f56d..276adfcda36 100644 --- a/.github/calendar.yml +++ b/.github/calendar.yml @@ -10,4 +10,6 @@ '2018-03-15 12:00, US/Pacific': 'release', # 1.21.1 '2018-03-20 12:00, US/Pacific': 'development', '2018-03-26 18:00, US/Pacific': 'endgame', -} \ No newline at end of file + '2018-04-06 18:00, US/Pacific': 'release', # 1.22.1 + '2018-04-11 18:00, US/Pacific': 'development', +} From 8213728043b96cc6ab3157650b95a1e6f8e4f7f1 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 10 Apr 2018 15:59:54 +0200 Subject: [PATCH 0558/1070] Fixes #47382: Don't move markers when formatting with a full model replace edit --- src/vs/editor/contrib/format/formatCommand.ts | 14 ++++++++++- .../contrib/format/test/formatCommand.test.ts | 25 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/format/formatCommand.ts b/src/vs/editor/contrib/format/formatCommand.ts index 52f8d0c428a..5b38129e3ae 100644 --- a/src/vs/editor/contrib/format/formatCommand.ts +++ b/src/vs/editor/contrib/format/formatCommand.ts @@ -43,10 +43,22 @@ export class EditOperationsCommand implements editorCommon.ICommand { editor.pushUndoStop(); } + static isFullModelReplaceEdit(editor: ICodeEditor, edit: ISingleEditOperation): boolean { + const model = editor.getModel(); + const editRange = model.validateRange(edit.range); + const fullModelRange = model.getFullModelRange(); + return fullModelRange.equalsRange(editRange); + } + static execute(editor: ICodeEditor, _edits: TextEdit[]) { let edits = this._handleEolEdits(editor, _edits); editor.pushUndoStop(); - editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text))); + if (edits.length === 1 && EditOperationsCommand.isFullModelReplaceEdit(editor, edits[0])) { + // We use replace semantics and hope that markers stay put... + editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text))); + } else { + editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text))); + } editor.pushUndoStop(); } diff --git a/src/vs/editor/contrib/format/test/formatCommand.test.ts b/src/vs/editor/contrib/format/test/formatCommand.test.ts index 048b9c35b69..0a9bbde4593 100644 --- a/src/vs/editor/contrib/format/test/formatCommand.test.ts +++ b/src/vs/editor/contrib/format/test/formatCommand.test.ts @@ -334,4 +334,29 @@ suite('FormatCommand', () => { }); }); + test('issue #47382: full model replace moves cursor to end of file', () => { + const initialText = [ + 'just some', + 'Text', + '...more text' + ]; + withTestCodeEditor(initialText, {}, (editor) => { + editor.setSelection(new Selection(2, 1, 2, 1)); + EditOperationsCommand.execute(editor, [{ + range: new Range(1, 1, 3, 13), + text: [ + 'just some', + '\tText', + '...more text' + ].join('\n') + }]); + assert.equal(editor.getValue(), [ + 'just some', + '\tText', + '...more text' + ].join('\n')); + assert.deepEqual(editor.getSelection(), new Selection(2, 1, 2, 1)); + }); + }); + }); From fc0774e44ff7cd9a7568bcd2d7e3124c227483ba Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 16:26:45 +0200 Subject: [PATCH 0559/1070] typeInEditor API --- src/vs/platform/driver/common/driver.ts | 14 ++++++++++ .../driver/electron-browser/driver.ts | 23 ++++++++++++++++ .../platform/driver/electron-main/driver.ts | 5 ++++ test/smoke/src/api.ts | 4 +++ test/smoke/src/areas/editor/editor.ts | 26 +++---------------- test/smoke/src/driver.ts | 14 ++++++++++ test/smoke/test/mocha.opts | 2 +- 7 files changed, 65 insertions(+), 23 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 0fdcc5d46c5..8a64621227b 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -33,6 +33,7 @@ export interface IDriver { getTitle(windowId: number): TPromise; isActiveElement(windowId: number, selector: string): TPromise; getElements(windowId: number, selector: string, recursive: boolean): TPromise; + typeInEditor(windowId: number, selector: string, text: string): TPromise; selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } //*END @@ -47,6 +48,7 @@ export interface IDriverChannel extends IChannel { call(command: 'getTitle', arg: [number]): TPromise; call(command: 'isActiveElement', arg: [number, string]): TPromise; call(command: 'getElements', arg: [number, string, boolean]): TPromise; + call(command: 'typeInEditor', arg: [number, string, string]): TPromise; call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; } @@ -66,6 +68,7 @@ export class DriverChannel implements IDriverChannel { case 'getTitle': return this.driver.getTitle(arg[0]); case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]); case 'getElements': return this.driver.getElements(arg[0], arg[1], arg[2]); + case 'typeInEditor': return this.driver.typeInEditor(arg[0], arg[1], arg[2]); // TODO@joao case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[1], ...arg[2]); @@ -117,6 +120,10 @@ export class DriverChannelClient implements IDriver { return this.channel.call('getElements', [windowId, selector, recursive]); } + typeInEditor(windowId: number, selector: string, text: string): TPromise { + return this.channel.call('typeInEditor', [windowId, selector, text]); + } + selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ // TODO@joao return this.channel.call('selectorExecute', [windowId, selector, script.toString(), args]); @@ -164,6 +171,7 @@ export interface IWindowDriver { getTitle(): TPromise; isActiveElement(selector: string): TPromise; getElements(selector: string, recursive: boolean): TPromise; + typeInEditor(selector: string, text: string): TPromise; selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; } @@ -175,6 +183,7 @@ export interface IWindowDriverChannel extends IChannel { call(command: 'getTitle'): TPromise; call(command: 'isActiveElement', arg: string): TPromise; call(command: 'getElements', arg: [string, boolean]): TPromise; + call(command: 'typeInEditor', arg: [string, string]): TPromise; call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise; call(command: string, arg: any): TPromise; } @@ -192,6 +201,7 @@ export class WindowDriverChannel implements IWindowDriverChannel { case 'getTitle': return this.driver.getTitle(); case 'isActiveElement': return this.driver.isActiveElement(arg); case 'getElements': return this.driver.getElements(arg[0], arg[1]); + case 'typeInEditor': return this.driver.typeInEditor(arg[0], arg[1]); // TODO@joao case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], ...arg[2]); } @@ -234,6 +244,10 @@ export class WindowDriverChannelClient implements IWindowDriver { return this.channel.call('getElements', [selector, recursive]); } + typeInEditor(selector: string, text: string): TPromise { + return this.channel.call('typeInEditor', [selector, text]); + } + selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ // TODO@joao return this.channel.call('selectorExecute', [selector, script.toString(), args]); diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 44100426f4f..7fb3fb6133b 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -87,6 +87,29 @@ class WindowDriver implements IWindowDriver { return result; } + async typeInEditor(selector: string, text: string): TPromise { + const element = document.querySelector(selector); + + if (!element) { + throw new Error('Editor not found: ' + selector); + } + + const textarea = element as HTMLTextAreaElement; + + console.log(textarea); + + const start = textarea.selectionStart; + const newStart = start + text.length; + const value = textarea.value; + const newValue = value.substr(0, start) + text + value.substr(start); + + textarea.value = newValue; + textarea.setSelectionRange(newStart, newStart); + + const event = new Event('input', { 'bubbles': true, 'cancelable': true }); + textarea.dispatchEvent(event); + } + selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ return TPromise.wrapError(new Error('not implemented')); } diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 1676316a3a5..ad32690ab27 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -137,6 +137,11 @@ export class Driver implements IDriver, IWindowDriverRegistry { return windowDriver.selectorExecute(selector, script, ...args); } + typeInEditor(windowId: number, selector: string, text: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.typeInEditor(selector, text); + } + private getWindowDriver(windowId: number): IWindowDriver { const router = new WindowRouter(windowId); const windowDriverChannel = this.windowServer.getChannel('windowDriver', router); diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index d93d19ff05f..356583997fb 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -80,6 +80,10 @@ export class API { return this.driver.selectorExecute(selector, script, ...args); } + typeInEditor(selector: string, text: string): Promise { + return this.driver.typeInEditor(selector, text); + } + private running = false; async waitFor(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; async waitFor(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index 552a4fc743b..fdb5f4ca9c2 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -9,6 +9,7 @@ import { API } from '../../api'; const RENAME_BOX = '.monaco-editor .monaco-editor.rename-box'; const RENAME_INPUT = `${RENAME_BOX} .rename-input`; +const EDITOR = filename => `.monaco-editor[data-uri$="${filename}"]`; export class Editor { @@ -87,39 +88,20 @@ export class Editor { } async waitForTypeInEditor(filename: string, text: string, selectorPrefix = ''): Promise { - const editor = [ - selectorPrefix || '', - `.monaco-editor[data-uri$="${filename}"]` - ].join(' '); + const editor = [selectorPrefix || '', EDITOR(filename)].join(' '); await this.api.waitForElement(editor); const textarea = `${editor} textarea`; await this.api.waitForActiveElement(textarea); - // https://github.com/Microsoft/vscode/issues/34203#issuecomment-334441786 - await this.api.selectorExecute(textarea, (elements, text) => { - const textarea = (Array.isArray(elements) ? elements : [elements])[0] as HTMLTextAreaElement; - const start = textarea.selectionStart; - const newStart = start + text.length; - const value = textarea.value; - const newValue = value.substr(0, start) + text + value.substr(start); - - textarea.value = newValue; - textarea.setSelectionRange(newStart, newStart); - - const event = new Event('input', { 'bubbles': true, 'cancelable': true }); - textarea.dispatchEvent(event); - }, text); + await this.api.typeInEditor(textarea, text); await this.waitForEditorContents(filename, c => c.indexOf(text) > -1, selectorPrefix); } async waitForEditorContents(filename: string, accept: (contents: string) => boolean, selectorPrefix = ''): Promise { - const selector = [ - selectorPrefix || '', - `.monaco-editor[data-uri$="${filename}"] .view-lines` - ].join(' '); + const selector = [selectorPrefix || '', `${EDITOR(filename)} .view-lines`].join(' '); return this.api.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' '))); } diff --git a/test/smoke/src/driver.ts b/test/smoke/src/driver.ts index bc7d4edb503..fa661be932e 100644 --- a/test/smoke/src/driver.ts +++ b/test/smoke/src/driver.ts @@ -23,6 +23,7 @@ export interface Driver { isActiveElement(selector: string): Promise; getElements(selector: string, recursive?: boolean): Promise; + typeInEditor(selector: string, text: string): Promise; selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

; } @@ -116,6 +117,10 @@ export class SpectronDriver implements Driver { return result.value; } + typeInEditor(selector: string, text: string): Promise { + throw new Error('Method not implemented.'); + } + async selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ if (this.verbose) { console.log('- selectorExecute:', selector); @@ -217,6 +222,15 @@ export class CodeDriver implements Driver { return await this.driver.selectorExecute(windowId, selector, script, ...args); } + async typeInEditor(selector: string, text: string): Promise { + if (this.verbose) { + console.log('- typeInEditor:', selector, text); + } + + const windowId = await this.getWindowId(); + return await this.driver.typeInEditor(windowId, selector, text); + } + private async getWindowId(): Promise { if (typeof this._activeWindowId !== 'number') { const windows = await this.driver.getWindowIds(); diff --git a/test/smoke/test/mocha.opts b/test/smoke/test/mocha.opts index a4520575eb6..ce88473e86b 100644 --- a/test/smoke/test/mocha.opts +++ b/test/smoke/test/mocha.opts @@ -1,3 +1,3 @@ ---timeout 10000 +--timeout 20000 --slow 2000 out/main.js \ No newline at end of file From 36708c0f5dabfe8a7f3724833d52b466b11cea8d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 10 Apr 2018 16:13:44 +0200 Subject: [PATCH 0560/1070] add `toDecodeStream` to enable seamless encoding handling, #41985 --- src/vs/base/node/encoding.ts | 82 ++++++++++++- .../base/test/node/encoding/encoding.test.ts | 114 +++++++++++++++++- 2 files changed, 194 insertions(+), 2 deletions(-) diff --git a/src/vs/base/node/encoding.ts b/src/vs/base/node/encoding.ts index e861c4048cb..6318f2cbc5f 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/base/node/encoding.ts @@ -10,12 +10,92 @@ import * as iconv from 'iconv-lite'; import { TPromise } from 'vs/base/common/winjs.base'; import { isLinux, isMacintosh } from 'vs/base/common/platform'; import { exec } from 'child_process'; +import { Readable, Writable, WritableOptions } from 'stream'; export const UTF8 = 'utf8'; export const UTF8_with_bom = 'utf8bom'; export const UTF16be = 'utf16be'; export const UTF16le = 'utf16le'; +export interface IDecodeStreamOptions { + minBytesRequiredForDetection: number; + guessEncoding: boolean; + overwriteEncoding(detected: string): string; +} + +export function toDecodeStream(readable: Readable, opts: IDecodeStreamOptions): TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }> { + return new TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }>((resolve, reject) => { + readable.pipe(new class extends Writable { + + private _decodeStream: NodeJS.ReadWriteStream; + private _decodeStreamConstruction: Thenable; + private _buffer: Buffer[] = []; + private _bytesBuffered = 0; + + constructor(opts?: WritableOptions) { + super(opts); + this.once('finish', () => this._finish()); + } + + _write(chunk: any, encoding: string, callback: Function): void { + if (!Buffer.isBuffer(chunk)) { + callback(new Error('data must be a buffer')); + } + + if (this._decodeStream) { + // just a forwarder now + this._decodeStream.write(chunk, callback); + return; + } + + this._buffer.push(chunk); + this._bytesBuffered += chunk.length; + + if (this._decodeStreamConstruction) { + // waiting for the decoder to be ready + this._decodeStreamConstruction.then(_ => callback(), err => callback(err)); + + } else if (this._bytesBuffered >= opts.minBytesRequiredForDetection) { + // buffered enough data, create stream and forward data + this._startDecodeStream(callback); + + } else { + // only buffering + callback(); + } + } + + _startDecodeStream(callback: Function): void { + + this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({ + buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered + }, opts.guessEncoding)).then(detected => { + detected.encoding = opts.overwriteEncoding(detected.encoding); // default encoding + this._decodeStream = decodeStream(detected.encoding); + for (const buffer of this._buffer) { + this._decodeStream.write(buffer); + } + callback(); + resolve({ detected, stream: this._decodeStream }); + + }, err => { + callback(err); + }); + } + + _finish(): void { + if (this._decodeStream) { + // normal finish + this._decodeStream.end(); + } else { + // we were still waiting for data... + this._startDecodeStream(() => this._decodeStream.end()); + } + } + }); + }); +} + export function bomLength(encoding: string): number { switch (encoding) { case UTF8: @@ -350,4 +430,4 @@ export function resolveTerminalEncoding(verbose?: boolean): TPromise { return UTF8; }); -} \ No newline at end of file +} diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/base/test/node/encoding/encoding.test.ts index 7ade8bf5873..063912953f0 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/base/test/node/encoding/encoding.test.ts @@ -6,9 +6,10 @@ 'use strict'; import * as assert from 'assert'; - +import * as fs from 'fs'; import * as encoding from 'vs/base/node/encoding'; import { readExactlyByFile } from 'vs/base/node/stream'; +import { Readable } from 'stream'; suite('Encoding', () => { test('detectBOM UTF-8', () => { @@ -150,4 +151,115 @@ suite('Encoding', () => { }); }); }); + + async function readAndDecodeFromDisk(path, _encoding) { + return new Promise((resolve, reject) => { + fs.readFile(path, (err, data) => { + if (err) { + reject(err); + } else { + resolve(encoding.decode(data, _encoding)); + } + }); + }); + } + + async function readAllAsString(stream: NodeJS.ReadableStream) { + return new Promise((resolve, reject) => { + let all = ''; + stream.on('data', chunk => { + all += chunk; + assert.equal(typeof chunk, 'string'); + }); + stream.on('end', () => { + resolve(all); + }); + stream.on('error', reject); + }); + } + + test('toDecodeStream - some stream', async function () { + + let source = new Readable({ + read(size) { + this.push(Buffer.from([65, 66, 67])); + this.push(Buffer.from([65, 66, 67])); + this.push(Buffer.from([65, 66, 67])); + this.push(null); + } + }); + + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 4, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + + assert.ok(detected); + assert.ok(stream); + + const content = await readAllAsString(stream); + assert.equal(content, 'ABCABCABC'); + }); + + test('toDecodeStream - some stream, expect too much data', async function () { + + let source = new Readable({ + read(size) { + this.push(Buffer.from([65, 66, 67])); + this.push(Buffer.from([65, 66, 67])); + this.push(Buffer.from([65, 66, 67])); + this.push(null); + } + }); + + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + + assert.ok(detected); + assert.ok(stream); + + const content = await readAllAsString(stream); + assert.equal(content, 'ABCABCABC'); + }); + + test('toDecodeStream - some stream, no data', async function () { + + let source = new Readable({ + read(size) { + this.push(null); // empty + } + }); + + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 512, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + + assert.ok(detected); + assert.ok(stream); + + const content = await readAllAsString(stream); + assert.equal(content, ''); + }); + + + test('toDecodeStream - encoding, utf16be', async function () { + + let path = require.toUrl('./fixtures/some_utf16be.css'); + let source = fs.createReadStream(path); + + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding(detected) { return detected; } }); + + assert.equal(detected.encoding, 'utf16be'); + assert.equal(detected.seemsBinary, false); + + let expected = await readAndDecodeFromDisk(path, detected.encoding); + let actual = await readAllAsString(stream); + assert.equal(actual, expected); + }); + + + test('toDecodeStream - empty file', async function () { + + let path = require.toUrl('./fixtures/empty.txt'); + let source = fs.createReadStream(path); + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + + let expected = await readAndDecodeFromDisk(path, detected.encoding); + let actual = await readAllAsString(stream); + assert.equal(actual, expected); + }); }); From f686a20863de110239dcdc47a164fa576b2938ea Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 10 Apr 2018 16:58:53 +0200 Subject: [PATCH 0561/1070] add provider to readable-stream logic, #41985 --- src/vs/base/node/encoding.ts | 34 ++++---- .../base/test/node/encoding/encoding.test.ts | 10 +-- .../electron-browser/remoteFileService.ts | 87 +++++++++++-------- 3 files changed, 72 insertions(+), 59 deletions(-) diff --git a/src/vs/base/node/encoding.ts b/src/vs/base/node/encoding.ts index 6318f2cbc5f..7a35237f3e9 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/base/node/encoding.ts @@ -18,12 +18,21 @@ export const UTF16be = 'utf16be'; export const UTF16le = 'utf16le'; export interface IDecodeStreamOptions { - minBytesRequiredForDetection: number; - guessEncoding: boolean; - overwriteEncoding(detected: string): string; + guessEncoding?: boolean; + minBytesRequiredForDetection?: number; + overwriteEncoding?(detected: string): string; } -export function toDecodeStream(readable: Readable, opts: IDecodeStreamOptions): TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }> { +export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions): TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }> { + + if (!options.minBytesRequiredForDetection) { + options.minBytesRequiredForDetection = options.guessEncoding ? AUTO_GUESS_BUFFER_MAX_LEN : NO_GUESS_BUFFER_MAX_LEN; + } + + if (!options.overwriteEncoding) { + options.overwriteEncoding = detected => detected || UTF8; + } + return new TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }>((resolve, reject) => { readable.pipe(new class extends Writable { @@ -55,7 +64,7 @@ export function toDecodeStream(readable: Readable, opts: IDecodeStreamOptions): // waiting for the decoder to be ready this._decodeStreamConstruction.then(_ => callback(), err => callback(err)); - } else if (this._bytesBuffered >= opts.minBytesRequiredForDetection) { + } else if (this._bytesBuffered >= options.minBytesRequiredForDetection) { // buffered enough data, create stream and forward data this._startDecodeStream(callback); @@ -69,8 +78,8 @@ export function toDecodeStream(readable: Readable, opts: IDecodeStreamOptions): this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({ buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered - }, opts.guessEncoding)).then(detected => { - detected.encoding = opts.overwriteEncoding(detected.encoding); // default encoding + }, options.guessEncoding)).then(detected => { + detected.encoding = options.overwriteEncoding(detected.encoding); // default encoding this._decodeStream = decodeStream(detected.encoding); for (const buffer of this._buffer) { this._decodeStream.write(buffer); @@ -256,17 +265,6 @@ const ZERO_BYTE_DETECTION_BUFFER_MAX_LEN = 512; // number of bytes to look at to const NO_GUESS_BUFFER_MAX_LEN = 512; // when not auto guessing the encoding, small number of bytes are enough const AUTO_GUESS_BUFFER_MAX_LEN = 512 * 8; // with auto guessing we want a lot more content to be read for guessing -export function maxEncodingDetectionBufferLen(arg1?: DetectEncodingOption | boolean): number { - let autoGuessEncoding: boolean; - if (typeof arg1 === 'boolean') { - autoGuessEncoding = arg1; - } else { - autoGuessEncoding = arg1 && arg1.autoGuessEncoding; - } - - return autoGuessEncoding ? AUTO_GUESS_BUFFER_MAX_LEN : NO_GUESS_BUFFER_MAX_LEN; -} - export interface IDetectedEncodingResult { encoding: string; seemsBinary: boolean; diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/base/test/node/encoding/encoding.test.ts index 063912953f0..252ee281e37 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/base/test/node/encoding/encoding.test.ts @@ -189,7 +189,7 @@ suite('Encoding', () => { } }); - let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 4, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 4 }); assert.ok(detected); assert.ok(stream); @@ -209,7 +209,7 @@ suite('Encoding', () => { } }); - let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64 }); assert.ok(detected); assert.ok(stream); @@ -226,7 +226,7 @@ suite('Encoding', () => { } }); - let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 512, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 512 }); assert.ok(detected); assert.ok(stream); @@ -241,7 +241,7 @@ suite('Encoding', () => { let path = require.toUrl('./fixtures/some_utf16be.css'); let source = fs.createReadStream(path); - let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding(detected) { return detected; } }); + let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64 }); assert.equal(detected.encoding, 'utf16be'); assert.equal(detected.seemsBinary, false); @@ -256,7 +256,7 @@ suite('Encoding', () => { let path = require.toUrl('./fixtures/empty.txt'); let source = fs.createReadStream(path); - let { detected, stream } = await encoding.toDecodeStream(source, { minBytesRequiredForDetection: 64, guessEncoding: true, overwriteEncoding() { return encoding.UTF8; } }); + let { detected, stream } = await encoding.toDecodeStream(source, {}); let expected = await readAndDecodeFromDisk(path, detected.encoding); let actual = await readAllAsString(stream); diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 84097d96331..8a4a0c41cc7 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -12,7 +12,7 @@ import { posix } from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { isFalsyOrEmpty, distinct } from 'vs/base/common/arrays'; import { Schemas } from 'vs/base/common/network'; -import { decodeStream, encode, UTF8, UTF8_with_bom, detectEncodingFromBuffer, maxEncodingDetectionBufferLen } from 'vs/base/node/encoding'; +import { encode, UTF8, UTF8_with_bom, toDecodeStream } from 'vs/base/node/encoding'; import { TernarySearchTree } from 'vs/base/common/map'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -23,6 +23,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { localize } from 'vs/nls'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { Readable } from 'stream'; function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise { const [resource, stat] = tuple; @@ -220,6 +221,25 @@ export class RemoteFileService extends FileService { } } + private _createReadStream(provider: IFileSystemProvider, resource: URI): Readable { + return new class extends Readable { + _done: boolean = false; + _read(size?: number): void { + if (this._done) { + this.push(null); + return; + } + provider.readFile(resource).then(data => { + this._done = true; + this.push(data); + }, err => { + this._done = true; + this.emit('error', err); + }); + } + }; + } + private _readFile(resource: URI, options: IResolveContentOptions = Object.create(null)): TPromise { return this._withProvider(resource).then(provider => { @@ -242,15 +262,34 @@ export class RemoteFileService extends FileService { ); } - const guessEncoding = options.autoGuessEncoding; - const count = maxEncodingDetectionBufferLen(options); - let buffer: Buffer; + return toDecodeStream(this._createReadStream(provider, resource), { + guessEncoding: options.autoGuessEncoding, + overwriteEncoding: detected => { + let preferredEncoding: string; + if (options && options.encoding) { + if (detected === UTF8 && options.encoding === UTF8) { + preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 + } else { + preferredEncoding = options.encoding; // give passed in encoding highest priority + } + } else if (detected) { + if (detected === UTF8) { + preferredEncoding = UTF8_with_bom; // if we detected UTF-8, it can only be because of a BOM + } else { + preferredEncoding = detected; + } + // todo@remote - encoding logic should not be kept + // hostage inside the node file service + // } else if (super.configuredEncoding(resource) === UTF8_with_bom) { + } else { + preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then + } + return preferredEncoding; + } - return provider.readFile(resource).then(data => { - buffer = Buffer.from(data); - return detectEncodingFromBuffer({ bytesRead: Math.min(count, buffer.length), buffer }, guessEncoding); - }).then(detected => { - if (options.acceptTextOnly && detected.seemsBinary) { + }).then(data => { + + if (options.acceptTextOnly && data.detected.seemsBinary) { return TPromise.wrapError(new FileOperationError( localize('fileBinaryError', "File seems to be binary and cannot be opened as text"), FileOperationResult.FILE_IS_BINARY, @@ -258,33 +297,9 @@ export class RemoteFileService extends FileService { )); } - let preferredEncoding: string; - if (options && options.encoding) { - if (detected.encoding === UTF8 && options.encoding === UTF8) { - preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 - } else { - preferredEncoding = options.encoding; // give passed in encoding highest priority - } - } else if (detected.encoding) { - if (detected.encoding === UTF8) { - preferredEncoding = UTF8_with_bom; // if we detected UTF-8, it can only be because of a BOM - } else { - preferredEncoding = detected.encoding; - } - // todo@remote - encoding logic should not be kept - // hostage inside the node file service - // } else if (super.configuredEncoding(resource) === UTF8_with_bom) { - } else { - preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then - } - - // const encoding = this.getEncoding(resource); - const stream = decodeStream(preferredEncoding); - stream.end(buffer); - - return { - encoding: preferredEncoding, - value: stream, + return { + encoding: data.detected.encoding, + value: data.stream, resource: fileStat.resource, name: fileStat.name, etag: fileStat.etag, From 8eae25a2bad03423fd1f5ed36e0651cb3506edcc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 17:05:14 +0200 Subject: [PATCH 0562/1070] remove selectorExecute --- src/vs/platform/driver/common/driver.ts | 25 +++---- .../driver/electron-browser/driver.ts | 21 ++++-- .../platform/driver/electron-main/driver.ts | 10 +-- test/smoke/src/api.ts | 8 +-- test/smoke/src/areas/debug/debug.ts | 67 ++++++------------ test/smoke/src/areas/git/scm.ts | 60 +++++----------- test/smoke/src/areas/terminal/terminal.ts | 30 ++------ test/smoke/src/driver.ts | 69 +++++++++++++------ 8 files changed, 132 insertions(+), 158 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 8a64621227b..61b98ed7714 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -34,7 +34,7 @@ export interface IDriver { isActiveElement(windowId: number, selector: string): TPromise; getElements(windowId: number, selector: string, recursive: boolean): TPromise; typeInEditor(windowId: number, selector: string, text: string): TPromise; - selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; + getTerminalBuffer(windowId: number, selector: string): TPromise; } //*END @@ -49,7 +49,7 @@ export interface IDriverChannel extends IChannel { call(command: 'isActiveElement', arg: [number, string]): TPromise; call(command: 'getElements', arg: [number, string, boolean]): TPromise; call(command: 'typeInEditor', arg: [number, string, string]): TPromise; - call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise; + call(command: 'getTerminalBuffer', arg: [number, string]): TPromise; call(command: string, arg: any): TPromise; } @@ -69,9 +69,7 @@ export class DriverChannel implements IDriverChannel { case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]); case 'getElements': return this.driver.getElements(arg[0], arg[1], arg[2]); case 'typeInEditor': return this.driver.typeInEditor(arg[0], arg[1], arg[2]); - - // TODO@joao - case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[1], ...arg[2]); + case 'getTerminalBuffer': return this.driver.getTerminalBuffer(arg[0], arg[1]); } return undefined; @@ -124,9 +122,8 @@ export class DriverChannelClient implements IDriver { return this.channel.call('typeInEditor', [windowId, selector, text]); } - selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ - // TODO@joao - return this.channel.call('selectorExecute', [windowId, selector, script.toString(), args]); + getTerminalBuffer(windowId: number, selector: string): TPromise { + return this.channel.call('getTerminalBuffer', [windowId, selector]); } } @@ -172,7 +169,7 @@ export interface IWindowDriver { isActiveElement(selector: string): TPromise; getElements(selector: string, recursive: boolean): TPromise; typeInEditor(selector: string, text: string): TPromise; - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

; + getTerminalBuffer(selector: string): TPromise; } export interface IWindowDriverChannel extends IChannel { @@ -184,7 +181,7 @@ export interface IWindowDriverChannel extends IChannel { call(command: 'isActiveElement', arg: string): TPromise; call(command: 'getElements', arg: [string, boolean]): TPromise; call(command: 'typeInEditor', arg: [string, string]): TPromise; - call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise; + call(command: 'getTerminalBuffer', arg: string): TPromise; call(command: string, arg: any): TPromise; } @@ -202,8 +199,7 @@ export class WindowDriverChannel implements IWindowDriverChannel { case 'isActiveElement': return this.driver.isActiveElement(arg); case 'getElements': return this.driver.getElements(arg[0], arg[1]); case 'typeInEditor': return this.driver.typeInEditor(arg[0], arg[1]); - // TODO@joao - case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], ...arg[2]); + case 'getTerminalBuffer': return this.driver.getTerminalBuffer(arg); } return undefined; @@ -248,8 +244,7 @@ export class WindowDriverChannelClient implements IWindowDriver { return this.channel.call('typeInEditor', [selector, text]); } - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ - // TODO@joao - return this.channel.call('selectorExecute', [selector, script.toString(), args]); + getTerminalBuffer(selector: string): TPromise { + return this.channel.call('getTerminalBuffer', selector); } } \ No newline at end of file diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 7fb3fb6133b..8075f851c6b 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -95,9 +95,6 @@ class WindowDriver implements IWindowDriver { } const textarea = element as HTMLTextAreaElement; - - console.log(textarea); - const start = textarea.selectionStart; const newStart = start + text.length; const value = textarea.value; @@ -110,8 +107,22 @@ class WindowDriver implements IWindowDriver { textarea.dispatchEvent(event); } - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ - return TPromise.wrapError(new Error('not implemented')); + async getTerminalBuffer(selector: string): TPromise { + const element = document.querySelector(selector); + + if (!element) { + throw new Error('Terminal not found: ' + selector); + } + + const buffer = (element as any).xterm.buffer; + + const lines: string[] = []; + + for (let i = 0; i < buffer.lines.length; i++) { + lines.push(buffer.translateBufferLineToString(i, true)); + } + + return lines; } } diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index ad32690ab27..9aa152f8437 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -132,16 +132,16 @@ export class Driver implements IDriver, IWindowDriverRegistry { return windowDriver.getElements(selector, recursive); } - selectorExecute

(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise

{ - const windowDriver = this.getWindowDriver(windowId); - return windowDriver.selectorExecute(selector, script, ...args); - } - typeInEditor(windowId: number, selector: string, text: string): TPromise { const windowDriver = this.getWindowDriver(windowId); return windowDriver.typeInEditor(selector, text); } + getTerminalBuffer(windowId: number, selector: string): TPromise { + const windowDriver = this.getWindowDriver(windowId); + return windowDriver.getTerminalBuffer(selector); + } + private getWindowDriver(windowId: number): IWindowDriver { const router = new WindowRouter(windowId); const windowDriverChannel = this.windowServer.getChannel('windowDriver', router); diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index 356583997fb..6fa23dc7862 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -76,14 +76,14 @@ export class API { return this.driver.getTitle(); } - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ - return this.driver.selectorExecute(selector, script, ...args); - } - typeInEditor(selector: string, text: string): Promise { return this.driver.typeInEditor(selector, text); } + getTerminalBuffer(selector: string): Promise { + return this.driver.getTerminalBuffer(selector); + } + private running = false; async waitFor(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; async waitFor(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index 630c5c95340..013892ed931 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -8,6 +8,7 @@ import { Commands } from '../workbench/workbench'; import { API } from '../../api'; import { Editors } from '../editor/editors'; import { Editor } from '../editor/editor'; +import { findElement, Element } from '../../driver'; const VIEWLET = 'div[id="workbench.view.debug"]'; const DEBUG_VIEW = `${VIEWLET} .debug-view-content`; @@ -27,7 +28,7 @@ const TOOLBAR_HIDDEN = `.debug-actions-widget.monaco-builder-hidden`; const STACK_FRAME = `${VIEWLET} .monaco-tree-row .stack-frame`; const SPECIFIC_STACK_FRAME = filename => `${STACK_FRAME} .file[title$="${filename}"]`; const VARIABLE = `${VIEWLET} .debug-variables .monaco-tree-row .expression`; -const CONSOLE_OUTPUT = `.repl .output.expression`; +const CONSOLE_OUTPUT = `.repl .output.expression .value`; const CONSOLE_INPUT_OUTPUT = `.repl .input-output-pair .output.expression .value`; const REPL_FOCUSED = '.repl-input-wrapper .monaco-editor textarea'; @@ -37,6 +38,17 @@ export interface IStackFrame { lineNumber: number; } +function toStackFrame(element: Element): IStackFrame { + const name = findElement(element, e => /\bfile-name\b/.test(e.className))!; + const line = findElement(element, e => /\bline-number\b/.test(e.className))!; + const lineNumber = line.textContent ? parseInt(line.textContent.split(':').shift() || '0') : 0; + + return { + name: name.textContent || '', + lineNumber + }; +} + export class Debug extends Viewlet { constructor(api: API, private commands: Commands, private editors: Editors, private editor: Editor) { @@ -64,12 +76,9 @@ export class Debug extends Viewlet { await this.api.waitForElement(PAUSE); await this.api.waitForElement(DEBUG_STATUS_BAR); const portPrefix = 'Port: '; - await this.api.waitFor(async () => { - const output = await this.getConsoleOutput(); - return output.join(''); - }, text => !!text && text.indexOf(portPrefix) >= 0); - const output = await this.getConsoleOutput(); - const lastOutput = output.pop(); + + const output = await this.waitForOutput(output => output.some(line => line.indexOf(portPrefix) >= 0)); + const lastOutput = output.filter(line => line.indexOf(portPrefix) >= 0)[0]; return lastOutput ? parseInt(lastOutput.substr(portPrefix.length)) : 3000; } @@ -98,10 +107,8 @@ export class Debug extends Viewlet { } async waitForStackFrame(func: (stackFrame: IStackFrame) => boolean, message: string): Promise { - return await this.api.waitFor(async () => { - const stackFrames = await this.getStackFrames(); - return stackFrames.filter(func)[0]; - }, void 0, `Waiting for Stack Frame: ${message}`); + const elements = await this.api.waitForElements(STACK_FRAME, true, elements => elements.some(e => func(toStackFrame(e)))); + return elements.map(toStackFrame).filter(s => func(s))[0]; } async waitForStackFrameLength(length: number): Promise { @@ -122,45 +129,15 @@ export class Debug extends Viewlet { await this.editor.waitForEditorContents('debug:input', s => s.indexOf(text) >= 0); await this.api.dispatchKeybinding('enter'); await this.api.waitForElement(CONSOLE_INPUT_OUTPUT); - await this.api.waitFor(async () => { - const result = await this.getConsoleOutput(); - return result[result.length - 1] || ''; - }, accept); + await this.waitForOutput(output => accept(output[output.length - 1] || '')); } async getLocalVariableCount(): Promise { return await this.api.getElementCount(VARIABLE); } - private async getStackFrames(): Promise { - const result = await this.api.selectorExecute(STACK_FRAME, - div => (Array.isArray(div) ? div : [div]).map(element => { - const name = element.querySelector('.file-name') as HTMLElement; - const line = element.querySelector('.line-number') as HTMLElement; - const lineNumber = line.textContent ? parseInt(line.textContent.split(':').shift() || '0') : 0; - - return { - name: name.textContent || '', - lineNumber - }; - }) - ); - - if (!Array.isArray(result)) { - return []; - } - - return result.map(({ name, lineNumber }) => ({ name, lineNumber })); - } - - private async getConsoleOutput(): Promise { - const result = await this.api.selectorExecute(CONSOLE_OUTPUT, - div => (Array.isArray(div) ? div : [div]).map(element => { - const value = element.querySelector('.value') as HTMLElement; - return value && value.textContent; - }).filter(line => !!line) as string[] - ); - - return result; + private async waitForOutput(fn: (output: string[]) => boolean): Promise { + const elements = await this.api.waitForElements(CONSOLE_OUTPUT, false, elements => fn(elements.map(e => e.textContent))); + return elements.map(e => e.textContent); } } diff --git a/test/smoke/src/areas/git/scm.ts b/test/smoke/src/areas/git/scm.ts index ce5e6a6bb4c..b2cc5fc8baf 100644 --- a/test/smoke/src/areas/git/scm.ts +++ b/test/smoke/src/areas/git/scm.ts @@ -6,6 +6,7 @@ import { Viewlet } from '../workbench/viewlet'; import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Element, findElement, findElements } from '../../driver'; const VIEWLET = 'div[id="workbench.view.scm"]'; const SCM_INPUT = `${VIEWLET} .scm-editor textarea`; @@ -23,6 +24,21 @@ interface Change { actions: string[]; } +function toChange(element: Element): Change { + const name = findElement(element, e => /\blabel-name\b/.test(e.className))!; + const type = element.attributes['data-tooltip'] || ''; + + const actionElementList = findElements(element, e => /\baction-label\b/.test(e.className)); + const actions = actionElementList.map(e => e.attributes['title']); + + return { + name: name.textContent || '', + type, + actions + }; +} + + export class SCM extends Viewlet { constructor(api: API, private commands: Commands) { @@ -34,53 +50,15 @@ export class SCM extends Viewlet { await this.api.waitForElement(SCM_INPUT); } - waitForChange(name: string, type?: string): Promise { - return this.api.waitFor(async () => { - const changes = await this.queryChanges(name, type); - return changes.length; - }, l => l > 0, 'Getting SCM changes') as Promise as Promise; + async waitForChange(name: string, type?: string): Promise { + const func = (change: Change) => change.name === name && (!type || change.type === type); + await this.api.waitForElements(SCM_RESOURCE, true, elements => elements.some(e => func(toChange(e)))); } async refreshSCMViewlet(): Promise { await this.api.waitAndClick(REFRESH_COMMAND); } - private async queryChanges(name: string, type?: string): Promise { - const result = await this.api.selectorExecute(SCM_RESOURCE, (div, name, type) => { - return (Array.isArray(div) ? div : [div]) - .map(element => { - const name = element.querySelector('.label-name') as HTMLElement; - const type = element.getAttribute('data-tooltip') || ''; - const actionElementList = element.querySelectorAll('.actions .action-label'); - const actions: string[] = []; - - for (let i = 0; i < actionElementList.length; i++) { - const element = actionElementList.item(i) as HTMLElement; - actions.push(element.title); - } - - return { - name: name.textContent || '', - type, - actions - }; - }) - .filter(change => { - if (change.name !== name) { - return false; - } - - if (type && (change.type !== type)) { - return false; - } - - return true; - }); - }, name, type); - - return result; - } - async openChange(name: string): Promise { await this.api.waitAndClick(SCM_RESOURCE_CLICK(name)); } diff --git a/test/smoke/src/areas/terminal/terminal.ts b/test/smoke/src/areas/terminal/terminal.ts index 231a90b5bfa..e69916b475f 100644 --- a/test/smoke/src/areas/terminal/terminal.ts +++ b/test/smoke/src/areas/terminal/terminal.ts @@ -31,31 +31,15 @@ export class Terminal { await this.api.dispatchKeybinding('enter'); } - async waitForTerminalText(fn: (text: string[]) => boolean, timeOutDescription: string = 'Getting Terminal Text'): Promise { - return this.api.waitFor(async () => { - const terminalText = await this.getTerminalText(); - if (fn(terminalText)) { - return terminalText; - } - return undefined; + async waitForTerminalText(fn: (text: string[]) => boolean, timeOutDescription: string = 'Getting Terminal Text'): Promise { + await this.api.waitFor(async () => { + const terminalText = await this.api.getTerminalBuffer(XTERM_SELECTOR); + return fn(terminalText); }, void 0, timeOutDescription); } - getCurrentLineNumber(): Promise { - return this.getTerminalText().then(text => text.length); - } - - private async getTerminalText(): Promise { - return await this.api.selectorExecute(XTERM_SELECTOR, - div => { - const xterm = ((Array.isArray(div) ? div[0] : div)).xterm; - const buffer = xterm.buffer; - const lines: string[] = []; - for (let i = 0; i < buffer.lines.length; i++) { - lines.push(buffer.translateBufferLineToString(i, true)); - } - return lines; - } - ); + async getCurrentLineNumber(): Promise { + const terminalText = await this.api.getTerminalBuffer(XTERM_SELECTOR); + return terminalText.length; } } \ No newline at end of file diff --git a/test/smoke/src/driver.ts b/test/smoke/src/driver.ts index fa661be932e..3906cf2ad6c 100644 --- a/test/smoke/src/driver.ts +++ b/test/smoke/src/driver.ts @@ -11,6 +11,7 @@ export interface Element { className: string; textContent: string; attributes: { [name: string]: string }; + children: Element[]; } export interface Driver { @@ -24,7 +25,7 @@ export interface Driver { isActiveElement(selector: string): Promise; getElements(selector: string, recursive?: boolean): Promise; typeInEditor(selector: string, text: string): Promise; - selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

; + getTerminalBuffer(selector: string): Promise; } export class SpectronDriver implements Driver { @@ -107,7 +108,8 @@ export class SpectronDriver implements Driver { tagName: element.tagName, className: element.className, textContent: element.textContent || '', - attributes: {} + attributes: {}, + children: [] }); } @@ -121,13 +123,8 @@ export class SpectronDriver implements Driver { throw new Error('Method not implemented.'); } - async selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ - if (this.verbose) { - console.log('- selectorExecute:', selector); - } - - let _script = (element, script, ...args) => script(Array.isArray(element) ? element : [element], ...args); - return this.spectronClient.selectorExecute(selector, _script, script, ...args); + getTerminalBuffer(selector: string): Promise { + throw new Error('Method not implemented.'); } } @@ -209,17 +206,7 @@ export class CodeDriver implements Driver { } const windowId = await this.getWindowId(); - const result = await this.driver.getElements(windowId, selector, recursive); - return result; - } - - async selectorExecute

(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): Promise

{ - if (this.verbose) { - console.log('- selectorExecute:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.selectorExecute(windowId, selector, script, ...args); + return await this.driver.getElements(windowId, selector, recursive); } async typeInEditor(selector: string, text: string): Promise { @@ -231,6 +218,15 @@ export class CodeDriver implements Driver { return await this.driver.typeInEditor(windowId, selector, text); } + async getTerminalBuffer(selector: string): Promise { + if (this.verbose) { + console.log('- getTerminalBuffer:', selector); + } + + const windowId = await this.getWindowId(); + return await this.driver.getTerminalBuffer(windowId, selector); + } + private async getWindowId(): Promise { if (typeof this._activeWindowId !== 'number') { const windows = await this.driver.getWindowIds(); @@ -239,4 +235,37 @@ export class CodeDriver implements Driver { return this._activeWindowId; } +} + +export function findElement(element: Element, fn: (element: Element) => boolean): Element | null { + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + return element; + } + + queue.push(...element.children); + } + + return null; +} + +export function findElements(element: Element, fn: (element: Element) => boolean): Element[] { + const result: Element[] = []; + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + result.push(element); + } + + queue.push(...element.children); + } + + return result; } \ No newline at end of file From 0cc67a183deaedbf484644c1af2eed8f846e808d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 10 Apr 2018 17:09:10 +0200 Subject: [PATCH 0563/1070] catch bad stack --- src/vs/base/parts/ipc/common/ipc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/parts/ipc/common/ipc.ts b/src/vs/base/parts/ipc/common/ipc.ts index 97f8e5611c4..a3985361b63 100644 --- a/src/vs/base/parts/ipc/common/ipc.ts +++ b/src/vs/base/parts/ipc/common/ipc.ts @@ -152,7 +152,7 @@ export class ChannelServer implements IChannelServer, IDisposable { id, data: { message: data.message, name: data.name, - stack: data.stack ? data.stack.split('\n') : void 0 + stack: data.stack ? (data.stack.split ? data.stack.split('\n') : data.stack) : void 0 }, type: MessageType.ResponseError }); } else { From f2edfdc20b43602df8bbb155c988f50c0cd5ba5a Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 10 Apr 2018 17:43:08 +0200 Subject: [PATCH 0564/1070] fix #47346 --- .../editor/common/services/modelServiceImpl.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index b189ac8390c..98d71e09f7d 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -82,15 +82,23 @@ class ModelMarkerHandler { } private static _createDecorationRange(model: ITextModel, rawMarker: IMarker): Range { - let marker = model.validateRange(new Range(rawMarker.startLineNumber, rawMarker.startColumn, rawMarker.endLineNumber, rawMarker.endColumn)); - let ret: Range = new Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn); + + let ret = Range.lift(rawMarker); + + if (rawMarker.severity === MarkerSeverity.Hint && Range.spansMultipleLines(ret)) { + // never render hints on multiple lines + ret = ret.setEndPosition(ret.startLineNumber, ret.startColumn); + } + + ret = model.validateRange(ret); + if (ret.isEmpty()) { let word = model.getWordAtPosition(ret.getStartPosition()); if (word) { ret = new Range(ret.startLineNumber, word.startColumn, ret.endLineNumber, word.endColumn); } else { - let maxColumn = model.getLineLastNonWhitespaceColumn(marker.startLineNumber) || - model.getLineMaxColumn(marker.startLineNumber); + let maxColumn = model.getLineLastNonWhitespaceColumn(ret.startLineNumber) || + model.getLineMaxColumn(ret.startLineNumber); if (maxColumn === 1) { // empty line From f17b5ad6597b830eb8089f091ff920b19c0d36c3 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 10 Apr 2018 10:15:07 -0700 Subject: [PATCH 0565/1070] Emmet can return empty array for css #47429 --- extensions/html-language-features/server/src/htmlServerMain.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/html-language-features/server/src/htmlServerMain.ts b/extensions/html-language-features/server/src/htmlServerMain.ts index aa1ce562f00..d86ecb5fd68 100644 --- a/extensions/html-language-features/server/src/htmlServerMain.ts +++ b/extensions/html-language-features/server/src/htmlServerMain.ts @@ -293,8 +293,9 @@ connection.onCompletion(async (textDocumentPosition, token) => { let settings = await getDocumentSettings(document, () => doComplete.length > 2); let result = doComplete(document, textDocumentPosition.position, settings, completionParticipants); if (emmetCompletionList.isIncomplete) { + emmetCompletionList.items = emmetCompletionList.items || []; cachedCompletionList = result; - if (hexColorRegex.test(emmetCompletionList.items[0].label) && result.items.some(x => x.label === emmetCompletionList.items[0].label)) { + if (emmetCompletionList.items.length && hexColorRegex.test(emmetCompletionList.items[0].label) && result.items.some(x => x.label === emmetCompletionList.items[0].label)) { emmetCompletionList.items.shift(); } return CompletionList.create([...emmetCompletionList.items, ...result.items], emmetCompletionList.isIncomplete || result.isIncomplete); From dbe626df43dbc37412bf527329d52eb791f5d43e Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 10 Apr 2018 11:27:56 -0700 Subject: [PATCH 0566/1070] Use extension displayname as well when searching using custom views #47405 --- .../parts/extensions/electron-browser/extensionsViews.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts index 07dd776deb6..3c29bd90b41 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts @@ -204,7 +204,7 @@ export class ExtensionsListView extends ViewsViewletPanel { let result = await this.extensionsWorkbenchService.queryLocal(); result = result - .filter(e => e.type === LocalExtensionType.User && e.name.toLowerCase().indexOf(value) > -1); + .filter(e => e.type === LocalExtensionType.User && (e.name.toLowerCase().indexOf(value) > -1 || e.displayName.toLowerCase().indexOf(value) > -1)); return new PagedModel(this.sortExtensions(result, options)); } @@ -224,7 +224,7 @@ export class ExtensionsListView extends ViewsViewletPanel { const local = await this.extensionsWorkbenchService.queryLocal(); const result = local .sort((e1, e2) => e1.displayName.localeCompare(e2.displayName)) - .filter(extension => extension.outdated && extension.name.toLowerCase().indexOf(value) > -1); + .filter(extension => extension.outdated && (extension.name.toLowerCase().indexOf(value) > -1 || extension.displayName.toLowerCase().indexOf(value) > -1)); return new PagedModel(this.sortExtensions(result, options)); } @@ -237,7 +237,7 @@ export class ExtensionsListView extends ViewsViewletPanel { const result = local .sort((e1, e2) => e1.displayName.localeCompare(e2.displayName)) - .filter(e => runningExtensions.every(r => !areSameExtensions(r, e)) && e.name.toLowerCase().indexOf(value) > -1); + .filter(e => runningExtensions.every(r => !areSameExtensions(r, e)) && (e.name.toLowerCase().indexOf(value) > -1 || e.displayName.toLowerCase().indexOf(value) > -1)); return new PagedModel(this.sortExtensions(result, options)); } @@ -251,7 +251,7 @@ export class ExtensionsListView extends ViewsViewletPanel { .sort((e1, e2) => e1.displayName.localeCompare(e2.displayName)) .filter(e => e.type === LocalExtensionType.User && (e.enablementState === EnablementState.Enabled || e.enablementState === EnablementState.WorkspaceEnabled) && - e.name.toLowerCase().indexOf(value) > -1 + (e.name.toLowerCase().indexOf(value) > -1 || e.displayName.toLowerCase().indexOf(value) > -1) ); return new PagedModel(this.sortExtensions(result, options)); From f1b2b8ef3a694e63a7cfb30c489044f7cb58f565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Tue, 10 Apr 2018 12:05:46 +0200 Subject: [PATCH 0567/1070] rename rawAdapter to debuggerContribution --- src/vs/workbench/parts/debug/node/debugger.ts | 40 ++++++++++--------- .../parts/debug/test/node/debugger.test.ts | 22 +++++----- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/parts/debug/node/debugger.ts b/src/vs/workbench/parts/debug/node/debugger.ts index 1b5075f90f7..d23eb5bfcac 100644 --- a/src/vs/workbench/parts/debug/node/debugger.ts +++ b/src/vs/workbench/parts/debug/node/debugger.ts @@ -21,7 +21,7 @@ export class Debugger { private _mergedExtensionDescriptions: IExtensionDescription[]; - constructor(private configurationManager: IConfigurationManager, private rawAdapter: IDebuggerContribution, public extensionDescription: IExtensionDescription, + constructor(private configurationManager: IConfigurationManager, private debuggerContribution: IDebuggerContribution, public extensionDescription: IExtensionDescription, @IConfigurationService private configurationService: IConfigurationService, @ICommandService private commandService: ICommandService ) { @@ -34,52 +34,54 @@ export class Debugger { return this.getAdapterExecutable(root).then(adapterExecutable => { const debugConfigs = this.configurationService.getValue('debug'); if (debugConfigs.extensionHostDebugAdapter) { - return this.configurationManager.createDebugAdapter(this.rawAdapter.type, adapterExecutable); + return this.configurationManager.createDebugAdapter(this.type, adapterExecutable); } else { - return new DebugAdapter(this.rawAdapter.type, adapterExecutable, this._mergedExtensionDescriptions, outputService); + return new DebugAdapter(this.type, adapterExecutable, this._mergedExtensionDescriptions, outputService); } }); } public getAdapterExecutable(root: IWorkspaceFolder): TPromise { - return this.configurationManager.debugAdapterExecutable(root ? root.uri : undefined, this.rawAdapter.type).then(adapterExecutable => { + // first try to get an executable from DebugConfigurationProvider + return this.configurationManager.debugAdapterExecutable(root ? root.uri : undefined, this.type).then(adapterExecutable => { if (adapterExecutable) { return adapterExecutable; } - // try deprecated command based extension API - if (this.rawAdapter.adapterExecutableCommand) { - return this.commandService.executeCommand(this.rawAdapter.adapterExecutableCommand, root ? root.uri.toString() : undefined); + // try deprecated command based extension API to receive an executable + if (this.debuggerContribution.adapterExecutableCommand) { + return this.commandService.executeCommand(this.debuggerContribution.adapterExecutableCommand, root ? root.uri.toString() : undefined); } + // give up and let DebugAdapter determine executable based on package.json contribution return TPromise.as(null); }); } public get aiKey(): string { - return this.rawAdapter.aiKey; + return this.debuggerContribution.aiKey; } public get label(): string { - return this.rawAdapter.label || this.rawAdapter.type; + return this.debuggerContribution.label || this.debuggerContribution.type; } public get type(): string { - return this.rawAdapter.type; + return this.debuggerContribution.type; } public get variables(): { [key: string]: string } { - return this.rawAdapter.variables; + return this.debuggerContribution.variables; } public get configurationSnippets(): IJSONSchemaSnippet[] { - return this.rawAdapter.configurationSnippets; + return this.debuggerContribution.configurationSnippets; } public get languages(): string[] { - return this.rawAdapter.languages; + return this.debuggerContribution.languages; } public merge(secondRawAdapter: IDebuggerContribution, extensionDescription: IExtensionDescription): void { @@ -91,16 +93,16 @@ export class Debugger { if (extensionDescription.isBuiltin) { this.extensionDescription = extensionDescription; } - objects.mixin(this.rawAdapter, secondRawAdapter, extensionDescription.isBuiltin); + objects.mixin(this.debuggerContribution, secondRawAdapter, extensionDescription.isBuiltin); } public hasInitialConfiguration(): boolean { - return !!this.rawAdapter.initialConfigurations; + return !!this.debuggerContribution.initialConfigurations; } public getInitialConfigurationContent(initialConfigs?: IConfig[]): TPromise { // at this point we got some configs from the package.json and/or from registered DebugConfigurationProviders - let initialConfigurations = this.rawAdapter.initialConfigurations || []; + let initialConfigurations = this.debuggerContribution.initialConfigurations || []; if (initialConfigs) { initialConfigurations = initialConfigurations.concat(initialConfigs); } @@ -130,12 +132,12 @@ export class Debugger { } public getSchemaAttributes(): IJSONSchema[] { - if (!this.rawAdapter.configurationAttributes) { + if (!this.debuggerContribution.configurationAttributes) { return null; } // fill in the default configuration attributes shared by all adapters. - return Object.keys(this.rawAdapter.configurationAttributes).map(request => { - const attributes: IJSONSchema = this.rawAdapter.configurationAttributes[request]; + return Object.keys(this.debuggerContribution.configurationAttributes).map(request => { + const attributes: IJSONSchema = this.debuggerContribution.configurationAttributes[request]; const defaultRequired = ['name', 'type', 'request']; attributes.required = attributes.required && attributes.required.length ? defaultRequired.concat(attributes.required) : defaultRequired; attributes.additionalProperties = false; diff --git a/src/vs/workbench/parts/debug/test/node/debugger.test.ts b/src/vs/workbench/parts/debug/test/node/debugger.test.ts index 8a0379957c9..9e57914a9a9 100644 --- a/src/vs/workbench/parts/debug/test/node/debugger.test.ts +++ b/src/vs/workbench/parts/debug/test/node/debugger.test.ts @@ -18,7 +18,7 @@ suite('Debug - Debugger', () => { let _debugger: Debugger; const extensionFolderPath = 'a/b/c/'; - const rawAdapter = { + const debuggerContribution = { type: 'mock', label: 'Mock Debug', enableBreakpointsFor: { 'languageIds': ['markdown'] }, @@ -57,7 +57,7 @@ suite('Debug - Debugger', () => { engines: null, contributes: { 'debuggers': [ - rawAdapter + debuggerContribution ] } }; @@ -113,14 +113,14 @@ suite('Debug - Debugger', () => { }; - const configurationManager = { + const configurationManager = { debugAdapterExecutable(folderUri: uri | undefined, type: string): TPromise { return TPromise.as(undefined); } }; setup(() => { - _debugger = new Debugger(configurationManager, rawAdapter, extensionDescriptor0, new TestConfigurationService(), null); + _debugger = new Debugger(configurationManager, debuggerContribution, extensionDescriptor0, new TestConfigurationService(), null); }); teardown(() => { @@ -128,20 +128,20 @@ suite('Debug - Debugger', () => { }); test('attributes', () => { - assert.equal(_debugger.type, rawAdapter.type); - assert.equal(_debugger.label, rawAdapter.label); + assert.equal(_debugger.type, debuggerContribution.type); + assert.equal(_debugger.label, debuggerContribution.label); const ae = DebugAdapter.platformAdapterExecutable([extensionDescriptor0], 'mock'); - assert.equal(ae.command, paths.join(extensionFolderPath, rawAdapter.program)); - assert.deepEqual(ae.args, rawAdapter.args); + assert.equal(ae.command, paths.join(extensionFolderPath, debuggerContribution.program)); + assert.deepEqual(ae.args, debuggerContribution.args); }); test('schema attributes', () => { const schemaAttribute = _debugger.getSchemaAttributes()[0]; - assert.notDeepEqual(schemaAttribute, rawAdapter.configurationAttributes); - Object.keys(rawAdapter.configurationAttributes.launch).forEach(key => { - assert.deepEqual(schemaAttribute[key], rawAdapter.configurationAttributes.launch[key]); + assert.notDeepEqual(schemaAttribute, debuggerContribution.configurationAttributes); + Object.keys(debuggerContribution.configurationAttributes.launch).forEach(key => { + assert.deepEqual(schemaAttribute[key], debuggerContribution.configurationAttributes.launch[key]); }); assert.equal(schemaAttribute['additionalProperties'], false); From 7bd29a4f90e129923df3f39c0fbc35535cfea77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Tue, 10 Apr 2018 15:01:57 +0200 Subject: [PATCH 0568/1070] fix translation issue #47580 --- .../configurationResolverService.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts index fb77a1d5bb5..833a69b8929 100644 --- a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts +++ b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts @@ -93,7 +93,7 @@ class VariableResolver { return normalizeDriveLetter(context.uri.fsPath); } if (this.workspaceContextService.getWorkspace().folders.length > 1) { - throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'${workspaceFolder}' can not be resolved in a multi folder workspace. Scope this variables using : and a folder name.")); + throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'${workspaceFolder}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.")); } throw new Error(localize('canNotResolveWorkspaceFolder', "'${workspaceFolder}' can not be resolved. Please open a folder.")); @@ -105,7 +105,7 @@ class VariableResolver { return paths.basename(context.uri.fsPath); } if (this.workspaceContextService.getWorkspace().folders.length > 1) { - throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "'${workspaceFolderBasename}' can not be resolved in a multi folder workspace. Scope this variables using : and a folder name.")); + throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "'${workspaceFolderBasename}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.")); } throw new Error(localize('canNotResolveFolderBasename', "'${workspaceFolderBasename}' can not be resolved. Please open a folder.")); @@ -115,20 +115,20 @@ class VariableResolver { return lineNumber; } - throw new Error(localize('canNotResolveLineNumber', "'${lineNumber}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveLineNumber', "'${lineNumber}' can not be resolved. Please open an editor.")); } case 'selectedText': { const selectedText = this.getSelectedText(); if (selectedText) { return selectedText; } - throw new Error(localize('canNotResolveSelectedText', "'${selectedText}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveSelectedText', "'${selectedText}' can not be resolved. Please open an editor.")); } case 'file': { if (filePath) { return filePath; } - throw new Error(localize('canNotResolveFile', "'${file}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveFile', "'${file}' can not be resolved. Please open an editor.")); } case 'relativeFile': { if (context && filePath) { return paths.normalize(relative(context.uri.fsPath, filePath)); @@ -137,32 +137,32 @@ class VariableResolver { return filePath; } - throw new Error(localize('canNotResolveRelativeFile', "'${relativeFile}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveRelativeFile', "'${relativeFile}' can not be resolved. Please open an editor.")); } case 'fileDirname': { if (filePath) { return paths.dirname(filePath); } - throw new Error(localize('canNotResolveFileDirname', "'${fileDirname}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveFileDirname', "'${fileDirname}' can not be resolved. Please open an editor.")); } case 'fileExtname': { if (filePath) { return paths.extname(filePath); } - throw new Error(localize('canNotResolveFileExtname', "'${fileExtname}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveFileExtname', "'${fileExtname}' can not be resolved. Please open an editor.")); } case 'fileBasename': { if (filePath) { return paths.basename(filePath); } - throw new Error(localize('canNotResolveFileBasename', "'${fileBasename}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveFileBasename', "'${fileBasename}' can not be resolved. Please open an editor.")); } case 'fileBasenameNoExtension': { if (filePath) { const basename = paths.basename(filePath); return basename.slice(0, basename.length - paths.extname(basename).length); } - throw new Error(localize('canNotResolveFileBasenameNoExtension', "'${fileBasenameNoExtension}' can not be resolved, please open an editor.")); + throw new Error(localize('canNotResolveFileBasenameNoExtension', "'${fileBasenameNoExtension}' can not be resolved. Please open an editor.")); } case 'execPath': return this.environmentService.execPath; From fee0dde01287b89ffd619f0e8093c689f17df09c Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 10 Apr 2018 14:34:15 -0700 Subject: [PATCH 0569/1070] foldering -> folding --- .../src/features/{folderingProvider.ts => foldingProvider.ts} | 0 extensions/typescript-language-features/src/languageProvider.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename extensions/typescript-language-features/src/features/{folderingProvider.ts => foldingProvider.ts} (100%) diff --git a/extensions/typescript-language-features/src/features/folderingProvider.ts b/extensions/typescript-language-features/src/features/foldingProvider.ts similarity index 100% rename from extensions/typescript-language-features/src/features/folderingProvider.ts rename to extensions/typescript-language-features/src/features/foldingProvider.ts diff --git a/extensions/typescript-language-features/src/languageProvider.ts b/extensions/typescript-language-features/src/languageProvider.ts index e4c4f7de60d..9da522bc284 100644 --- a/extensions/typescript-language-features/src/languageProvider.ts +++ b/extensions/typescript-language-features/src/languageProvider.ts @@ -154,7 +154,7 @@ export default class LanguageProvider { let enable = workspace.getConfiguration().get(foldingSetting, false); if (enable && this.client.apiVersion.has280Features()) { if (!this.foldingProviderRegistration) { - this.foldingProviderRegistration = languages.registerFoldingProvider(this.documentSelector, new (await import('./features/folderingProvider')).default(this.client)); + this.foldingProviderRegistration = languages.registerFoldingProvider(this.documentSelector, new (await import('./features/foldingProvider')).default(this.client)); } } else { if (this.foldingProviderRegistration) { From 9aef83c000525a1dd02dfc552aacdf915e84c65e Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 10 Apr 2018 14:41:49 -0700 Subject: [PATCH 0570/1070] Make sure js/ts blocks folds show ending bracket Fixes #47240 --- .../src/features/foldingProvider.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extensions/typescript-language-features/src/features/foldingProvider.ts b/extensions/typescript-language-features/src/features/foldingProvider.ts index 6c11adb069b..b5ad3d23199 100644 --- a/extensions/typescript-language-features/src/features/foldingProvider.ts +++ b/extensions/typescript-language-features/src/features/foldingProvider.ts @@ -36,6 +36,10 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider return new vscode.FoldingRangeList(response.body.map(span => { const range = typeConverters.Range.fromTextSpan(span.textSpan); + // workaround for #47240 + if (range.end.character > 0 && document.getText(new vscode.Range(range.end.translate(0, -1), range.end)) === '}') { + return new vscode.FoldingRange(range.start.line, Math.max(range.end.line - 1, range.start.line)); + } return new vscode.FoldingRange(range.start.line, range.end.line); })); } From 49ec3bc8ce42ad1a458ae7e5b1ff3c0f70b4a14e Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Tue, 10 Apr 2018 14:43:29 -0700 Subject: [PATCH 0571/1070] Fix #47258 - add null check --- .../parts/preferences/electron-browser/preferencesSearch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts b/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts index b267d3164aa..3b40c62f656 100644 --- a/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts +++ b/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts @@ -46,7 +46,7 @@ export class PreferencesSearchService extends Disposable implements IPreferences // Filter to enabled extensions that have settings return exts .filter(ext => this.extensionEnablementService.isEnabled(ext)) - .filter(ext => ext.manifest.contributes && ext.manifest.contributes.configuration) + .filter(ext => ext.manifest && ext.manifest.contributes && ext.manifest.contributes.configuration) .filter(ext => !!ext.identifier.uuid); }); } From 0940ea622f7fa953d9bedc4986b0fb49893f2836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Wed, 11 Apr 2018 00:19:08 +0200 Subject: [PATCH 0572/1070] attempt to fix VSLS regression --- src/vs/workbench/parts/debug/node/debugAdapter.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index 9e91bf4cf00..9d6c1456e80 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -191,6 +191,7 @@ export abstract class StreamDebugAdapter extends AbstractDebugAdapter { continue; // there may be more complete messages to process } } else { + /* const idx = this.rawData.indexOf(StreamDebugAdapter.TWO_CRLF); if (idx !== -1) { const header = this.rawData.toString('utf8', 0, idx); @@ -204,6 +205,17 @@ export abstract class StreamDebugAdapter extends AbstractDebugAdapter { this.rawData = this.rawData.slice(idx + StreamDebugAdapter.TWO_CRLF.length); continue; } + */ + const s = this.rawData.toString('utf8', 0, this.rawData.length); + const idx = s.indexOf(StreamDebugAdapter.TWO_CRLF); + if (idx !== -1) { + const match = /Content-Length: (\d+)/.exec(s); + if (match && match[1]) { + this.contentLength = Number(match[1]); + this.rawData = this.rawData.slice(idx + StreamDebugAdapter.TWO_CRLF.length); + continue; // try to handle a complete message + } + } } break; } From e6b61067f22fd94718f7c427d9caded5514761f4 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 10 Apr 2018 16:06:57 -0700 Subject: [PATCH 0573/1070] Validate surrounding text before providing emmet completions in jsx/xml Fixes #47612 --- .../emmet/src/defaultCompletionProvider.ts | 2 +- .../emmet/src/test/abbreviationAction.test.ts | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/extensions/emmet/src/defaultCompletionProvider.ts b/extensions/emmet/src/defaultCompletionProvider.ts index fd48a233324..9e06041548d 100644 --- a/extensions/emmet/src/defaultCompletionProvider.ts +++ b/extensions/emmet/src/defaultCompletionProvider.ts @@ -37,7 +37,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi let rootNode: Stylesheet | undefined = undefined; if (context.triggerKind !== vscode.CompletionTriggerKind.TriggerForIncompleteCompletions) { - validateLocation = syntax === 'html' || isStyleSheet(document.languageId); + validateLocation = syntax === 'html' || syntax === 'jsx' || syntax === 'xml' || isStyleSheet(document.languageId); // If document can be css parsed, get currentNode if (isStyleSheet(document.languageId)) { let usePartialParsing = vscode.workspace.getConfiguration('emmet')['optimizeStylesheetParsing'] === true; diff --git a/extensions/emmet/src/test/abbreviationAction.test.ts b/extensions/emmet/src/test/abbreviationAction.test.ts index 3c85a027155..8aed9b00830 100644 --- a/extensions/emmet/src/test/abbreviationAction.test.ts +++ b/extensions/emmet/src/test/abbreviationAction.test.ts @@ -336,6 +336,46 @@ suite('Tests for jsx, xml and xsl', () => { }); }); + test('No expanding text inside open tag in completion list (jsx)', () => { + return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { + editor.selection = new Selection(2, 4, 2, 4); + const cancelSrc = new CancellationTokenSource(); + const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); + assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); + return Promise.resolve(); + }); + }); + + test('No expanding tag that is opened, but not closed in completion list (jsx)', () => { + return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { + editor.selection = new Selection(9, 6, 9, 6); + const cancelSrc = new CancellationTokenSource(); + const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); + assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); + return Promise.resolve(); + }); + }); + + test('No expanding text inside open tag when there is no closing tag in completion list (jsx)', () => { + return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { + editor.selection = new Selection(9, 8, 9, 8); + const cancelSrc = new CancellationTokenSource(); + const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); + assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); + return Promise.resolve(); + }); + }); + + test('No expanding text in completion list inside open tag when there is no closing tag when there is no parent node (jsx)', () => { + const fileContents = ' { + editor.selection = new Selection(0, 6, 0, 6); + const cancelSrc = new CancellationTokenSource(); + const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); + assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); + return Promise.resolve(); + }); + }); }); function testExpandAbbreviation(syntax: string, selection: Selection, abbreviation: string, expandedText: string, shouldFail?: boolean): Thenable { From 12072da3bb9015342c3a29d6f57621af04a895ef Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 Apr 2018 07:48:19 +0200 Subject: [PATCH 0574/1070] clean up electron 2.0 localStorage remainders --- src/vs/code/electron-main/app.ts | 79 ++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index d1a8bfab221..72ccf412cb8 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -60,6 +60,8 @@ import { IssueService } from 'vs/platform/issue/electron-main/issueService'; import { LogLevelSetterChannel } from 'vs/platform/log/common/logIpc'; import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { ElectronURLListener } from 'vs/platform/url/electron-main/electronUrlListener'; +import { join } from 'path'; +import { exists, unlink, del } from 'vs/base/node/pfs'; export class CodeApplication { @@ -261,38 +263,42 @@ export class CodeApplication { this.logService.debug(`from: ${this.environmentService.appRoot}`); this.logService.debug('args:', this.environmentService.args); - // Make sure we associate the program with the app user model id - // This will help Windows to associate the running program with - // any shortcut that is pinned to the taskbar and prevent showing - // two icons in the taskbar for the same app. - if (platform.isWindows && product.win32AppUserModelId) { - app.setAppUserModelId(product.win32AppUserModelId); - } + // Handle local storage (TODO@Ben remove me after a while) + return this.handleLocalStorage().then(() => { - // Create Electron IPC Server - this.electronIpcServer = new ElectronIPCServer(); + // Make sure we associate the program with the app user model id + // This will help Windows to associate the running program with + // any shortcut that is pinned to the taskbar and prevent showing + // two icons in the taskbar for the same app. + if (platform.isWindows && product.win32AppUserModelId) { + app.setAppUserModelId(product.win32AppUserModelId); + } - // Resolve unique machine ID - this.logService.trace('Resolving machine identifier...'); - return this.resolveMachineId().then(machineId => { - this.logService.trace(`Resolved machine identifier: ${machineId}`); + // Create Electron IPC Server + this.electronIpcServer = new ElectronIPCServer(); - // Spawn shared process - this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); - this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); + // Resolve unique machine ID + this.logService.trace('Resolving machine identifier...'); + return this.resolveMachineId().then(machineId => { + this.logService.trace(`Resolved machine identifier: ${machineId}`); - // Services - const appInstantiationService = this.initServices(machineId); + // Spawn shared process + this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); + this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); - // Setup Auth Handler - const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); - this.toDispose.push(authHandler); + // Services + const appInstantiationService = this.initServices(machineId); - // Open Windows - appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); + // Setup Auth Handler + const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); + this.toDispose.push(authHandler); - // Post Open Windows Tasks - appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); + // Open Windows + appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); + + // Post Open Windows Tasks + appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); + }); }); } @@ -311,6 +317,29 @@ export class CodeApplication { }); } + private handleLocalStorage(): TPromise { + const localStorageBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage.vscbak'); + const localStorageJournalBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal.vscbak'); + const localStorageLevelDB = join(this.environmentService.userDataPath, 'Local Storage', 'leveldb'); + + // Electron 1.7.12: Delete + if (product.quality === 'insider' && process.versions.electron === '1.7.12') { + return exists(localStorageBackupFile).then(localStorageBackupFileExists => { + return exists(localStorageJournalBackupFile).then(localStorageJournalBackupFileExists => { + return exists(localStorageLevelDB).then(localStorageLevelDBExists => { + return TPromise.join([ + localStorageBackupFileExists ? unlink(localStorageBackupFile) : TPromise.as(null), + localStorageJournalBackupFile ? unlink(localStorageJournalBackupFile) : TPromise.as(null), + localStorageLevelDBExists ? del(localStorageLevelDB) : TPromise.as(null) + ]); + }); + }); + }).then(() => void 0, () => void 0); + } + + return TPromise.as(null); + } + private initServices(machineId: string): IInstantiationService { const services = new ServiceCollection(); From 8150982b205cbab9ac1be19fd687386b5d18d391 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 10 Apr 2018 16:31:28 -0700 Subject: [PATCH 0575/1070] Organize imports --- .../electron-browser/baseWebviewEditor.ts | 8 +++---- .../electron-browser/webview.contribution.ts | 9 ++++---- .../electron-browser/webviewCommands.ts | 9 ++++---- .../webview/electron-browser/webviewEditor.ts | 22 +++++++++---------- .../electron-browser/webviewEditorInput.ts | 4 +--- .../webviewEditorInputFactory.ts | 4 +--- .../electron-browser/webviewEditorService.ts | 3 ++- .../electron-browser/webviewElement.ts | 18 +++++++-------- 8 files changed, 36 insertions(+), 41 deletions(-) diff --git a/src/vs/workbench/parts/webview/electron-browser/baseWebviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/baseWebviewEditor.ts index 047cc8bbb38..8436046783d 100644 --- a/src/vs/workbench/parts/webview/electron-browser/baseWebviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/baseWebviewEditor.ts @@ -3,14 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { Dimension } from 'vs/base/browser/dom'; +import { IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; - -import { IContextKey, RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; - -import { WebviewElement } from './webviewElement'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import { Dimension } from 'vs/base/browser/dom'; +import { WebviewElement } from './webviewElement'; /** A context key that is set when a webview editor has focus. */ export const KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS = new RawContextKey('webviewEditorFocus', false); diff --git a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts index 63f62ee1359..aa05a047266 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts @@ -2,6 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ + import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { localize } from 'vs/nls'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; @@ -10,15 +11,15 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; -import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; -import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; -import { IEditorInputFactoryRegistry, Extensions as EditorInputExtensions } from 'vs/workbench/common/editor'; +import { EditorDescriptor, Extensions as EditorExtensions, IEditorRegistry } from 'vs/workbench/browser/editor'; +import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; +import { Extensions as EditorInputExtensions, IEditorInputFactoryRegistry } from 'vs/workbench/common/editor'; import { WebviewEditorInputFactory } from 'vs/workbench/parts/webview/electron-browser/webviewEditorInputFactory'; import { KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './baseWebviewEditor'; import { HideWebViewEditorFindCommand, OpenWebviewDeveloperToolsAction, ReloadWebviewAction, ShowWebViewEditorFindTermCommand, ShowWebViewEditorFindWidgetCommand } from './webviewCommands'; import { WebviewEditor } from './webviewEditor'; -import { IWebviewEditorService, WebviewEditorService } from './webviewEditorService'; import { WebviewEditorInput } from './webviewEditorInput'; +import { IWebviewEditorService, WebviewEditorService } from './webviewEditorService'; (Registry.as(EditorExtensions.Editors)).registerEditor(new EditorDescriptor( WebviewEditor, diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts b/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts index 69077a33112..ed5542fae12 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts @@ -3,13 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as nls from 'vs/nls'; - -import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { Command, ICommandOptions } from 'vs/editor/browser/editorExtensions'; -import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { Action } from 'vs/base/common/actions'; import { TPromise } from 'vs/base/common/winjs.base'; +import { Command, ICommandOptions } from 'vs/editor/browser/editorExtensions'; +import * as nls from 'vs/nls'; +import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { BaseWebviewEditor } from './baseWebviewEditor'; export class ShowWebViewEditorFindWidgetCommand extends Command { diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index c7fba7cb817..e7debe873e0 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -3,23 +3,23 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as DOM from 'vs/base/browser/dom'; +import { Emitter, Event } from 'vs/base/common/event'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IDisposable, } from 'vs/base/common/lifecycle'; -import { EditorOptions } from 'vs/workbench/common/editor'; -import { Position } from 'vs/platform/editor/common/editor'; -import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './baseWebviewEditor'; -import { WebviewElement } from './webviewElement'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; +import { Position } from 'vs/platform/editor/common/editor'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import * as DOM from 'vs/base/browser/dom'; -import { Event, Emitter } from 'vs/base/common/event'; +import { EditorOptions } from 'vs/workbench/common/editor'; import { WebviewEditorInput } from 'vs/workbench/parts/webview/electron-browser/webviewEditorInput'; -import URI from 'vs/base/common/uri'; +import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; +import { BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './baseWebviewEditor'; +import { WebviewElement } from './webviewElement'; export class WebviewEditor extends BaseWebviewEditor { diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts index 3cd1faf584d..13bdd34b0a4 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts @@ -3,16 +3,14 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { IEditorInput, IEditorModel, Position } from 'vs/platform/editor/common/editor'; import { EditorInput, EditorModel } from 'vs/workbench/common/editor'; -import { WebviewElement } from './webviewElement'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; import { WebviewEvents, WebviewInputOptions, WebviewReviver } from './webviewEditorService'; +import { WebviewElement } from './webviewElement'; export class WebviewEditorInput extends EditorInput { diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInputFactory.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInputFactory.ts index 3984cbd11d3..476db7789b1 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInputFactory.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInputFactory.ts @@ -3,12 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IEditorInputFactory } from 'vs/workbench/common/editor'; -import { IWebviewEditorService, WebviewInputOptions } from './webviewEditorService'; import { WebviewEditorInput } from './webviewEditorInput'; +import { IWebviewEditorService, WebviewInputOptions } from './webviewEditorService'; interface SerializedWebview { readonly viewType: string; diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts index 8a4bac0a396..f271757a4f4 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts @@ -2,15 +2,16 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ + import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; import { Position } from 'vs/platform/editor/common/editor'; import { IInstantiationService, createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import * as vscode from 'vscode'; import { WebviewEditorInput } from './webviewEditorInput'; -import { TPromise } from 'vs/base/common/winjs.base'; export const IWebviewEditorService = createDecorator('webviewEditorService'); diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts index 0ea8ed3965e..45b9a264a5e 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts @@ -3,18 +3,18 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import URI from 'vs/base/common/uri'; +import { addClass, addDisposableListener } from 'vs/base/browser/dom'; +import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { Event, Emitter } from 'vs/base/common/event'; -import { addDisposableListener, addClass } from 'vs/base/browser/dom'; -import { editorBackground, editorForeground, textLinkForeground } from 'vs/platform/theme/common/colorRegistry'; -import { ITheme, LIGHT, DARK, IThemeService } from 'vs/platform/theme/common/themeService'; -import { WebviewFindWidget } from './webviewFindWidget'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IContextKey } from 'vs/platform/contextkey/common/contextkey'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { nativeSep } from 'vs/base/common/paths'; import { startsWith } from 'vs/base/common/strings'; +import URI from 'vs/base/common/uri'; +import { IContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { editorBackground, editorForeground, textLinkForeground } from 'vs/platform/theme/common/colorRegistry'; +import { DARK, ITheme, IThemeService, LIGHT } from 'vs/platform/theme/common/themeService'; +import { WebviewFindWidget } from './webviewFindWidget'; export interface WebviewOptions { readonly allowScripts?: boolean; From c439cca39e4649c61c2a7e99bacd5b2a201a7b99 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 10 Apr 2018 23:42:31 -0700 Subject: [PATCH 0576/1070] Return access denied and log on webview resource load error Fixes #47634 --- .../workbench/parts/webview/electron-browser/webviewElement.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts index 45b9a264a5e..d32384e22a9 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts @@ -432,7 +432,8 @@ function registerFileProtocol( return; } } - callback({ error: 'Cannot load resource outside of protocol root' }); + console.error('Webview: Cannot load resource outside of protocol root'); + callback({ error: -10 /* ACCESS_DENIED: https://cs.chromium.org/chromium/src/net/base/net_error_list.h */ }); }, (error) => { if (error) { console.error('Failed to register protocol ' + protocol); From c0a89004ece6b6cd6dbf7527eeb9039af1fe6372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 11 Apr 2018 09:34:17 +0200 Subject: [PATCH 0577/1070] remove console.log --- src/vs/base/node/zip.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/base/node/zip.ts b/src/vs/base/node/zip.ts index ac9b5cdfd21..a5e7abca5d8 100644 --- a/src/vs/base/node/zip.ts +++ b/src/vs/base/node/zip.ts @@ -60,8 +60,6 @@ function modeFromEntry(entry: Entry) { function toExtractError(err: Error): ExtractError { let type = ExtractErrorType.CorruptZip; - console.log('WHAT'); - if (/end of central directory record signature not found/.test(err.message)) { type = ExtractErrorType.CorruptZip; } From 3c0e8ba16aa447ebe385595e686df79ea028132f Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 Apr 2018 09:37:10 +0200 Subject: [PATCH 0578/1070] :lipstick: --- build/tfs/common/symbols.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/build/tfs/common/symbols.ts b/build/tfs/common/symbols.ts index 55641544c27..eac0d610b73 100644 --- a/build/tfs/common/symbols.ts +++ b/build/tfs/common/symbols.ts @@ -59,8 +59,8 @@ async function tmpFile(name: string): Promise { return join(tmpParent, name); } -async function getVersions(accessor: IApplicationAccessor): Promise { - return await asyncRequest({ +function getVersions(accessor: IApplicationAccessor): Promise { + return asyncRequest({ url: `${BASE_URL}/apps/${accessor.appId}/app_versions`, method: 'GET', headers: { @@ -69,8 +69,8 @@ async function getVersions(accessor: IApplicationAccessor): Promise { }); } -async function createVersion(accessor: IApplicationAccessor, version: string): Promise { - return await asyncRequest({ +function createVersion(accessor: IApplicationAccessor, version: string): Promise { + return asyncRequest({ url: `${BASE_URL}/apps/${accessor.appId}/app_versions/new`, method: 'POST', headers: { @@ -82,8 +82,8 @@ async function createVersion(accessor: IApplicationAccessor, version: string): P }); } -async function updateVersion(accessor: IVersionAccessor, symbolsPath: string) { - return await asyncRequest({ +function updateVersion(accessor: IVersionAccessor, symbolsPath: string) { + return asyncRequest({ url: `${BASE_URL}/apps/${accessor.appId}/app_versions/${accessor.id}`, method: 'PUT', headers: { @@ -95,7 +95,7 @@ async function updateVersion(accessor: IVersionAccessor, symbolsPath: string) { }); } -async function asyncRequest(options: request.UrlOptions & request.CoreOptions): Promise { +function asyncRequest(options: request.UrlOptions & request.CoreOptions): Promise { return new Promise((resolve, reject) => { request(options, (error, response, body) => { if (error) { @@ -107,7 +107,7 @@ async function asyncRequest(options: request.UrlOptions & request.CoreOptions }); } -async function downloadAsset(repository, assetName: string, targetPath: string, electronVersion: string) { +function downloadAsset(repository, assetName: string, targetPath: string, electronVersion: string) { return new Promise((resolve, reject) => { repository.getReleases({ tag_name: `v${electronVersion}` }, (err, releases) => { if (err) { @@ -211,7 +211,7 @@ if (repository && codeVersion && electronVersion && (product.quality === 'stable } }).then(() => { console.log('HockeyApp: done'); - }, error => { + }).catch(error => { console.error(`HockeyApp: error (${error})`); }); } else { From 82e9aa491ad5f38135e149a32d146d039ca6b5db Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 09:25:00 +0200 Subject: [PATCH 0579/1070] some jsdoc, #47475 --- src/vs/vscode.proposed.d.ts | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 63095a4b66b..b64040df24d 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -253,16 +253,55 @@ declare module 'vscode' { _version: 3; + /** + * An event to signal that a resource has been created, changed, or deleted. + */ readonly onDidChange: Event; + /** + * Retrieve meta data about a file. + * + * @param uri The uri of the file to retrieve meta data about. + * @param token A cancellation token. + */ + // todo@remote + // ! throw error (ENOENT) when the file doesn't exist stat(uri: Uri, token: CancellationToken): Thenable; + /** + * Retrieve the meta data of all entries of a [directory](#FileType2.Directory) + * + * @param uri The uri of the folder. + * @param token A cancellation token. + * @return A thenable that resolves to an array of tuples of resources and files stats. + */ readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat2][]>; + /** + * Read the entire contents of a file. + * + * @param uri The uri of the file. + * @param token A cancellation token. + * @return A thenable that resolves to an array of bytes. + */ readFile(uri: Uri, token: CancellationToken): Thenable; + /** + * Write data to a file, replacing its entire contents. + * + * @param uri The uri of the file. + * @param content The new content of the file. + * @param token A cancellation token. + */ writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): Thenable; + /** + * Rename a file or folder. + * + * @param oldUri The exiting file or folder + * @param newUri The target location + * @param token A cancellation token. + */ rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; // todo@remote From c90991d8e7ab5aa3e1ee954aed691709769b07ec Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 10:00:44 +0200 Subject: [PATCH 0580/1070] remove smoke2 --- test/smoke2/package.json | 18 ------ test/smoke2/src/code.ts | 125 ------------------------------------ test/smoke2/src/driver.d.ts | 19 ------ test/smoke2/src/driver.js | 12 ---- test/smoke2/src/main.ts | 31 --------- test/smoke2/tsconfig.json | 11 ---- test/smoke2/yarn.lock | 21 ------ 7 files changed, 237 deletions(-) delete mode 100644 test/smoke2/package.json delete mode 100644 test/smoke2/src/code.ts delete mode 100644 test/smoke2/src/driver.d.ts delete mode 100644 test/smoke2/src/driver.js delete mode 100644 test/smoke2/src/main.ts delete mode 100644 test/smoke2/tsconfig.json delete mode 100644 test/smoke2/yarn.lock diff --git a/test/smoke2/package.json b/test/smoke2/package.json deleted file mode 100644 index 6e0ca026745..00000000000 --- a/test/smoke2/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "smoke2", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "compile": "node tools/prebuild && tsc && node tools/postbuild", - "watch": "tsc --watch", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/tmp": "^0.0.33", - "tmp": "^0.0.33", - "typescript": "^2.8.1" - } -} diff --git a/test/smoke2/src/code.ts b/test/smoke2/src/code.ts deleted file mode 100644 index 041f9b0c42d..00000000000 --- a/test/smoke2/src/code.ts +++ /dev/null @@ -1,125 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as fs from 'fs'; -import * as path from 'path'; -import * as cp from 'child_process'; -import { tmpName } from 'tmp'; -import { IDriver, connect as connectDriver, IDisposable } from './driver'; - -const repoPath = path.join(__dirname, '../../..'); - -function getDevElectronPath(): string { - const buildPath = path.join(repoPath, '.build'); - const product = require(path.join(repoPath, 'product.json')); - - switch (process.platform) { - case 'darwin': - return path.join(buildPath, 'electron', `${product.nameLong}.app`, 'Contents', 'MacOS', 'Electron'); - case 'linux': - return path.join(buildPath, 'electron', `${product.applicationName}`); - case 'win32': - return path.join(buildPath, 'electron', `${product.nameShort}.exe`); - default: - throw new Error('Unsupported platform.'); - } -} - -function getBuildElectronPath(root: string): string { - switch (process.platform) { - case 'darwin': - return path.join(root, 'Contents', 'MacOS', 'Electron'); - case 'linux': { - const product = require(path.join(root, 'resources', 'app', 'product.json')); - return path.join(root, product.applicationName); - } - case 'win32': { - const product = require(path.join(root, 'resources', 'app', 'product.json')); - return path.join(root, `${product.nameShort}.exe`); - } - default: - throw new Error('Unsupported platform.'); - } -} - -function getDevOutPath(): string { - return path.join(repoPath, 'out'); -} - -function getBuildOutPath(root: string): string { - switch (process.platform) { - case 'darwin': - return path.join(root, 'Contents', 'Resources', 'app', 'out'); - default: - return path.join(root, 'resources', 'app', 'out'); - } -} - -export class Code { - - constructor( - private process: cp.ChildProcess, - private client: IDisposable, - readonly driver: IDriver - ) { - - } - - dispose(): void { - this.client.dispose(); - this.process.kill(); - } -} - -export interface SpawnOptions { - codePath?: string; - userDataDir: string; - extensionsPath: string; -} - -export async function connect(child: cp.ChildProcess, outPath: string, handlePath: string): Promise { - let errCount = 0; - - while (true) { - try { - const { client, driver } = await connectDriver(outPath, handlePath); - return new Code(child, client, driver); - } catch (err) { - if (++errCount > 50) { - child.kill(); - throw err; - } - - // retry - await new Promise(c => setTimeout(c, 100)); - } - } -} - -export async function spawn(options: SpawnOptions): Promise { - const codePath = options.codePath; - const electronPath = codePath ? getBuildElectronPath(codePath) : getDevElectronPath(); - const outPath = codePath ? getBuildOutPath(codePath) : getDevOutPath(); - const handlePath = await new Promise((c, e) => tmpName((err, handlePath) => err ? e(err) : c(handlePath))); - - const args = [ - '--skip-getting-started', - '--skip-release-notes', - '--sticky-quickopen', - '--disable-telemetry', - '--disable-updates', - '--disable-crash-reporter', - `--extensions-dir=${options.extensionsPath}`, - `--user-data-dir=${options.userDataDir}`, - '--driver', handlePath - ]; - - if (!codePath) { - args.unshift(repoPath); - } - - const child = cp.spawn(electronPath, args); - return connect(child, outPath, handlePath); -} \ No newline at end of file diff --git a/test/smoke2/src/driver.d.ts b/test/smoke2/src/driver.d.ts deleted file mode 100644 index 6d417e693df..00000000000 --- a/test/smoke2/src/driver.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -export interface IWindow { - id: string; -} - -export interface IDriver { - _serviceBrand: any; - getWindows(): Promise; -} - -export interface IDisposable { - dispose(): void; -} - -export function connect(outPath: string, handle: string): Promise<{ client: IDisposable, driver: IDriver }>; diff --git a/test/smoke2/src/driver.js b/test/smoke2/src/driver.js deleted file mode 100644 index 7ff3b7964f0..00000000000 --- a/test/smoke2/src/driver.js +++ /dev/null @@ -1,12 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -const path = require('path'); - -exports.connect = function (outPath, handle) { - const bootstrapPath = path.join(outPath, 'bootstrap-amd.js'); - const { bootstrap } = require(bootstrapPath); - return new Promise((c, e) => bootstrap('vs/code/node/driver', ({ connect }) => connect(handle).then(c, e), e)); -}; \ No newline at end of file diff --git a/test/smoke2/src/main.ts b/test/smoke2/src/main.ts deleted file mode 100644 index 8e5024f5289..00000000000 --- a/test/smoke2/src/main.ts +++ /dev/null @@ -1,31 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as path from 'path'; -import { connect } from './driver'; -import { spawn } from './code'; - -// const rootPath = path.dirname(path.dirname(path.dirname(__dirname))); -// const outPath = path.join(rootPath, 'out'); -// const handlePath = path.join(rootPath, 'foo.sock'); - -// connect(outPath, handlePath).then(({ client, driver }) => { -// return driver.getWindows().then(w => { -// console.log(w); -// client.dispose(); -// }); -// }, err => console.error('oh no', err)); - -const opts = { - extensionsPath: '/Users/joao/Desktop/extensions', - userDataDir: '/Users/joao/Desktop/user-data-dir', -}; - -spawn(opts).then(code => { - return code.driver.getWindows().then(w => { - console.log(w); - code.dispose(); - }); -}, err => console.error('oh no', err)); \ No newline at end of file diff --git a/test/smoke2/tsconfig.json b/test/smoke2/tsconfig.json deleted file mode 100644 index 754cc8e4c46..00000000000 --- a/test/smoke2/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "outDir": "out", - "target": "es6", - "strictNullChecks": true - }, - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/test/smoke2/yarn.lock b/test/smoke2/yarn.lock deleted file mode 100644 index 4a70bf942ef..00000000000 --- a/test/smoke2/yarn.lock +++ /dev/null @@ -1,21 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/tmp@^0.0.33": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.33.tgz#1073c4bc824754ae3d10cfab88ab0237ba964e4d" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -typescript@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.1.tgz#6160e4f8f195d5ba81d4876f9c0cc1fbc0820624" From 471425cad6e4ec06a260312b87ef7672ef4c8928 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 10:27:01 +0200 Subject: [PATCH 0581/1070] streamline build --- src/vs/platform/driver/common/driver.ts | 2 + test/smoke/package.json | 13 +- ...{prebuild.js => copy-driver-definition.js} | 0 test/smoke/tools/postbuild.js | 14 - test/smoke/yarn.lock | 773 +++++++++++++++++- 5 files changed, 769 insertions(+), 33 deletions(-) rename test/smoke/tools/{prebuild.js => copy-driver-definition.js} (100%) delete mode 100644 test/smoke/tools/postbuild.js diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 61b98ed7714..8bdfc666f32 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -12,6 +12,8 @@ import { IChannel } from 'vs/base/parts/ipc/common/ipc'; export const ID = 'driverService'; export const IDriver = createDecorator(ID); +// !! Do not remove the following START and END markers, they are parsed by the smoketest build + //*START export interface IElement { tagName: string; diff --git a/test/smoke/package.json b/test/smoke/package.json index 64a3c955faa..7ef30e22158 100644 --- a/test/smoke/package.json +++ b/test/smoke/package.json @@ -4,8 +4,12 @@ "main": "./src/main.js", "scripts": { "postinstall": "npm run compile", - "compile": "node tools/prebuild && tsc && node tools/postbuild", - "watch": "node tools/prebuild && node tools/postbuild && tsc --watch", + "compile": "npm run copy-driver && npm run copy-driver-definition && tsc", + "watch": "concurrently \"npm run watch-driver\" \"npm run watch-driver-definition\" \"tsc --watch\"", + "copy-driver": "cpx src/vscode/driver.js out/vscode", + "watch-driver": "cpx src/vscode/driver.js out/vscode -w", + "copy-driver-definition": "node tools/copy-driver-definition.js", + "watch-driver-definition": "watch \"node tools/copy-driver-definition.js\" ../../src/vs/platform/driver/common", "mocha": "mocha" }, "devDependencies": { @@ -16,6 +20,8 @@ "@types/node": "8.0.33", "@types/rimraf": "2.0.2", "@types/webdriverio": "4.6.1", + "concurrently": "^3.5.1", + "cpx": "^1.5.0", "electron": "1.7.7", "htmlparser2": "^3.9.2", "mkdirp": "^0.5.1", @@ -26,6 +32,7 @@ "spectron": "^3.7.2", "strip-json-comments": "^2.0.1", "tmp": "0.0.33", - "typescript": "2.5.2" + "typescript": "2.5.2", + "watch": "^1.0.2" } } \ No newline at end of file diff --git a/test/smoke/tools/prebuild.js b/test/smoke/tools/copy-driver-definition.js similarity index 100% rename from test/smoke/tools/prebuild.js rename to test/smoke/tools/copy-driver-definition.js diff --git a/test/smoke/tools/postbuild.js b/test/smoke/tools/postbuild.js deleted file mode 100644 index ab71b92633d..00000000000 --- a/test/smoke/tools/postbuild.js +++ /dev/null @@ -1,14 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -const fs = require('fs'); -const path = require('path'); - -const root = path.dirname(__dirname); -const driverPath = path.join(root, 'src/vscode/driver.js'); -const driver = fs.readFileSync(driverPath); - -const outDriverPath = path.join(root, 'out/vscode/driver.js'); -fs.writeFileSync(outDriverPath, driver); diff --git a/test/smoke/yarn.lock b/test/smoke/yarn.lock index 0508d361c3b..a6c8f689aa0 100644 --- a/test/smoke/yarn.lock +++ b/test/smoke/yarn.lock @@ -58,6 +58,17 @@ dependencies: "@types/node" "*" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + ajv@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" @@ -75,6 +86,10 @@ ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -83,12 +98,27 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + ansi-styles@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: color-convert "^1.9.0" +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + archiver-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" @@ -113,10 +143,43 @@ archiver@~2.1.0: tar-stream "^1.5.0" zip-stream "^1.2.0" +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -125,6 +188,14 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + async@^2.0.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" @@ -139,15 +210,23 @@ atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" +aws4@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-runtime@^6.26.0: +babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -164,16 +243,32 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + bl@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" dependencies: readable-stream "^2.0.5" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + bluebird@^2.9.34: version "2.11.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -193,6 +288,14 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -220,6 +323,16 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +chalk@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + chalk@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" @@ -228,6 +341,21 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -262,6 +390,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" + commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -293,6 +425,23 @@ concat-stream@1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concurrently@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" + dependencies: + chalk "0.5.1" + commander "2.6.0" + date-fns "^1.23.0" + lodash "^4.5.1" + rx "2.3.24" + spawn-command "^0.0.2-1" + supports-color "^3.2.3" + tree-kill "^1.1.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + core-js@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" @@ -301,6 +450,22 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + crc32-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" @@ -312,6 +477,12 @@ crc@^3.4.4: version "3.5.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -349,6 +520,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-fns@^1.23.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + debug@2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" @@ -377,6 +552,14 @@ delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + dev-null@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818" @@ -413,6 +596,10 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -490,11 +677,29 @@ es6-promise@^4.0.5: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -extend@~3.0.1: +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -506,6 +711,12 @@ external-editor@^2.0.4: jschardet "^1.4.2" tmp "^0.0.33" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + extract-zip@^1.0.3, extract-zip@^1.6.5: version "1.6.6" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c" @@ -539,6 +750,24 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -546,10 +775,28 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + form-data@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" @@ -579,6 +826,43 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gaze@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" @@ -595,6 +879,25 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" @@ -637,10 +940,21 @@ growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -648,6 +962,12 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -656,6 +976,19 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -669,6 +1002,10 @@ he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" @@ -692,6 +1029,14 @@ htmlparser2@^3.9.2: inherits "^2.0.1" readable-stream "^2.0.2" +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -717,7 +1062,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -748,12 +1093,40 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" dependencies: builtin-modules "^1.0.0" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -770,6 +1143,32 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -786,10 +1185,16 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -810,6 +1215,12 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -824,6 +1235,10 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -833,6 +1248,18 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -906,6 +1333,10 @@ lodash@^4.14.0, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.5.1: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -932,21 +1363,53 @@ meow@^3.1.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" +mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -970,7 +1433,7 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1001,10 +1464,37 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +nan@^2.3.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + ncp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -1014,7 +1504,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -1024,6 +1514,15 @@ npm-install-package@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-2.1.0.tgz#d7efe3cfcd7ab00614b896ea53119dc9ab259125" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nugget@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" @@ -1040,11 +1539,11 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.2: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.0.1: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1052,7 +1551,14 @@ object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" -once@^1.3.0, once@^1.4.0: +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -1071,10 +1577,30 @@ optimist@~0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -os-tmpdir@~1.0.2: +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -1095,6 +1621,10 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -1107,6 +1637,10 @@ pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -1133,6 +1667,10 @@ portastic@^1.0.1: commander "^2.8.1" debug "^2.2.0" +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + pretty-bytes@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" @@ -1144,6 +1682,10 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + progress-stream@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" @@ -1163,6 +1705,10 @@ q@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -1171,6 +1717,13 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + rc@^1.1.2: version "1.2.2" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" @@ -1180,6 +1733,15 @@ rc@^1.1.2: minimist "^1.2.0" strip-json-comments "~2.0.1" +rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -1207,6 +1769,18 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@^2.0.6, readable-stream@^2.1.4: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -1216,6 +1790,15 @@ readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -1227,16 +1810,57 @@ regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" dependencies: is-finite "^1.0.0" +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + request@^2.45.0, request@^2.81.0, request@~2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -1268,6 +1892,12 @@ resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve@^1.1.7: + version "1.7.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.0.tgz#2bdf5374811207285df0df652b78f118ab8f3c5e" + dependencies: + path-parse "^1.0.5" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -1279,7 +1909,7 @@ rgb2hex@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.0.tgz#ccd55f860ae0c5c4ea37504b958e442d8d12325b" -rimraf@^2.2.8, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -1301,6 +1931,10 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rx@2.3.24: + version "2.3.24" + resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" + safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -1309,6 +1943,23 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -1319,6 +1970,12 @@ single-line-log@^1.1.2: dependencies: string-width "^1.0.1" +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" @@ -1344,6 +2001,10 @@ source-map@^0.1.38: dependencies: amdefine ">=0.0.4" +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -1392,7 +2053,7 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -string-width@^1.0.1: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -1417,11 +2078,23 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.5: +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" -strip-ansi@^3.0.0: +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + dependencies: + ansi-regex "^0.2.1" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: @@ -1449,6 +2122,12 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + sumchecker@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" @@ -1468,6 +2147,16 @@ supports-color@3.1.2: dependencies: has-flag "^1.0.0" +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + supports-color@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" @@ -1480,6 +2169,19 @@ supports-color@~5.0.0: dependencies: has-flag "^2.0.0" +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + tar-stream@^1.5.0: version "1.5.5" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" @@ -1489,6 +2191,14 @@ tar-stream@^1.5.0: readable-stream "^2.0.0" xtend "^4.0.0" +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + throttleit@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" @@ -1510,12 +2220,22 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +tree-kill@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -1538,6 +2258,10 @@ typescript@2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.2.tgz#038a95f7d9bbb420b1bf35ba31d4c5c1dd3ffe34" +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + urix@^0.1.0, urix@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -1553,6 +2277,10 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +uuid@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" @@ -1576,6 +2304,13 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +watch@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/watch/-/watch-1.0.2.tgz#340a717bde765726fa0aa07d721e0147a551df0c" + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + wdio-dot-reporter@~0.0.8: version "0.0.9" resolved "https://registry.yarnpkg.com/wdio-dot-reporter/-/wdio-dot-reporter-0.0.9.tgz#929b2adafd49d6b0534fda068e87319b47e38fe5" @@ -1611,6 +2346,12 @@ wgxpath@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz#eef8a4b9d558cc495ad3a9a2b751597ecd9af690" +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" From 812e5af1702a60fca1f1a574075e6f7011663b68 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 10:54:42 +0200 Subject: [PATCH 0582/1070] green git smoke tests! --- .../driver/electron-browser/driver.ts | 29 +++++++++++++++++-- test/smoke/src/areas/editor/editors.ts | 3 +- test/smoke/test/mocha.opts | 2 +- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 8075f851c6b..55202755fea 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -10,6 +10,8 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { IWindowDriver, IElement, WindowDriverChannel, WindowDriverRegistryChannelClient } from 'vs/platform/driver/common/driver'; import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { getTopLeftOffset, getClientArea } from 'vs/base/browser/dom'; +import * as electron from 'electron'; function serializeElement(element: Element, recursive: boolean): IElement { const attributes = Object.create(null); @@ -40,8 +42,31 @@ class WindowDriver implements IWindowDriver { constructor() { } - click(selector: string, xoffset?: number, yoffset?: number): TPromise { - throw new Error('Method not implemented.'); + async click(selector: string, xoffset?: number, yoffset?: number): TPromise { + const element = document.querySelector(selector); + + if (!element) { + throw new Error('Element not found'); + } + + await TPromise.timeout(500); + const { left, top } = getTopLeftOffset(element as HTMLElement); + const { width, height } = getClientArea(element as HTMLElement); + let x: number, y: number; + + if ((typeof xoffset === 'number') || (typeof yoffset === 'number')) { + x = left + xoffset; + y = top + yoffset; + } else { + x = left + (width / 2); + y = top + (height / 2); + } + + const webContents = electron.remote.getCurrentWebContents(); + webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount: 1 } as any); + webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount: 1 } as any); + + await TPromise.timeout(100); } doubleClick(selector: string): TPromise { diff --git a/test/smoke/src/areas/editor/editors.ts b/test/smoke/src/areas/editor/editors.ts index 574b1b48aec..300e57bf965 100644 --- a/test/smoke/src/areas/editor/editors.ts +++ b/test/smoke/src/areas/editor/editors.ts @@ -11,8 +11,7 @@ export class Editors { constructor(private api: API, private commands: Commands) { } async saveOpenedFile(): Promise { - await this.api.waitForElement('.tabs-container div.tab.active.dirty'); - await this.commands.runCommand('File: Save'); + await this.commands.runCommand('workbench.action.files.save'); } async selectTab(tabName: string, untitled: boolean = false): Promise { diff --git a/test/smoke/test/mocha.opts b/test/smoke/test/mocha.opts index ce88473e86b..9f769655625 100644 --- a/test/smoke/test/mocha.opts +++ b/test/smoke/test/mocha.opts @@ -1,3 +1,3 @@ --timeout 20000 ---slow 2000 +--slow 20000 out/main.js \ No newline at end of file From bc553d5263563f2c290acc9158da71b23c553d62 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 10:59:50 +0200 Subject: [PATCH 0583/1070] remove slow timeouts --- src/vs/platform/driver/electron-browser/driver.ts | 1 - test/smoke/src/api.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 55202755fea..b2e8ff6c966 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -49,7 +49,6 @@ class WindowDriver implements IWindowDriver { throw new Error('Element not found'); } - await TPromise.timeout(500); const { left, top } = getTopLeftOffset(element as HTMLElement); const { width, height } = getClientArea(element as HTMLElement); let x: number, y: number; diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index 6fa23dc7862..cbe43c9da25 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -11,7 +11,7 @@ export class API { // waitFor calls should not take more than 200 * 100 = 20 seconds to complete, excluding // the time it takes for the actual retry call to complete private retryCount: number; - private readonly retryDuration = 1000; // in milliseconds + private readonly retryDuration = 100; // in milliseconds constructor( private driver: Driver, From 7fd59a0843180da0a3effc4be229e75143509790 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 11:08:21 +0200 Subject: [PATCH 0584/1070] start debugging with command --- test/smoke/src/areas/debug/debug.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index 013892ed931..4bc0ca33a40 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -72,7 +72,7 @@ export class Debug extends Viewlet { } async startDebugging(): Promise { - await this.api.waitAndClick(START); + await this.commands.runCommand('workbench.action.debug.start'); await this.api.waitForElement(PAUSE); await this.api.waitForElement(DEBUG_STATUS_BAR); const portPrefix = 'Port: '; From 9d6f61914044c5aaccf5f9da16e8cc6118a42cbc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 11:17:22 +0200 Subject: [PATCH 0585/1070] error, missing compilation --- build/lib/compilation.js | 2 +- build/lib/i18n.js | 2 +- build/lib/nls.js | 3 +++ test/smoke/src/areas/debug/debug.ts | 1 - 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build/lib/compilation.js b/build/lib/compilation.js index 61c178b392e..998ebb4f379 100644 --- a/build/lib/compilation.js +++ b/build/lib/compilation.js @@ -22,7 +22,7 @@ var rootDir = path.join(__dirname, '../../src'); var options = require('../../src/tsconfig.json').compilerOptions; options.verbose = false; options.sourceMap = true; -if (process.env['VSCODE_NO_SOURCEMAP']) { +if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry options.sourceMap = false; } options.rootDir = rootDir; diff --git a/build/lib/i18n.js b/build/lib/i18n.js index 6f5558001c4..61893ed8b1d 100644 --- a/build/lib/i18n.js +++ b/build/lib/i18n.js @@ -1083,7 +1083,7 @@ function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pse extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} }; } var externalId = externalExtensions[resource]; - if (!externalId) { + if (!externalId) { // internal extension: remove 'extensions/extensionId/' segnent var secondSlash = path.indexOf('/', firstSlash + 1); extPack.contents[path.substr(secondSlash + 1)] = file.messages; } diff --git a/build/lib/nls.js b/build/lib/nls.js index 7f2730ec891..a63d3699014 100644 --- a/build/lib/nls.js +++ b/build/lib/nls.js @@ -150,13 +150,16 @@ function isImportNode(node) { .filter(function (d) { return d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport; }) .map(function (d) { return d.importClause.namedBindings.name; }) .concat(importEqualsDeclarations.map(function (d) { return d.name; })) + // find read-only references to `nls` .map(function (n) { return service.getReferencesAtPosition(filename, n.pos + 1); }) .flatten() .filter(function (r) { return !r.isWriteAccess; }) + // find the deepest call expressions AST nodes that contain those references .map(function (r) { return collect(sourceFile, function (n) { return isCallExpressionWithinTextSpanCollectStep(r.textSpan, n); }); }) .map(function (a) { return lazy(a).last(); }) .filter(function (n) { return !!n; }) .map(function (n) { return n; }) + // only `localize` calls .filter(function (n) { return n.expression.kind === ts.SyntaxKind.PropertyAccessExpression && n.expression.name.getText() === 'localize'; }); // `localize` named imports var allLocalizeImportDeclarations = importDeclarations diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index 4bc0ca33a40..fcbc755e97f 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -13,7 +13,6 @@ import { findElement, Element } from '../../driver'; const VIEWLET = 'div[id="workbench.view.debug"]'; const DEBUG_VIEW = `${VIEWLET} .debug-view-content`; const CONFIGURE = `div[id="workbench.parts.sidebar"] .actions-container .configure`; -const START = `.icon[title="Start Debugging"]`; const STOP = `.debug-actions-widget .debug-action.stop`; const STEP_OVER = `.debug-actions-widget .debug-action.step-over`; const STEP_IN = `.debug-actions-widget .debug-action.step-into`; From db84fe9c35535b100bd4c50b22fe84b79a13857e Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 11:20:42 +0200 Subject: [PATCH 0586/1070] fix #47325 --- .../decorations/browser/decorationsService.ts | 5 +-- .../test/browser/decorationsService.test.ts | 38 +------------------ 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/src/vs/workbench/services/decorations/browser/decorationsService.ts b/src/vs/workbench/services/decorations/browser/decorationsService.ts index 81e0dc727ed..dfce99a732f 100644 --- a/src/vs/workbench/services/decorations/browser/decorationsService.ts +++ b/src/vs/workbench/services/decorations/browser/decorationsService.ts @@ -249,10 +249,7 @@ class DecorationProviderWrapper { // we make us of that and ignore all uris in which we have never // been interested. for (const uri of uris) { - const value = this.data.get(uri.toString()); - if (value !== undefined) { - this._fetchData(uri); - } + this._fetchData(uri); } } }); diff --git a/src/vs/workbench/services/decorations/test/browser/decorationsService.test.ts b/src/vs/workbench/services/decorations/test/browser/decorationsService.test.ts index aae61fb6c20..631cc2df561 100644 --- a/src/vs/workbench/services/decorations/test/browser/decorationsService.test.ts +++ b/src/vs/workbench/services/decorations/test/browser/decorationsService.test.ts @@ -9,7 +9,7 @@ import * as assert from 'assert'; import { FileDecorationsService } from 'vs/workbench/services/decorations/browser/decorationsService'; import { IDecorationsProvider, IDecorationData } from 'vs/workbench/services/decorations/browser/decorations'; import URI from 'vs/base/common/uri'; -import { Event, toPromise, Emitter } from 'vs/base/common/event'; +import { Event, toPromise } from 'vs/base/common/event'; import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService'; suite('DecorationsService', function () { @@ -169,40 +169,4 @@ suite('DecorationsService', function () { reg.dispose(); }); - - test('Avoid unnecessary decoration change events #46938', async function () { - - let uri1 = URI.parse('file:///uri1.txt'); - let uri2 = URI.parse('file:///uri2.txt'); - - let emitter = new Emitter(); - - let asked = new Set(); - - let reg = service.registerDecorationsProvider({ - label: 'Test', - onDidChange: emitter.event, - provideDecorations(uri: URI) { - asked.add(uri.toString()); - return { tooltip: uri.path, source: 'foo' }; - } - }); - - let deco = service.getDecoration(uri1, false); - assert.equal(deco.tooltip, '/uri1.txt'); - assert.equal(asked.size, 1); - assert.ok(asked.has(uri1.toString())); - - let didChange = toPromise(service.onDidChangeDecorations); - emitter.fire([uri1, uri2]); - - let e = await didChange; - - assert.equal(e.affectsResource(uri1), true); - assert.equal(e.affectsResource(uri2), false); - assert.equal(asked.size, 1); - assert.ok(asked.has(uri1.toString())); - - reg.dispose(); - }); }); From 2f6e59430855c157b898e78cc6ee5169602e2a6a Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 11:29:23 +0200 Subject: [PATCH 0587/1070] green debug tests --- src/vs/platform/driver/electron-browser/driver.ts | 3 +++ test/smoke/src/areas/debug/debug.test.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index b2e8ff6c966..719d0261c3c 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -61,6 +61,9 @@ class WindowDriver implements IWindowDriver { y = top + (height / 2); } + x = Math.round(x); + y = Math.round(y); + const webContents = electron.remote.getCurrentWebContents(); webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount: 1 } as any); webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount: 1 } as any); diff --git a/test/smoke/src/areas/debug/debug.test.ts b/test/smoke/src/areas/debug/debug.test.ts index 05633988f67..4223c58bee3 100644 --- a/test/smoke/src/areas/debug/debug.test.ts +++ b/test/smoke/src/areas/debug/debug.test.ts @@ -54,6 +54,9 @@ export function setup() { it('start debugging', async function () { const app = this.app as SpectronApplication; + // TODO@isidor + await new Promise(c => setTimeout(c, 100)); + port = await app.workbench.debug.startDebugging(); await app.screenCapturer.capture('debugging has started'); From bfe225320565a4c5168c7d133a4c40281e6051ee Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 11:31:28 +0200 Subject: [PATCH 0588/1070] green preferences tests --- .../platform/driver/electron-browser/driver.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 719d0261c3c..e8047cb23a0 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -43,6 +43,14 @@ class WindowDriver implements IWindowDriver { constructor() { } async click(selector: string, xoffset?: number, yoffset?: number): TPromise { + return this._click(selector, 1, xoffset, yoffset); + } + + doubleClick(selector: string): TPromise { + return this._click(selector, 2); + } + + private async _click(selector: string, clickCount: number, xoffset?: number, yoffset?: number): TPromise { const element = document.querySelector(selector); if (!element) { @@ -65,16 +73,12 @@ class WindowDriver implements IWindowDriver { y = Math.round(y); const webContents = electron.remote.getCurrentWebContents(); - webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount: 1 } as any); - webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount: 1 } as any); + webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount } as any); + webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount } as any); await TPromise.timeout(100); } - doubleClick(selector: string): TPromise { - throw new Error('Method not implemented.'); - } - move(selector: string): TPromise { throw new Error('Method not implemented.'); } From d18d301248a33b5386ac082b5b0874709a199701 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 11:38:14 +0200 Subject: [PATCH 0589/1070] green search tests --- src/vs/platform/driver/electron-browser/driver.ts | 15 ++++++++++++--- src/vs/platform/driver/electron-main/driver.ts | 12 ++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index e8047cb23a0..1845fe068d4 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -50,7 +50,7 @@ class WindowDriver implements IWindowDriver { return this._click(selector, 2); } - private async _click(selector: string, clickCount: number, xoffset?: number, yoffset?: number): TPromise { + private async _getElementXY(selector: string, xoffset?: number, yoffset?: number): TPromise<{ x: number; y: number; }> { const element = document.querySelector(selector); if (!element) { @@ -72,6 +72,11 @@ class WindowDriver implements IWindowDriver { x = Math.round(x); y = Math.round(y); + return { x, y }; + } + + private async _click(selector: string, clickCount: number, xoffset?: number, yoffset?: number): TPromise { + const { x, y } = await this._getElementXY(selector, xoffset, yoffset); const webContents = electron.remote.getCurrentWebContents(); webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount } as any); webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount } as any); @@ -79,8 +84,12 @@ class WindowDriver implements IWindowDriver { await TPromise.timeout(100); } - move(selector: string): TPromise { - throw new Error('Method not implemented.'); + async move(selector: string): TPromise { + const { x, y } = await this._getElementXY(selector); + const webContents = electron.remote.getCurrentWebContents(); + webContents.sendInputEvent({ type: 'mouseMove', x, y } as any); + + await TPromise.timeout(100); } async setValue(selector: string, text: string): TPromise { diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 9aa152f8437..77505e14b6b 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -12,7 +12,7 @@ import { serve as serveNet } from 'vs/base/parts/ipc/node/ipc.net'; import { combinedDisposable, IDisposable } from 'vs/base/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IPCServer, IClientRouter } from 'vs/base/parts/ipc/common/ipc'; -import { SimpleKeybinding } from 'vs/base/common/keyCodes'; +import { SimpleKeybinding, KeyCode } from 'vs/base/common/keyCodes'; import { USLayoutResolvedKeybinding } from 'vs/platform/keybinding/common/usLayoutResolvedKeybinding'; import { OS } from 'vs/base/common/platform'; @@ -29,6 +29,10 @@ class WindowRouter implements IClientRouter { } } +function isSilentKeyCode(keyCode: KeyCode) { + return keyCode < KeyCode.KEY_0; +} + export class Driver implements IDriver, IWindowDriverRegistry { _serviceBrand: any; @@ -91,7 +95,11 @@ export class Driver implements IDriver, IWindowDriverRegistry { } webContents.sendInputEvent({ type: 'keyDown', keyCode, modifiers } as any); - webContents.sendInputEvent({ type: 'char', keyCode, modifiers } as any); + + if (!isSilentKeyCode(keybinding.keyCode)) { + webContents.sendInputEvent({ type: 'char', keyCode, modifiers } as any); + } + webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); await TPromise.timeout(100); From 1d143981b45110432de649a8f2d8c1436c107d2c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 Apr 2018 12:06:50 +0200 Subject: [PATCH 0590/1070] Merge fileServices in /node and /electron-browser (fixes #38776) --- src/vs/platform/files/common/files.ts | 5 - .../extensionsTipsService.test.ts | 6 +- .../relauncher.contribution.ts | 8 + .../backupFileService.test.ts | 6 +- .../configurationEditingService.test.ts | 6 +- .../configurationService.test.ts | 12 +- .../files/electron-browser/fileService.ts | 1366 +++++++++++++++-- .../electron-browser/remoteFileService.ts | 8 +- .../services/files/node/fileService.ts | 1288 ---------------- .../fileService.test.ts | 54 +- .../fixtures/resolver/examples/company.js | 0 .../fixtures/resolver/examples/conway.js | 0 .../fixtures/resolver/examples/employee.js | 0 .../fixtures/resolver/examples/small.js | 0 .../fixtures/resolver/index.html | 0 .../fixtures/resolver/other/deep/company.js | 0 .../fixtures/resolver/other/deep/conway.js | 0 .../fixtures/resolver/other/deep/employee.js | 0 .../fixtures/resolver/other/deep/small.js | 0 .../fixtures/resolver/site.css | 0 .../fixtures/service/binary.txt | Bin .../fixtures/service/deep/company.js | 0 .../fixtures/service/deep/conway.js | 0 .../fixtures/service/deep/employee.js | 0 .../fixtures/service/deep/small.js | 0 .../fixtures/service/index.html | 0 .../fixtures/service/lorem.txt | 0 .../fixtures/service/small.txt | 0 .../fixtures/service/small_umlaut.txt | 0 .../fixtures/service/some_utf16le.css | Bin .../fixtures/service/some_utf8_bom.txt | 0 .../resolver.test.ts | 4 +- .../test/{node => electron-browser}/utils.ts | 0 .../watcher.test.ts | 0 .../keybindingEditing.test.ts | 15 +- .../workbench/test/workbenchTestServices.ts | 3 - 36 files changed, 1313 insertions(+), 1468 deletions(-) rename src/vs/workbench/services/backup/test/{node => electron-browser}/backupFileService.test.ts (98%) rename src/vs/workbench/services/configuration/test/{node => electron-browser}/configurationEditingService.test.ts (98%) rename src/vs/workbench/services/configuration/test/{node => electron-browser}/configurationService.test.ts (98%) delete mode 100644 src/vs/workbench/services/files/node/fileService.ts rename src/vs/workbench/services/files/test/{node => electron-browser}/fileService.test.ts (95%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/examples/company.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/examples/conway.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/examples/employee.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/examples/small.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/index.html (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/other/deep/company.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/other/deep/conway.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/other/deep/employee.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/other/deep/small.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/resolver/site.css (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/binary.txt (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/deep/company.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/deep/conway.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/deep/employee.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/deep/small.js (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/index.html (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/lorem.txt (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/small.txt (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/small_umlaut.txt (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/some_utf16le.css (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/fixtures/service/some_utf8_bom.txt (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/resolver.test.ts (97%) rename src/vs/workbench/services/files/test/{node => electron-browser}/utils.ts (100%) rename src/vs/workbench/services/files/test/{node => electron-browser}/watcher.test.ts (100%) rename src/vs/workbench/services/keybinding/test/{node => electron-browser}/keybindingEditing.test.ts (95%) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 38114652f14..8efe3094e5d 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -140,11 +140,6 @@ export interface IFileService { */ unwatchFileChanges(resource: URI): void; - /** - * Configures the file service with the provided options. - */ - updateOptions(options: object): void; - /** * Returns the preferred encoding to use for a given resource. */ diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index 98b711a62e8..3d75afd31e8 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -23,12 +23,12 @@ import { Emitter } from 'vs/base/common/event'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import URI from 'vs/base/common/uri'; import { testWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; import { IFileService } from 'vs/platform/files/common/files'; -import { FileService } from 'vs/workbench/services/files/node/fileService'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import * as extfs from 'vs/base/node/extfs'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { IPager } from 'vs/base/common/paging'; @@ -265,7 +265,7 @@ suite('ExtensionsTipsService Test', () => { const myWorkspace = testWorkspace(URI.from({ scheme: 'file', path: folderDir })); workspaceService = new TestContextService(myWorkspace); instantiationService.stub(IWorkspaceContextService, workspaceService); - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); }); } diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts index cc4f495a0d1..e1b621a5d90 100644 --- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts @@ -26,6 +26,7 @@ interface IConfiguration extends IWindowsConfiguration { telemetry: { enableCrashReporter: boolean }; keyboard: { touchbar: { enabled: boolean } }; workbench: { tree: { horizontalScrolling: boolean } }; + files: { useExperimentalFileWatcher: boolean }; } export class SettingsChangeRelauncher implements IWorkbenchContribution { @@ -40,6 +41,7 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { private touchbarEnabled: boolean; private treeHorizontalScrolling: boolean; private windowsSmoothScrollingWorkaround: boolean; + private experimentalFileWatcher: boolean; private firstFolderResource: URI; private extensionHostRestarter: RunOnceScheduler; @@ -103,6 +105,12 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { changed = true; } + // Experimental File Watcher + if (config.files && typeof config.files.useExperimentalFileWatcher === 'boolean' && config.files.useExperimentalFileWatcher !== this.experimentalFileWatcher) { + this.experimentalFileWatcher = config.files.useExperimentalFileWatcher; + changed = true; + } + // macOS: Touchbar config if (isMacintosh && config.keyboard && config.keyboard.touchbar && typeof config.keyboard.touchbar.enabled === 'boolean' && config.keyboard.touchbar.enabled !== this.touchbarEnabled) { this.touchbarEnabled = config.keyboard.touchbar.enabled; diff --git a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts b/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts similarity index 98% rename from src/vs/workbench/services/backup/test/node/backupFileService.test.ts rename to src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts index aa59da270d7..fc79fe68eeb 100644 --- a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts +++ b/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts @@ -14,9 +14,9 @@ import * as path from 'path'; import * as pfs from 'vs/base/node/pfs'; import Uri from 'vs/base/common/uri'; import { BackupFileService, BackupFilesModel } from 'vs/workbench/services/backup/node/backupFileService'; -import { FileService } from 'vs/workbench/services/files/node/fileService'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { TextModel, createTextBufferFactory } from 'vs/editor/common/model/textModel'; -import { TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; +import { TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestEnvironmentService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { DefaultEndOfLine } from 'vs/editor/common/model'; @@ -38,7 +38,7 @@ const untitledBackupPath = path.join(workspaceBackupPath, 'untitled', crypto.cre class TestBackupFileService extends BackupFileService { constructor(workspace: Uri, backupHome: string, workspacesJsonPath: string) { - const fileService = new FileService(new TestContextService(new Workspace(workspace.fsPath, workspace.fsPath, toWorkspaceFolders([{ path: workspace.fsPath }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true }); + const fileService = new FileService(new TestContextService(new Workspace(workspace.fsPath, workspace.fsPath, toWorkspaceFolders([{ path: workspace.fsPath }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true }); super(workspaceBackupPath, fileService); } diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts similarity index 98% rename from src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts rename to src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts index 0712f46945d..4aa21047fda 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts @@ -18,11 +18,11 @@ import { parseArgs } from 'vs/platform/environment/node/argv'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; import * as extfs from 'vs/base/node/extfs'; -import { TestTextFileService, TestTextResourceConfigurationService, workbenchInstantiationService, TestLifecycleService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextFileService, TestTextResourceConfigurationService, workbenchInstantiationService, TestLifecycleService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; import * as uuid from 'vs/base/common/uuid'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService'; -import { FileService } from 'vs/workbench/services/files/node/fileService'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { ConfigurationEditingService, ConfigurationEditingError, ConfigurationEditingErrorCode } from 'vs/workbench/services/configuration/node/configurationEditingService'; import { IFileService } from 'vs/platform/files/common/files'; import { WORKSPACE_STANDALONE_CONFIGURATIONS } from 'vs/workbench/services/configuration/common/configuration'; @@ -104,7 +104,7 @@ suite('ConfigurationEditingService', () => { instantiationService.stub(IWorkspaceContextService, workspaceService); return workspaceService.initialize(noWorkspace ? {} as IWindowConfiguration : workspaceDir).then(() => { instantiationService.stub(IConfigurationService, workspaceService); - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); instantiationService.stub(ICommandService, CommandService); diff --git a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts similarity index 98% rename from src/vs/workbench/services/configuration/test/node/configurationService.test.ts rename to src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts index 651ce72f7c6..ac651e2834e 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts @@ -24,8 +24,8 @@ import { ConfigurationEditingErrorCode } from 'vs/workbench/services/configurati import { FileChangeType, FileChangesEvent, IFileService } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, WorkbenchState, IWorkspaceFoldersChangeEvent } from 'vs/platform/workspace/common/workspace'; import { ConfigurationTarget, IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; -import { workbenchInstantiationService, TestTextResourceConfigurationService, TestTextFileService, TestLifecycleService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; -import { FileService } from 'vs/workbench/services/files/node/fileService'; +import { workbenchInstantiationService, TestTextResourceConfigurationService, TestTextFileService, TestLifecycleService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; @@ -151,7 +151,7 @@ suite('WorkspaceContextService - Workspace', () => { return workspaceService.initialize({ id: configPath, configPath }).then(() => { - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); workspaceService.setInstantiationService(instantiationService); @@ -409,7 +409,7 @@ suite('WorkspaceService - Initialization', () => { instantiationService.stub(IEnvironmentService, environmentService); return workspaceService.initialize({}).then(() => { - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); workspaceService.setInstantiationService(instantiationService); @@ -667,7 +667,7 @@ suite('WorkspaceConfigurationService - Folder', () => { instantiationService.stub(IEnvironmentService, environmentService); return workspaceService.initialize(folderDir).then(() => { - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); workspaceService.setInstantiationService(instantiationService); @@ -980,7 +980,7 @@ suite('WorkspaceConfigurationService - Multiroot', () => { return workspaceService.initialize({ id: configPath, configPath }).then(() => { - instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), workspaceService, new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); workspaceService.setInstantiationService(instantiationService); diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 7ea4e454d3c..7e459ad3dea 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -2,110 +2,221 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ + 'use strict'; -import * as nls from 'vs/nls'; +import * as paths from 'path'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as crypto from 'crypto'; +import * as assert from 'assert'; +import { isParent, FileOperation, FileOperationEvent, IContent, IFileService, IResolveFileOptions, IResolveFileResult, IResolveContentOptions, IFileStat, IStreamContent, FileOperationError, FileOperationResult, IUpdateContentOptions, FileChangeType, IImportResult, FileChangesEvent, ICreateFileOptions, IContentData, ITextSnapshot, IFilesConfiguration } from 'vs/platform/files/common/files'; +import { MAX_FILE_SIZE, MAX_HEAP_SIZE } from 'vs/platform/files/node/files'; +import { isEqualOrParent } from 'vs/base/common/paths'; +import { ResourceMap } from 'vs/base/common/map'; +import * as arrays from 'vs/base/common/arrays'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import * as paths from 'vs/base/common/paths'; -import * as encoding from 'vs/base/node/encoding'; -import * as errors from 'vs/base/common/errors'; +import * as objects from 'vs/base/common/objects'; +import * as extfs from 'vs/base/node/extfs'; +import { nfcall, ThrottledDelayer } from 'vs/base/common/async'; import uri from 'vs/base/common/uri'; -import { FileOperation, FileOperationEvent, IFileService, IFilesConfiguration, IResolveFileOptions, IFileStat, IResolveFileResult, IContent, IStreamContent, IImportResult, IResolveContentOptions, IUpdateContentOptions, FileChangesEvent, ICreateFileOptions, ITextSnapshot } from 'vs/platform/files/common/files'; -import { FileService as NodeFileService, IFileServiceOptions, IEncodingOverride } from 'vs/workbench/services/files/node/fileService'; -import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; -import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import * as nls from 'vs/nls'; +import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; +import { dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; +import * as pfs from 'vs/base/node/pfs'; +import * as encoding from 'vs/base/node/encoding'; +import * as flow from 'vs/base/node/flow'; +import { FileWatcher as UnixWatcherService } from 'vs/workbench/services/files/node/watcher/unix/watcherService'; +import { FileWatcher as WindowsWatcherService } from 'vs/workbench/services/files/node/watcher/win32/watcherService'; +import { toFileChangesEvent, normalize, IRawFileChange } from 'vs/workbench/services/files/node/watcher/common'; import { Event, Emitter } from 'vs/base/common/event'; -import { shell } from 'electron'; +import { FileWatcher as NsfwWatcherService } from 'vs/workbench/services/files/node/watcher/nsfw/watcherService'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; -import { isMacintosh, isWindows } from 'vs/base/common/platform'; -import product from 'vs/platform/node/product'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation'; +import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; +import { getBaseLabel } from 'vs/base/common/labels'; +import { Readable } from 'stream'; import { Schemas } from 'vs/base/common/network'; -import { Severity, INotificationService } from 'vs/platform/notification/common/notification'; +import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; +import { onUnexpectedError } from 'vs/base/common/errors'; +import product from 'vs/platform/node/product'; import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; +import { shell } from 'electron'; + +export interface IEncodingOverride { + parent?: uri; + extension?: string; + encoding: string; +} + +export interface IFileServiceTestOptions { + tmpDir?: string; + disableWatcher?: boolean; + encodingOverride?: IEncodingOverride[]; +} + +function etag(stat: fs.Stats): string; +function etag(size: number, mtime: number): string; +function etag(arg1: any, arg2?: any): string { + let size: number; + let mtime: number; + if (typeof arg2 === 'number') { + size = arg1; + mtime = arg2; + } else { + size = (arg1).size; + mtime = (arg1).mtime.getTime(); + } + + return `"${crypto.createHash('sha1').update(String(size) + String(mtime)).digest('hex')}"`; +} + +class BufferPool { + + static _64K = new BufferPool(64 * 1024, 5); + + constructor( + readonly bufferSize: number, + private readonly _capacity: number, + private readonly _free: Buffer[] = [], + ) { + // + } + + acquire(): Buffer { + if (this._free.length === 0) { + return Buffer.allocUnsafe(this.bufferSize); + } else { + return this._free.shift(); + } + } + + release(buf: Buffer): void { + if (this._free.length <= this._capacity) { + this._free.push(buf); + } + } +} export class FileService implements IFileService { public _serviceBrand: any; - // If we run with .NET framework < 4.5, we need to detect this error to inform the user + private static readonly FS_EVENT_DELAY = 50; // aggregate and only emit events when changes have stopped for this duration (in ms) + private static readonly FS_REWATCH_DELAY = 300; // delay to rewatch a file that was renamed or deleted (in ms) + private static readonly NET_VERSION_ERROR = 'System.MissingMethodException'; private static readonly NET_VERSION_ERROR_IGNORE_KEY = 'ignoreNetVersionError'; private static readonly ENOSPC_ERROR = 'ENOSPC'; private static readonly ENOSPC_ERROR_IGNORE_KEY = 'ignoreEnospcError'; - private raw: NodeFileService; + protected readonly _onFileChanges: Emitter; + protected readonly _onAfterOperation: Emitter; - private toUnbind: IDisposable[]; + private tmpPath: string; - protected _onFileChanges: Emitter; - protected _onAfterOperation: Emitter; + private toDispose: IDisposable[]; + + private activeWorkspaceFileChangeWatcher: IDisposable; + private activeFileChangesWatchers: ResourceMap; + private fileChangesWatchDelayer: ThrottledDelayer; + private undeliveredRawFileChangesEvents: IRawFileChange[]; + + private useExperimentalFileWatcher: boolean; + private watcherIgnoredPatterns: string[]; + + private encodingOverride: IEncodingOverride[]; constructor( - @IConfigurationService private configurationService: IConfigurationService, - @IWorkspaceContextService private contextService: IWorkspaceContextService, - @IEnvironmentService private environmentService: IEnvironmentService, - @ILifecycleService private lifecycleService: ILifecycleService, - @INotificationService private notificationService: INotificationService, - @IStorageService private storageService: IStorageService, - @ITextResourceConfigurationService textResourceConfigurationService: ITextResourceConfigurationService + private contextService: IWorkspaceContextService, + private environmentService: IEnvironmentService, + private textResourceConfigurationService: ITextResourceConfigurationService, + private configurationService: IConfigurationService, + private lifecycleService: ILifecycleService, + private storageService: IStorageService, + private notificationService: INotificationService, + private options: IFileServiceTestOptions = Object.create(null) ) { - this.toUnbind = []; + this.toDispose = []; + this.tmpPath = this.options.tmpDir || os.tmpdir(); this._onFileChanges = new Emitter(); - this.toUnbind.push(this._onFileChanges); + this.toDispose.push(this._onFileChanges); this._onAfterOperation = new Emitter(); - this.toUnbind.push(this._onAfterOperation); + this.toDispose.push(this._onAfterOperation); + + this.activeFileChangesWatchers = new ResourceMap(); + this.fileChangesWatchDelayer = new ThrottledDelayer(FileService.FS_EVENT_DELAY); + this.undeliveredRawFileChangesEvents = []; const configuration = this.configurationService.getValue(); - let watcherIgnoredPatterns: string[] = []; + this.watcherIgnoredPatterns = []; if (configuration.files && configuration.files.watcherExclude) { - watcherIgnoredPatterns = Object.keys(configuration.files.watcherExclude).filter(k => !!configuration.files.watcherExclude[k]); + this.watcherIgnoredPatterns = Object.keys(configuration.files.watcherExclude).filter(k => !!configuration.files.watcherExclude[k]); } - // build config - const fileServiceConfig: IFileServiceOptions = { - errorLogger: (msg: string) => this.onFileServiceError(msg), - encodingOverride: this.getEncodingOverrides(), - watcherIgnoredPatterns, - verboseLogging: environmentService.verbose, - useExperimentalFileWatcher: configuration.files.useExperimentalFileWatcher, - elevationSupport: { - cliPath: this.environmentService.cliPath, - promptTitle: this.environmentService.appNameLong, - promptIcnsPath: (isMacintosh && this.environmentService.isBuilt) ? paths.join(paths.dirname(this.environmentService.appRoot), `${product.nameShort}.icns`) : void 0 - } - }; + this.useExperimentalFileWatcher = configuration.files && configuration.files.useExperimentalFileWatcher; - // create service - this.raw = new NodeFileService(contextService, environmentService, textResourceConfigurationService, configurationService, lifecycleService, fileServiceConfig); + this.encodingOverride = this.options.encodingOverride || this.getEncodingOverrides(); - // Listeners this.registerListeners(); } - public get onFileChanges(): Event { - return this._onFileChanges.event; + private registerListeners(): void { + + // Wait until we are fully running before starting file watchers + this.lifecycleService.when(LifecyclePhase.Running).then(() => { + this.setupFileWatching(); + }); + + // Workbench State Change + this.toDispose.push(this.contextService.onDidChangeWorkbenchState(() => { + if (this.lifecycleService.phase >= LifecyclePhase.Running) { + this.setupFileWatching(); + } + })); + + // Workspace Folder Change + this.toDispose.push(this.contextService.onDidChangeWorkspaceFolders(() => { + this.encodingOverride = this.getEncodingOverrides(); + })); + + // Lifecycle + this.lifecycleService.onShutdown(this.dispose, this); } - public get onAfterOperation(): Event { - return this._onAfterOperation.event; + private getEncodingOverrides(): IEncodingOverride[] { + const encodingOverride: IEncodingOverride[] = []; + + // Global settings + encodingOverride.push({ parent: uri.file(this.environmentService.appSettingsHome), encoding: encoding.UTF8 }); + + // Workspace files + encodingOverride.push({ extension: WORKSPACE_EXTENSION, encoding: encoding.UTF8 }); + + // Folder Settings + this.contextService.getWorkspace().folders.forEach(folder => { + encodingOverride.push({ parent: uri.file(paths.join(folder.uri.fsPath, '.vscode')), encoding: encoding.UTF8 }); + }); + + return encodingOverride; } - private onFileServiceError(error: string | Error): void { + private handleError(error: string | Error): void { const msg = error ? error.toString() : void 0; if (!msg) { return; } // Forward to unexpected error handler - errors.onUnexpectedError(msg); + onUnexpectedError(msg); // Detect if we run < .NET Framework 4.5 (TODO@ben remove with new watcher impl) if (msg.indexOf(FileService.NET_VERSION_ERROR) >= 0 && !this.storageService.getBoolean(FileService.NET_VERSION_ERROR_IGNORE_KEY, StorageScope.WORKSPACE)) { @@ -142,95 +253,761 @@ export class FileService implements IFileService { } } - private registerListeners(): void { - - // File events - this.toUnbind.push(this.raw.onFileChanges(e => this._onFileChanges.fire(e))); - this.toUnbind.push(this.raw.onAfterOperation(e => this._onAfterOperation.fire(e))); - - // Config changes - this.toUnbind.push(this.configurationService.onDidChangeConfiguration(e => this.onConfigurationChange(e))); - - // Root changes - this.toUnbind.push(this.contextService.onDidChangeWorkspaceFolders(() => this.onDidChangeWorkspaceFolders())); - - // Lifecycle - this.lifecycleService.onShutdown(this.dispose, this); + public get onFileChanges(): Event { + return this._onFileChanges.event; } - private onDidChangeWorkspaceFolders(): void { - this.updateOptions({ encodingOverride: this.getEncodingOverrides() }); + public get onAfterOperation(): Event { + return this._onAfterOperation.event; } - private getEncodingOverrides(): IEncodingOverride[] { - const encodingOverride: IEncodingOverride[] = []; - - // Global settings - encodingOverride.push({ parent: uri.file(this.environmentService.appSettingsHome), encoding: encoding.UTF8 }); - - // Workspace files - encodingOverride.push({ extension: WORKSPACE_EXTENSION, encoding: encoding.UTF8 }); - - // Folder Settings - this.contextService.getWorkspace().folders.forEach(folder => { - encodingOverride.push({ parent: uri.file(paths.join(folder.uri.fsPath, '.vscode')), encoding: encoding.UTF8 }); - }); - - return encodingOverride; - } - - private onConfigurationChange(event: IConfigurationChangeEvent): void { - if (event.affectsConfiguration('files.useExperimentalFileWatcher')) { - this.updateOptions({ useExperimentalFileWatcher: this.configurationService.getValue('files.useExperimentalFileWatcher') }); + public updateOptions(options: IFileServiceTestOptions): void { + if (options) { + objects.mixin(this.options, options); // overwrite current options } } - public updateOptions(options: object): void { - this.raw.updateOptions(options); + private setupFileWatching(): void { + + // dispose old if any + if (this.activeWorkspaceFileChangeWatcher) { + this.activeWorkspaceFileChangeWatcher.dispose(); + } + + // Return if not aplicable + const workbenchState = this.contextService.getWorkbenchState(); + if (workbenchState === WorkbenchState.EMPTY || this.options.disableWatcher) { + return; + } + + // new watcher: use it if setting tells us so or we run in multi-root environment + if (this.useExperimentalFileWatcher || workbenchState === WorkbenchState.WORKSPACE) { + this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupNsfwWorkspaceWatching().startWatching()); + } + + // old watcher + else { + if (isWindows) { + this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupWin32WorkspaceWatching().startWatching()); + } else { + this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupUnixWorkspaceWatching().startWatching()); + } + } + } + + private setupWin32WorkspaceWatching(): WindowsWatcherService { + return new WindowsWatcherService(this.contextService, this.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); + } + + private setupUnixWorkspaceWatching(): UnixWatcherService { + return new UnixWatcherService(this.contextService, this.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); + } + + private setupNsfwWorkspaceWatching(): NsfwWatcherService { + return new NsfwWatcherService(this.contextService, this.configurationService, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); } public resolveFile(resource: uri, options?: IResolveFileOptions): TPromise { - return this.raw.resolveFile(resource, options); + return this.resolve(resource, options); } public resolveFiles(toResolve: { resource: uri, options?: IResolveFileOptions }[]): TPromise { - return this.raw.resolveFiles(toResolve); + return TPromise.join(toResolve.map(resourceAndOptions => this.resolve(resourceAndOptions.resource, resourceAndOptions.options) + .then(stat => ({ stat, success: true }), error => ({ stat: void 0, success: false })))); } public existsFile(resource: uri): TPromise { - return this.raw.existsFile(resource); + return this.resolveFile(resource).then(() => true, () => false); } public resolveContent(resource: uri, options?: IResolveContentOptions): TPromise { - return this.raw.resolveContent(resource, options); + return this.resolveStreamContent(resource, options).then(streamContent => { + return new TPromise((resolve, reject) => { + + const result: IContent = { + resource: streamContent.resource, + name: streamContent.name, + mtime: streamContent.mtime, + etag: streamContent.etag, + encoding: streamContent.encoding, + value: '' + }; + + streamContent.value.on('data', chunk => result.value += chunk); + streamContent.value.on('error', err => reject(err)); + streamContent.value.on('end', _ => resolve(result)); + + return result; + }); + }); } public resolveStreamContent(resource: uri, options?: IResolveContentOptions): TPromise { - return this.raw.resolveStreamContent(resource, options); + + // Guard early against attempts to resolve an invalid file path + if (resource.scheme !== Schemas.file || !resource.fsPath) { + return TPromise.wrapError(new FileOperationError( + nls.localize('fileInvalidPath', "Invalid file resource ({0})", resource.toString(true)), + FileOperationResult.FILE_INVALID_PATH, + options + )); + } + + const result: IStreamContent = { + resource: void 0, + name: void 0, + mtime: void 0, + etag: void 0, + encoding: void 0, + value: void 0 + }; + + const contentResolverTokenSource = new CancellationTokenSource(); + + const onStatError = (error: Error) => { + + // error: stop reading the file the stat and content resolve call + // usually race, mostly likely the stat call will win and cancel + // the content call + contentResolverTokenSource.cancel(); + + // forward error + return TPromise.wrapError(error); + }; + + const statsPromise = this.resolveFile(resource).then(stat => { + result.resource = stat.resource; + result.name = stat.name; + result.mtime = stat.mtime; + result.etag = stat.etag; + + // Return early if resource is a directory + if (stat.isDirectory) { + return onStatError(new FileOperationError( + nls.localize('fileIsDirectoryError', "File is directory"), + FileOperationResult.FILE_IS_DIRECTORY, + options + )); + } + + // Return early if file not modified since + if (options && options.etag && options.etag === stat.etag) { + return onStatError(new FileOperationError( + nls.localize('fileNotModifiedError', "File not modified since"), + FileOperationResult.FILE_NOT_MODIFIED_SINCE, + options + )); + } + + // Return early if file is too large to load + if (typeof stat.size === 'number') { + if (stat.size > Math.max(this.environmentService.args['max-memory'] * 1024 * 1024 || 0, MAX_HEAP_SIZE)) { + return onStatError(new FileOperationError( + nls.localize('fileTooLargeForHeapError', "To open a file of this size, you need to restart VS Code and allow it to use more memory"), + FileOperationResult.FILE_EXCEED_MEMORY_LIMIT + )); + } + + if (stat.size > MAX_FILE_SIZE) { + return onStatError(new FileOperationError( + nls.localize('fileTooLargeError', "File too large to open"), + FileOperationResult.FILE_TOO_LARGE + )); + } + } + + return void 0; + }, err => { + + // Wrap file not found errors + if (err.code === 'ENOENT') { + return onStatError(new FileOperationError( + nls.localize('fileNotFoundError', "File not found ({0})", resource.toString(true)), + FileOperationResult.FILE_NOT_FOUND, + options + )); + } + + return onStatError(err); + }); + + let completePromise: Thenable; + + // await the stat iff we already have an etag so that we compare the + // etag from the stat before we actually read the file again. + if (options && options.etag) { + completePromise = statsPromise.then(() => { + return this.fillInContents(result, resource, options, contentResolverTokenSource.token); // Waterfall -> only now resolve the contents + }); + } + + // a fresh load without a previous etag which means we can resolve the file stat + // and the content at the same time, avoiding the waterfall. + else { + completePromise = Promise.all([statsPromise, this.fillInContents(result, resource, options, contentResolverTokenSource.token)]); + } + + return TPromise.wrap(completePromise).then(() => { + contentResolverTokenSource.dispose(); + + return result; + }); } - public updateContent(resource: uri, value: string | ITextSnapshot, options?: IUpdateContentOptions): TPromise { - return this.raw.updateContent(resource, value, options); + private fillInContents(content: IStreamContent, resource: uri, options: IResolveContentOptions, token: CancellationToken): Thenable { + return this.resolveFileData(resource, options, token).then(data => { + content.encoding = data.encoding; + content.value = data.stream; + }); } - public moveFile(source: uri, target: uri, overwrite?: boolean): TPromise { - return this.raw.moveFile(source, target, overwrite); + private resolveFileData(resource: uri, options: IResolveContentOptions, token: CancellationToken): Thenable { + + const chunkBuffer = BufferPool._64K.acquire(); + + const result: IContentData = { + encoding: void 0, + stream: void 0 + }; + + return new Promise((resolve, reject) => { + fs.open(this.toAbsolutePath(resource), 'r', (err, fd) => { + if (err) { + if (err.code === 'ENOENT') { + // Wrap file not found errors + err = new FileOperationError( + nls.localize('fileNotFoundError', "File not found ({0})", resource.toString(true)), + FileOperationResult.FILE_NOT_FOUND, + options + ); + } + + return reject(err); + } + + let decoder: NodeJS.ReadWriteStream; + let totalBytesRead = 0; + + const finish = (err?: any) => { + + if (err) { + if (err.code === 'EISDIR') { + // Wrap EISDIR errors (fs.open on a directory works, but you cannot read from it) + err = new FileOperationError( + nls.localize('fileIsDirectoryError', "File is directory"), + FileOperationResult.FILE_IS_DIRECTORY, + options + ); + } + if (decoder) { + // If the decoder already started, we have to emit the error through it as + // event because the promise is already resolved! + decoder.emit('error', err); + } else { + reject(err); + } + } + if (decoder) { + decoder.end(); + } + + // return the shared buffer + BufferPool._64K.release(chunkBuffer); + + if (fd) { + fs.close(fd, err => { + if (err) { + this.handleError(`resolveFileData#close(): ${err.toString()}`); + } + }); + } + }; + + const handleChunk = (bytesRead: number) => { + if (token.isCancellationRequested) { + // cancellation -> finish + finish(new Error('cancelled')); + } else if (bytesRead === 0) { + // no more data -> finish + finish(); + } else if (bytesRead < chunkBuffer.length) { + // write the sub-part of data we received -> repeat + decoder.write(chunkBuffer.slice(0, bytesRead), readChunk); + } else { + // write all data we received -> repeat + decoder.write(chunkBuffer, readChunk); + } + }; + + let currentPosition: number = (options && options.position) || null; + + const readChunk = () => { + fs.read(fd, chunkBuffer, 0, chunkBuffer.length, currentPosition, (err, bytesRead) => { + totalBytesRead += bytesRead; + + if (typeof currentPosition === 'number') { + // if we received a position argument as option we need to ensure that + // we advance the position by the number of bytesread + currentPosition += bytesRead; + } + + if (totalBytesRead > Math.max(this.environmentService.args['max-memory'] * 1024 * 1024 || 0, MAX_HEAP_SIZE)) { + finish(new FileOperationError( + nls.localize('fileTooLargeForHeapError', "To open a file of this size, you need to restart VS Code and allow it to use more memory"), + FileOperationResult.FILE_EXCEED_MEMORY_LIMIT + )); + } + + if (totalBytesRead > MAX_FILE_SIZE) { + // stop when reading too much + finish(new FileOperationError( + nls.localize('fileTooLargeError', "File too large to open"), + FileOperationResult.FILE_TOO_LARGE, + options + )); + } else if (err) { + // some error happened + finish(err); + + } else if (decoder) { + // pass on to decoder + handleChunk(bytesRead); + + } else { + // when receiving the first chunk of data we need to create the + // decoding stream which is then used to drive the string stream. + TPromise.as(encoding.detectEncodingFromBuffer( + { buffer: chunkBuffer, bytesRead }, + options && options.autoGuessEncoding || this.configuredAutoGuessEncoding(resource) + )).then(detected => { + + if (options && options.acceptTextOnly && detected.seemsBinary) { + // Return error early if client only accepts text and this is not text + finish(new FileOperationError( + nls.localize('fileBinaryError', "File seems to be binary and cannot be opened as text"), + FileOperationResult.FILE_IS_BINARY, + options + )); + + } else { + result.encoding = this.getEncoding(resource, this.getPeferredEncoding(resource, options, detected)); + result.stream = decoder = encoding.decodeStream(result.encoding); + resolve(result); + handleChunk(bytesRead); + } + + }).then(void 0, err => { + // failed to get encoding + finish(err); + }); + } + }); + }; + + // start reading + readChunk(); + }); + }); } - public copyFile(source: uri, target: uri, overwrite?: boolean): TPromise { - return this.raw.copyFile(source, target, overwrite); + public updateContent(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { + if (options.writeElevated) { + return this.doUpdateContentElevated(resource, value, options); + } + + return this.doUpdateContent(resource, value, options); } - public createFile(resource: uri, content?: string, options?: ICreateFileOptions): TPromise { - return this.raw.createFile(resource, content, options); + private doUpdateContent(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { + const absolutePath = this.toAbsolutePath(resource); + + // 1.) check file for writing + return this.checkFileBeforeWriting(absolutePath, options).then(exists => { + let createParentsPromise: TPromise; + if (exists) { + createParentsPromise = TPromise.as(null); + } else { + createParentsPromise = pfs.mkdirp(paths.dirname(absolutePath)); + } + + // 2.) create parents as needed + return createParentsPromise.then(() => { + const encodingToWrite = this.getEncoding(resource, options.encoding); + let addBomPromise: TPromise = TPromise.as(false); + + // UTF_16 BE and LE as well as UTF_8 with BOM always have a BOM + if (encodingToWrite === encoding.UTF16be || encodingToWrite === encoding.UTF16le || encodingToWrite === encoding.UTF8_with_bom) { + addBomPromise = TPromise.as(true); + } + + // Existing UTF-8 file: check for options regarding BOM + else if (exists && encodingToWrite === encoding.UTF8) { + if (options.overwriteEncoding) { + addBomPromise = TPromise.as(false); // if we are to overwrite the encoding, we do not preserve it if found + } else { + addBomPromise = encoding.detectEncodingByBOM(absolutePath).then(enc => enc === encoding.UTF8); // otherwise preserve it if found + } + } + + // 3.) check to add UTF BOM + return addBomPromise.then(addBom => { + + // 4.) set contents and resolve + return this.doSetContentsAndResolve(resource, absolutePath, value, addBom, encodingToWrite).then(void 0, error => { + if (!exists || error.code !== 'EPERM' || !isWindows) { + return TPromise.wrapError(error); + } + + // On Windows and if the file exists with an EPERM error, we try a different strategy of saving the file + // by first truncating the file and then writing with r+ mode. This helps to save hidden files on Windows + // (see https://github.com/Microsoft/vscode/issues/931) + + // 5.) truncate + return pfs.truncate(absolutePath, 0).then(() => { + + // 6.) set contents (this time with r+ mode) and resolve again + return this.doSetContentsAndResolve(resource, absolutePath, value, addBom, encodingToWrite, { flag: 'r+' }); + }); + }); + }); + }); + }).then(null, error => { + if (error.code === 'EACCES' || error.code === 'EPERM') { + return TPromise.wrapError(new FileOperationError( + nls.localize('filePermission', "Permission denied writing to file ({0})", resource.toString(true)), + FileOperationResult.FILE_PERMISSION_DENIED, + options + )); + } + + return TPromise.wrapError(error); + }); + } + + private doSetContentsAndResolve(resource: uri, absolutePath: string, value: string | ITextSnapshot, addBOM: boolean, encodingToWrite: string, options?: { mode?: number; flag?: string; }): TPromise { + let writeFilePromise: TPromise; + + // Configure encoding related options as needed + const writeFileOptions: extfs.IWriteFileOptions = options ? options : Object.create(null); + if (addBOM || encodingToWrite !== encoding.UTF8) { + writeFileOptions.encoding = { + charset: encodingToWrite, + addBOM + }; + } + + if (typeof value === 'string') { + writeFilePromise = pfs.writeFile(absolutePath, value, writeFileOptions); + } else { + writeFilePromise = pfs.writeFile(absolutePath, this.snapshotToReadableStream(value), writeFileOptions); + } + + // set contents + return writeFilePromise.then(() => { + + // resolve + return this.resolve(resource); + }); + } + + private snapshotToReadableStream(snapshot: ITextSnapshot): NodeJS.ReadableStream { + return new Readable({ + read: function () { + try { + let chunk: string; + let canPush = true; + + // Push all chunks as long as we can push and as long as + // the underlying snapshot returns strings to us + while (canPush && typeof (chunk = snapshot.read()) === 'string') { + canPush = this.push(chunk); + } + + // Signal EOS by pushing NULL + if (typeof chunk !== 'string') { + this.push(null); + } + } catch (error) { + this.emit('error', error); + } + }, + encoding: encoding.UTF8 // very important, so that strings are passed around and not buffers! + }); + } + + private doUpdateContentElevated(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { + const absolutePath = this.toAbsolutePath(resource); + + // 1.) check file for writing + return this.checkFileBeforeWriting(absolutePath, options, options.overwriteReadonly /* ignore readonly if we overwrite readonly, this is handled via sudo later */).then(exists => { + const writeOptions: IUpdateContentOptions = objects.assign(Object.create(null), options); + writeOptions.writeElevated = false; + writeOptions.encoding = this.getEncoding(resource, options.encoding); + + // 2.) write to a temporary file to be able to copy over later + const tmpPath = paths.join(this.tmpPath, `code-elevated-${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 6)}`); + return this.updateContent(uri.file(tmpPath), value, writeOptions).then(() => { + + // 3.) invoke our CLI as super user + return (import('sudo-prompt')).then(sudoPrompt => { + return new TPromise((c, e) => { + const promptOptions = { + name: this.environmentService.appNameLong.replace('-', ''), + icns: (isMacintosh && this.environmentService.isBuilt) ? paths.join(paths.dirname(this.environmentService.appRoot), `${product.nameShort}.icns`) : void 0 + }; + + const sudoCommand: string[] = [`"${this.environmentService.cliPath}"`]; + if (options.overwriteReadonly) { + sudoCommand.push('--file-chmod'); + } + sudoCommand.push('--file-write', `"${tmpPath}"`, `"${absolutePath}"`); + + sudoPrompt.exec(sudoCommand.join(' '), promptOptions, (error: string, stdout: string, stderr: string) => { + if (error || stderr) { + e(error || stderr); + } else { + c(void 0); + } + }); + }); + }).then(() => { + + // 3.) delete temp file + return pfs.del(tmpPath, this.tmpPath).then(() => { + + // 4.) resolve again + return this.resolve(resource); + }); + }); + }); + }).then(null, error => { + if (this.environmentService.verbose) { + this.handleError(`Unable to write to file '${resource.toString(true)}' as elevated user (${error})`); + } + + if (!FileOperationError.isFileOperationError(error)) { + error = new FileOperationError( + nls.localize('filePermission', "Permission denied writing to file ({0})", resource.toString(true)), + FileOperationResult.FILE_PERMISSION_DENIED, + options + ); + } + + return TPromise.wrapError(error); + }); + } + + public createFile(resource: uri, content: string = '', options: ICreateFileOptions = Object.create(null)): TPromise { + const absolutePath = this.toAbsolutePath(resource); + + let checkFilePromise: TPromise; + if (options.overwrite) { + checkFilePromise = TPromise.as(false); + } else { + checkFilePromise = pfs.exists(absolutePath); + } + + // Check file exists + return checkFilePromise.then(exists => { + if (exists && !options.overwrite) { + return TPromise.wrapError(new FileOperationError( + nls.localize('fileExists', "File to create already exists ({0})", resource.toString(true)), + FileOperationResult.FILE_MODIFIED_SINCE, + options + )); + } + + // Create file + return this.updateContent(resource, content).then(result => { + + // Events + this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, result)); + + return result; + }); + }); } public createFolder(resource: uri): TPromise { - return this.raw.createFolder(resource); + + // 1.) Create folder + const absolutePath = this.toAbsolutePath(resource); + return pfs.mkdirp(absolutePath).then(() => { + + // 2.) Resolve + return this.resolve(resource).then(result => { + + // Events + this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, result)); + + return result; + }); + }); + } + + private checkFileBeforeWriting(absolutePath: string, options: IUpdateContentOptions = Object.create(null), ignoreReadonly?: boolean): TPromise { + return pfs.exists(absolutePath).then(exists => { + if (exists) { + return pfs.stat(absolutePath).then(stat => { + if (stat.isDirectory()) { + return TPromise.wrapError(new Error('Expected file is actually a directory')); + } + + // Dirty write prevention: if the file on disk has been changed and does not match our expected + // mtime and etag, we bail out to prevent dirty writing. + // + // First, we check for a mtime that is in the future before we do more checks. The assumption is + // that only the mtime is an indicator for a file that has changd on disk. + // + // Second, if the mtime has advanced, we compare the size of the file on disk with our previous + // one using the etag() function. Relying only on the mtime check has prooven to produce false + // positives due to file system weirdness (especially around remote file systems). As such, the + // check for size is a weaker check because it can return a false negative if the file has changed + // but to the same length. This is a compromise we take to avoid having to produce checksums of + // the file content for comparison which would be much slower to compute. + if (typeof options.mtime === 'number' && typeof options.etag === 'string' && options.mtime < stat.mtime.getTime() && options.etag !== etag(stat.size, options.mtime)) { + return TPromise.wrapError(new FileOperationError(nls.localize('fileModifiedError', "File Modified Since"), FileOperationResult.FILE_MODIFIED_SINCE, options)); + } + + // Throw if file is readonly and we are not instructed to overwrite + if (!ignoreReadonly && !(stat.mode & 128) /* readonly */) { + if (!options.overwriteReadonly) { + return this.readOnlyError(options); + } + + // Try to change mode to writeable + let mode = stat.mode; + mode = mode | 128; + return pfs.chmod(absolutePath, mode).then(() => { + + // Make sure to check the mode again, it could have failed + return pfs.stat(absolutePath).then(stat => { + if (!(stat.mode & 128) /* readonly */) { + return this.readOnlyError(options); + } + + return exists; + }); + }); + } + + return TPromise.as(exists); + }); + } + + return TPromise.as(exists); + }); + } + + private readOnlyError(options: IUpdateContentOptions): TPromise { + return TPromise.wrapError(new FileOperationError( + nls.localize('fileReadOnlyError', "File is Read Only"), + FileOperationResult.FILE_READ_ONLY, + options + )); } public rename(resource: uri, newName: string): TPromise { - return this.raw.rename(resource, newName); + const newPath = paths.join(paths.dirname(resource.fsPath), newName); + + return this.moveFile(resource, uri.file(newPath)); + } + + public moveFile(source: uri, target: uri, overwrite?: boolean): TPromise { + return this.moveOrCopyFile(source, target, false, overwrite); + } + + public copyFile(source: uri, target: uri, overwrite?: boolean): TPromise { + return this.moveOrCopyFile(source, target, true, overwrite); + } + + private moveOrCopyFile(source: uri, target: uri, keepCopy: boolean, overwrite: boolean): TPromise { + const sourcePath = this.toAbsolutePath(source); + const targetPath = this.toAbsolutePath(target); + + // 1.) move / copy + return this.doMoveOrCopyFile(sourcePath, targetPath, keepCopy, overwrite).then(() => { + + // 2.) resolve + return this.resolve(target).then(result => { + + // Events + this._onAfterOperation.fire(new FileOperationEvent(source, keepCopy ? FileOperation.COPY : FileOperation.MOVE, result)); + + return result; + }); + }); + } + + private doMoveOrCopyFile(sourcePath: string, targetPath: string, keepCopy: boolean, overwrite: boolean): TPromise { + + // 1.) validate operation + if (isParent(targetPath, sourcePath, !isLinux)) { + return TPromise.wrapError(new Error('Unable to move/copy when source path is parent of target path')); + } + + // 2.) check if target exists + return pfs.exists(targetPath).then(exists => { + const isCaseRename = sourcePath.toLowerCase() === targetPath.toLowerCase(); + const isSameFile = sourcePath === targetPath; + + // Return early with conflict if target exists and we are not told to overwrite + if (exists && !isCaseRename && !overwrite) { + return TPromise.wrapError(new FileOperationError(nls.localize('fileMoveConflict', "Unable to move/copy. File already exists at destination."), FileOperationResult.FILE_MOVE_CONFLICT)); + } + + // 3.) make sure target is deleted before we move/copy unless this is a case rename of the same file + let deleteTargetPromise = TPromise.wrap(void 0); + if (exists && !isCaseRename) { + if (isEqualOrParent(sourcePath, targetPath, !isLinux /* ignorecase */)) { + return TPromise.wrapError(new Error(nls.localize('unableToMoveCopyError', "Unable to move/copy. File would replace folder it is contained in."))); // catch this corner case! + } + + deleteTargetPromise = this.del(uri.file(targetPath)); + } + + return deleteTargetPromise.then(() => { + + // 4.) make sure parents exists + return pfs.mkdirp(paths.dirname(targetPath)).then(() => { + + // 4.) copy/move + if (isSameFile) { + return TPromise.wrap(null); + } else if (keepCopy) { + return nfcall(extfs.copy, sourcePath, targetPath); + } else { + return nfcall(extfs.mv, sourcePath, targetPath); + } + }).then(() => exists); + }); + }); + } + + public importFile(source: uri, targetFolder: uri): TPromise { + const sourcePath = this.toAbsolutePath(source); + const targetResource = uri.file(paths.join(targetFolder.fsPath, paths.basename(source.fsPath))); + const targetPath = this.toAbsolutePath(targetResource); + + // 1.) resolve + return pfs.stat(sourcePath).then(stat => { + if (stat.isDirectory()) { + return TPromise.wrapError(new Error(nls.localize('foldersCopyError', "Folders cannot be copied into the workspace. Please select individual files to copy them."))); // for now we do not allow to import a folder into a workspace + } + + // 2.) copy + return this.doMoveOrCopyFile(sourcePath, targetPath, true, true).then(exists => { + + // 3.) resolve + return this.resolve(targetResource).then(stat => { + + // Events + this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.IMPORT, stat)); + + return { isNew: !exists, stat }; + }); + }); + }); } public del(resource: uri, useTrash?: boolean): TPromise { @@ -238,7 +1015,7 @@ export class FileService implements IFileService { return this.doMoveItemToTrash(resource); } - return this.raw.del(resource); + return this.doDelete(resource); } private doMoveItemToTrash(resource: uri): TPromise { @@ -253,44 +1030,367 @@ export class FileService implements IFileService { return TPromise.as(null); } - public importFile(source: uri, targetFolder: uri): TPromise { - return this.raw.importFile(source, targetFolder).then((result) => { - return { - isNew: result && result.isNew, - stat: result && result.stat - }; + private doDelete(resource: uri): TPromise { + const absolutePath = this.toAbsolutePath(resource); + + return pfs.del(absolutePath, this.tmpPath).then(() => { + + // Events + this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.DELETE)); }); } - public watchFileChanges(resource: uri): void { - if (!resource) { - return; + // Helpers + + private toAbsolutePath(arg1: uri | IFileStat): string { + let resource: uri; + if (arg1 instanceof uri) { + resource = arg1; + } else { + resource = (arg1).resource; } - if (resource.scheme !== Schemas.file) { - return; // only support files - } + assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource: ${resource}`); - // return early if the resource is inside the workspace for which we have another watcher in place - if (this.contextService.isInsideWorkspace(resource)) { - return; - } - - this.raw.watchFileChanges(resource); + return paths.normalize(resource.fsPath); } - public unwatchFileChanges(resource: uri): void { - this.raw.unwatchFileChanges(resource); + private resolve(resource: uri, options: IResolveFileOptions = Object.create(null)): TPromise { + return this.toStatResolver(resource) + .then(model => model.resolve(options)); + } + + private toStatResolver(resource: uri): TPromise { + const absolutePath = this.toAbsolutePath(resource); + + return pfs.statLink(absolutePath).then(({ isSymbolicLink, stat }) => { + return new StatResolver(resource, isSymbolicLink, stat.isDirectory(), stat.mtime.getTime(), stat.size, this.environmentService.verbose ? err => this.handleError(err) : void 0); + }); + } + + private getPeferredEncoding(resource: uri, options: IResolveContentOptions, detected: encoding.IDetectedEncodingResult): string { + let preferredEncoding: string; + if (options && options.encoding) { + if (detected.encoding === encoding.UTF8 && options.encoding === encoding.UTF8) { + preferredEncoding = encoding.UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 + } else { + preferredEncoding = options.encoding; // give passed in encoding highest priority + } + } else if (detected.encoding) { + if (detected.encoding === encoding.UTF8) { + preferredEncoding = encoding.UTF8_with_bom; // if we detected UTF-8, it can only be because of a BOM + } else { + preferredEncoding = detected.encoding; + } + } else if (this.configuredEncoding(resource) === encoding.UTF8_with_bom) { + preferredEncoding = encoding.UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then + } + return preferredEncoding; } public getEncoding(resource: uri, preferredEncoding?: string): string { - return this.raw.getEncoding(resource, preferredEncoding); + let fileEncoding: string; + + const override = this.getEncodingOverride(resource); + if (override) { + fileEncoding = override; + } else if (preferredEncoding) { + fileEncoding = preferredEncoding; + } else { + fileEncoding = this.configuredEncoding(resource); + } + + if (!fileEncoding || !encoding.encodingExists(fileEncoding)) { + fileEncoding = encoding.UTF8; // the default is UTF 8 + } + + return fileEncoding; + } + + private configuredAutoGuessEncoding(resource: uri): boolean { + return this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding'); + } + + private configuredEncoding(resource: uri): string { + return this.textResourceConfigurationService.getValue(resource, 'files.encoding'); + } + + private getEncodingOverride(resource: uri): string { + if (resource && this.encodingOverride && this.encodingOverride.length) { + for (let i = 0; i < this.encodingOverride.length; i++) { + const override = this.encodingOverride[i]; + + // check if the resource is child of encoding override path + if (override.parent && isParent(resource.fsPath, override.parent.fsPath, !isLinux /* ignorecase */)) { + return override.encoding; + } + + // check if the resource extension is equal to encoding override + if (override.extension && paths.extname(resource.fsPath) === `.${override.extension}`) { + return override.encoding; + } + } + } + + return null; + } + + public watchFileChanges(resource: uri): void { + assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource for watching: ${resource}`); + + // Create or get watcher for provided path + let watcher = this.activeFileChangesWatchers.get(resource); + if (!watcher) { + const fsPath = resource.fsPath; + const fsName = paths.basename(resource.fsPath); + + watcher = extfs.watch(fsPath, (eventType: string, filename: string) => { + const renamedOrDeleted = ((filename && filename !== fsName) || eventType === 'rename'); + + // The file was either deleted or renamed. Many tools apply changes to files in an + // atomic way ("Atomic Save") by first renaming the file to a temporary name and then + // renaming it back to the original name. Our watcher will detect this as a rename + // and then stops to work on Mac and Linux because the watcher is applied to the + // inode and not the name. The fix is to detect this case and trying to watch the file + // again after a certain delay. + // In addition, we send out a delete event if after a timeout we detect that the file + // does indeed not exist anymore. + if (renamedOrDeleted) { + + // Very important to dispose the watcher which now points to a stale inode + this.unwatchFileChanges(resource); + + // Wait a bit and try to install watcher again, assuming that the file was renamed quickly ("Atomic Save") + setTimeout(() => { + this.existsFile(resource).done(exists => { + + // File still exists, so reapply the watcher + if (exists) { + this.watchFileChanges(resource); + } + + // File seems to be really gone, so emit a deleted event + else { + this.onRawFileChange({ + type: FileChangeType.DELETED, + path: fsPath + }); + } + }); + }, FileService.FS_REWATCH_DELAY); + } + + // Handle raw file change + this.onRawFileChange({ + type: FileChangeType.UPDATED, + path: fsPath + }); + }, (error: string) => this.handleError(error)); + + if (watcher) { + this.activeFileChangesWatchers.set(resource, watcher); + } + } + } + + private onRawFileChange(event: IRawFileChange): void { + + // add to bucket of undelivered events + this.undeliveredRawFileChangesEvents.push(event); + + if (this.environmentService.verbose) { + console.log('%c[node.js Watcher]%c', 'color: green', 'color: black', event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', event.path); + } + + // handle emit through delayer to accommodate for bulk changes + this.fileChangesWatchDelayer.trigger(() => { + const buffer = this.undeliveredRawFileChangesEvents; + this.undeliveredRawFileChangesEvents = []; + + // Normalize + const normalizedEvents = normalize(buffer); + + // Logging + if (this.environmentService.verbose) { + normalizedEvents.forEach(r => { + console.log('%c[node.js Watcher]%c >> normalized', 'color: green', 'color: black', r.type === FileChangeType.ADDED ? '[ADDED]' : r.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', r.path); + }); + } + + // Emit + this._onFileChanges.fire(toFileChangesEvent(normalizedEvents)); + + return TPromise.as(null); + }); + } + + public unwatchFileChanges(resource: uri): void { + const watcher = this.activeFileChangesWatchers.get(resource); + if (watcher) { + watcher.close(); + this.activeFileChangesWatchers.delete(resource); + } } public dispose(): void { - this.toUnbind = dispose(this.toUnbind); + this.toDispose = dispose(this.toDispose); - // Dispose service - this.raw.dispose(); + if (this.activeWorkspaceFileChangeWatcher) { + this.activeWorkspaceFileChangeWatcher.dispose(); + this.activeWorkspaceFileChangeWatcher = null; + } + + this.activeFileChangesWatchers.forEach(watcher => watcher.close()); + this.activeFileChangesWatchers.clear(); + } +} + +export class StatResolver { + private name: string; + private etag: string; + + constructor( + private resource: uri, + private isSymbolicLink: boolean, + private isDirectory: boolean, + private mtime: number, + private size: number, + private errorLogger?: (error: Error | string) => void + ) { + assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource: ${resource}`); + + this.name = getBaseLabel(resource); + this.etag = etag(size, mtime); + } + + public resolve(options: IResolveFileOptions): TPromise { + + // General Data + const fileStat: IFileStat = { + resource: this.resource, + isDirectory: this.isDirectory, + isSymbolicLink: this.isSymbolicLink, + name: this.name, + etag: this.etag, + size: this.size, + mtime: this.mtime + }; + + // File Specific Data + if (!this.isDirectory) { + return TPromise.as(fileStat); + } + + // Directory Specific Data + else { + + // Convert the paths from options.resolveTo to absolute paths + let absoluteTargetPaths: string[] = null; + if (options && options.resolveTo) { + absoluteTargetPaths = []; + options.resolveTo.forEach(resource => { + absoluteTargetPaths.push(resource.fsPath); + }); + } + + return new TPromise((c, e) => { + + // Load children + this.resolveChildren(this.resource.fsPath, absoluteTargetPaths, options && options.resolveSingleChildDescendants, children => { + children = arrays.coalesce(children); // we don't want those null children (could be permission denied when reading a child) + fileStat.children = children || []; + + c(fileStat); + }); + }); + } + } + + private resolveChildren(absolutePath: string, absoluteTargetPaths: string[], resolveSingleChildDescendants: boolean, callback: (children: IFileStat[]) => void): void { + extfs.readdir(absolutePath, (error: Error, files: string[]) => { + if (error) { + if (this.errorLogger) { + this.errorLogger(error); + } + + return callback(null); // return - we might not have permissions to read the folder + } + + // for each file in the folder + flow.parallel(files, (file: string, clb: (error: Error, children: IFileStat) => void) => { + const fileResource = uri.file(paths.resolve(absolutePath, file)); + let fileStat: fs.Stats; + let isSymbolicLink = false; + const $this = this; + + flow.sequence( + function onError(error: Error): void { + if ($this.errorLogger) { + $this.errorLogger(error); + } + + clb(null, null); // return - we might not have permissions to read the folder or stat the file + }, + + function stat(this: any): void { + extfs.statLink(fileResource.fsPath, this); + }, + + function countChildren(this: any, statAndLink: extfs.IStatAndLink): void { + fileStat = statAndLink.stat; + isSymbolicLink = statAndLink.isSymbolicLink; + + if (fileStat.isDirectory()) { + extfs.readdir(fileResource.fsPath, (error, result) => { + this(null, result ? result.length : 0); + }); + } else { + this(null, 0); + } + }, + + function resolve(childCount: number): void { + const childStat: IFileStat = { + resource: fileResource, + isDirectory: fileStat.isDirectory(), + isSymbolicLink, + name: file, + mtime: fileStat.mtime.getTime(), + etag: etag(fileStat), + size: fileStat.size + }; + + // Return early for files + if (!fileStat.isDirectory()) { + return clb(null, childStat); + } + + // Handle Folder + let resolveFolderChildren = false; + if (files.length === 1 && resolveSingleChildDescendants) { + resolveFolderChildren = true; + } else if (childCount > 0 && absoluteTargetPaths && absoluteTargetPaths.some(targetPath => isEqualOrParent(targetPath, fileResource.fsPath, !isLinux /* ignorecase */))) { + resolveFolderChildren = true; + } + + // Continue resolving children based on condition + if (resolveFolderChildren) { + $this.resolveChildren(fileResource.fsPath, absoluteTargetPaths, resolveSingleChildDescendants, children => { + children = arrays.coalesce(children); // we don't want those null children + childStat.children = children || []; + + clb(null, childStat); + }); + } + + // Otherwise return result + else { + clb(null, childStat); + } + }); + }, (errors, result) => { + callback(result); + }); + }); } } diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 8a4a0c41cc7..2137a762b6b 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -84,13 +84,13 @@ export class RemoteFileService extends FileService { @ITextResourceConfigurationService textResourceConfigurationService: ITextResourceConfigurationService, ) { super( - configurationService, contextService, environmentService, - lifecycleService, - notificationService, - _storageService, textResourceConfigurationService, + configurationService, + lifecycleService, + _storageService, + notificationService ); this._supportedSchemes = JSON.parse(this._storageService.get('remote_schemes', undefined, '[]')); diff --git a/src/vs/workbench/services/files/node/fileService.ts b/src/vs/workbench/services/files/node/fileService.ts deleted file mode 100644 index c73b17c1d36..00000000000 --- a/src/vs/workbench/services/files/node/fileService.ts +++ /dev/null @@ -1,1288 +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'; - -import * as paths from 'path'; -import * as fs from 'fs'; -import * as os from 'os'; -import * as crypto from 'crypto'; -import * as assert from 'assert'; -import { isParent, FileOperation, FileOperationEvent, IContent, IFileService, IResolveFileOptions, IResolveFileResult, IResolveContentOptions, IFileStat, IStreamContent, FileOperationError, FileOperationResult, IUpdateContentOptions, FileChangeType, IImportResult, FileChangesEvent, ICreateFileOptions, IContentData, ITextSnapshot } from 'vs/platform/files/common/files'; -import { MAX_FILE_SIZE, MAX_HEAP_SIZE } from 'vs/platform/files/node/files'; -import { isEqualOrParent } from 'vs/base/common/paths'; -import { ResourceMap } from 'vs/base/common/map'; -import * as arrays from 'vs/base/common/arrays'; -import { TPromise } from 'vs/base/common/winjs.base'; -import * as objects from 'vs/base/common/objects'; -import * as extfs from 'vs/base/node/extfs'; -import { nfcall, ThrottledDelayer } from 'vs/base/common/async'; -import uri from 'vs/base/common/uri'; -import * as nls from 'vs/nls'; -import { isWindows, isLinux } from 'vs/base/common/platform'; -import { dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; -import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; -import * as pfs from 'vs/base/node/pfs'; -import * as encoding from 'vs/base/node/encoding'; -import * as flow from 'vs/base/node/flow'; -import { FileWatcher as UnixWatcherService } from 'vs/workbench/services/files/node/watcher/unix/watcherService'; -import { FileWatcher as WindowsWatcherService } from 'vs/workbench/services/files/node/watcher/win32/watcherService'; -import { toFileChangesEvent, normalize, IRawFileChange } from 'vs/workbench/services/files/node/watcher/common'; -import { Event, Emitter } from 'vs/base/common/event'; -import { FileWatcher as NsfwWatcherService } from 'vs/workbench/services/files/node/watcher/nsfw/watcherService'; -import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation'; -import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { getBaseLabel } from 'vs/base/common/labels'; -import { Readable } from 'stream'; -import { Schemas } from 'vs/base/common/network'; - -export interface IEncodingOverride { - parent?: uri; - extension?: string; - encoding: string; -} - -export interface IFileServiceOptions { - tmpDir?: string; - errorLogger?: (msg: string) => void; - encodingOverride?: IEncodingOverride[]; - watcherIgnoredPatterns?: string[]; - disableWatcher?: boolean; - verboseLogging?: boolean; - useExperimentalFileWatcher?: boolean; - writeElevated?: (source: string, target: string) => TPromise; - elevationSupport?: { - cliPath: string; - promptTitle: string; - promptIcnsPath?: string; - }; -} - -function etag(stat: fs.Stats): string; -function etag(size: number, mtime: number): string; -function etag(arg1: any, arg2?: any): string { - let size: number; - let mtime: number; - if (typeof arg2 === 'number') { - size = arg1; - mtime = arg2; - } else { - size = (arg1).size; - mtime = (arg1).mtime.getTime(); - } - - return `"${crypto.createHash('sha1').update(String(size) + String(mtime)).digest('hex')}"`; -} - -class BufferPool { - - static _64K = new BufferPool(64 * 1024, 5); - - constructor( - readonly bufferSize: number, - private readonly _capacity: number, - private readonly _free: Buffer[] = [], - ) { - // - } - - acquire(): Buffer { - if (this._free.length === 0) { - return Buffer.allocUnsafe(this.bufferSize); - } else { - return this._free.shift(); - } - } - - release(buf: Buffer): void { - if (this._free.length <= this._capacity) { - this._free.push(buf); - } - } -} - -export class FileService implements IFileService { - - public _serviceBrand: any; - - private static readonly FS_EVENT_DELAY = 50; // aggregate and only emit events when changes have stopped for this duration (in ms) - private static readonly FS_REWATCH_DELAY = 300; // delay to rewatch a file that was renamed or deleted (in ms) - - private tmpPath: string; - private options: IFileServiceOptions; - - private readonly _onFileChanges: Emitter; - private readonly _onAfterOperation: Emitter; - - private toDispose: IDisposable[]; - - private activeFileChangesWatchers: ResourceMap; - private fileChangesWatchDelayer: ThrottledDelayer; - private undeliveredRawFileChangesEvents: IRawFileChange[]; - - private activeWorkspaceFileChangeWatcher: IDisposable; - - constructor( - private contextService: IWorkspaceContextService, - private environmentService: IEnvironmentService, - private textResourceConfigurationService: ITextResourceConfigurationService, - private configurationService: IConfigurationService, - private lifecycleService: ILifecycleService, - options: IFileServiceOptions - ) { - this.toDispose = []; - this.options = options || Object.create(null); - this.tmpPath = this.options.tmpDir || os.tmpdir(); - - this._onFileChanges = new Emitter(); - this.toDispose.push(this._onFileChanges); - - this._onAfterOperation = new Emitter(); - this.toDispose.push(this._onAfterOperation); - - if (!this.options.errorLogger) { - this.options.errorLogger = console.error; - } - - this.activeFileChangesWatchers = new ResourceMap(); - this.fileChangesWatchDelayer = new ThrottledDelayer(FileService.FS_EVENT_DELAY); - this.undeliveredRawFileChangesEvents = []; - - lifecycleService.when(LifecyclePhase.Running).then(() => { - this.setupFileWatching(); // wait until we are fully running before starting file watchers - }); - - this.registerListeners(); - } - - private registerListeners(): void { - this.toDispose.push(this.contextService.onDidChangeWorkbenchState(() => { - if (this.lifecycleService.phase >= LifecyclePhase.Running) { - this.setupFileWatching(); - } - })); - } - - public get onFileChanges(): Event { - return this._onFileChanges.event; - } - - public get onAfterOperation(): Event { - return this._onAfterOperation.event; - } - - public updateOptions(options: IFileServiceOptions): void { - if (options) { - objects.mixin(this.options, options); // overwrite current options - } - } - - private setupFileWatching(): void { - - // dispose old if any - if (this.activeWorkspaceFileChangeWatcher) { - this.activeWorkspaceFileChangeWatcher.dispose(); - } - - // Return if not aplicable - const workbenchState = this.contextService.getWorkbenchState(); - if (workbenchState === WorkbenchState.EMPTY || this.options.disableWatcher) { - return; - } - - // new watcher: use it if setting tells us so or we run in multi-root environment - if (this.options.useExperimentalFileWatcher || workbenchState === WorkbenchState.WORKSPACE) { - this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupNsfwWorkspaceWatching().startWatching()); - } - - // old watcher - else { - if (isWindows) { - this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupWin32WorkspaceWatching().startWatching()); - } else { - this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupUnixWorkspaceWatching().startWatching()); - } - } - } - - private setupWin32WorkspaceWatching(): WindowsWatcherService { - return new WindowsWatcherService(this.contextService, this.options.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), this.options.errorLogger, this.options.verboseLogging); - } - - private setupUnixWorkspaceWatching(): UnixWatcherService { - return new UnixWatcherService(this.contextService, this.options.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), this.options.errorLogger, this.options.verboseLogging); - } - - private setupNsfwWorkspaceWatching(): NsfwWatcherService { - return new NsfwWatcherService(this.contextService, this.configurationService, e => this._onFileChanges.fire(e), this.options.errorLogger, this.options.verboseLogging); - } - - public resolveFile(resource: uri, options?: IResolveFileOptions): TPromise { - return this.resolve(resource, options); - } - - public resolveFiles(toResolve: { resource: uri, options?: IResolveFileOptions }[]): TPromise { - return TPromise.join(toResolve.map(resourceAndOptions => this.resolve(resourceAndOptions.resource, resourceAndOptions.options) - .then(stat => ({ stat, success: true }), error => ({ stat: void 0, success: false })))); - } - - public existsFile(resource: uri): TPromise { - return this.resolveFile(resource).then(() => true, () => false); - } - - public resolveContent(resource: uri, options?: IResolveContentOptions): TPromise { - return this.resolveStreamContent(resource, options).then(streamContent => { - return new TPromise((resolve, reject) => { - - const result: IContent = { - resource: streamContent.resource, - name: streamContent.name, - mtime: streamContent.mtime, - etag: streamContent.etag, - encoding: streamContent.encoding, - value: '' - }; - - streamContent.value.on('data', chunk => result.value += chunk); - streamContent.value.on('error', err => reject(err)); - streamContent.value.on('end', _ => resolve(result)); - - return result; - }); - }); - } - - public resolveStreamContent(resource: uri, options?: IResolveContentOptions): TPromise { - - // Guard early against attempts to resolve an invalid file path - if (resource.scheme !== Schemas.file || !resource.fsPath) { - return TPromise.wrapError(new FileOperationError( - nls.localize('fileInvalidPath', "Invalid file resource ({0})", resource.toString(true)), - FileOperationResult.FILE_INVALID_PATH, - options - )); - } - - const result: IStreamContent = { - resource: void 0, - name: void 0, - mtime: void 0, - etag: void 0, - encoding: void 0, - value: void 0 - }; - - const contentResolverTokenSource = new CancellationTokenSource(); - - const onStatError = (error: Error) => { - - // error: stop reading the file the stat and content resolve call - // usually race, mostly likely the stat call will win and cancel - // the content call - contentResolverTokenSource.cancel(); - - // forward error - return TPromise.wrapError(error); - }; - - const statsPromise = this.resolveFile(resource).then(stat => { - result.resource = stat.resource; - result.name = stat.name; - result.mtime = stat.mtime; - result.etag = stat.etag; - - // Return early if resource is a directory - if (stat.isDirectory) { - return onStatError(new FileOperationError( - nls.localize('fileIsDirectoryError', "File is directory"), - FileOperationResult.FILE_IS_DIRECTORY, - options - )); - } - - // Return early if file not modified since - if (options && options.etag && options.etag === stat.etag) { - return onStatError(new FileOperationError( - nls.localize('fileNotModifiedError', "File not modified since"), - FileOperationResult.FILE_NOT_MODIFIED_SINCE, - options - )); - } - - // Return early if file is too large to load - if (typeof stat.size === 'number') { - if (stat.size > Math.max(this.environmentService.args['max-memory'] * 1024 * 1024 || 0, MAX_HEAP_SIZE)) { - return onStatError(new FileOperationError( - nls.localize('fileTooLargeForHeapError', "To open a file of this size, you need to restart VS Code and allow it to use more memory"), - FileOperationResult.FILE_EXCEED_MEMORY_LIMIT - )); - } - - if (stat.size > MAX_FILE_SIZE) { - return onStatError(new FileOperationError( - nls.localize('fileTooLargeError', "File too large to open"), - FileOperationResult.FILE_TOO_LARGE - )); - } - } - - return void 0; - }, err => { - - // Wrap file not found errors - if (err.code === 'ENOENT') { - return onStatError(new FileOperationError( - nls.localize('fileNotFoundError', "File not found ({0})", resource.toString(true)), - FileOperationResult.FILE_NOT_FOUND, - options - )); - } - - return onStatError(err); - }); - - let completePromise: Thenable; - - // await the stat iff we already have an etag so that we compare the - // etag from the stat before we actually read the file again. - if (options && options.etag) { - completePromise = statsPromise.then(() => { - return this.fillInContents(result, resource, options, contentResolverTokenSource.token); // Waterfall -> only now resolve the contents - }); - } - - // a fresh load without a previous etag which means we can resolve the file stat - // and the content at the same time, avoiding the waterfall. - else { - completePromise = Promise.all([statsPromise, this.fillInContents(result, resource, options, contentResolverTokenSource.token)]); - } - - return TPromise.wrap(completePromise).then(() => { - contentResolverTokenSource.dispose(); - - return result; - }); - } - - private fillInContents(content: IStreamContent, resource: uri, options: IResolveContentOptions, token: CancellationToken): Thenable { - return this.resolveFileData(resource, options, token).then(data => { - content.encoding = data.encoding; - content.value = data.stream; - }); - } - - private resolveFileData(resource: uri, options: IResolveContentOptions, token: CancellationToken): Thenable { - - const chunkBuffer = BufferPool._64K.acquire(); - - const result: IContentData = { - encoding: void 0, - stream: void 0 - }; - - return new Promise((resolve, reject) => { - fs.open(this.toAbsolutePath(resource), 'r', (err, fd) => { - if (err) { - if (err.code === 'ENOENT') { - // Wrap file not found errors - err = new FileOperationError( - nls.localize('fileNotFoundError', "File not found ({0})", resource.toString(true)), - FileOperationResult.FILE_NOT_FOUND, - options - ); - } - - return reject(err); - } - - let decoder: NodeJS.ReadWriteStream; - let totalBytesRead = 0; - - const finish = (err?: any) => { - - if (err) { - if (err.code === 'EISDIR') { - // Wrap EISDIR errors (fs.open on a directory works, but you cannot read from it) - err = new FileOperationError( - nls.localize('fileIsDirectoryError', "File is directory"), - FileOperationResult.FILE_IS_DIRECTORY, - options - ); - } - if (decoder) { - // If the decoder already started, we have to emit the error through it as - // event because the promise is already resolved! - decoder.emit('error', err); - } else { - reject(err); - } - } - if (decoder) { - decoder.end(); - } - - // return the shared buffer - BufferPool._64K.release(chunkBuffer); - - if (fd) { - fs.close(fd, err => { - if (err) { - this.options.errorLogger(`resolveFileData#close(): ${err.toString()}`); - } - }); - } - }; - - const handleChunk = (bytesRead: number) => { - if (token.isCancellationRequested) { - // cancellation -> finish - finish(new Error('cancelled')); - } else if (bytesRead === 0) { - // no more data -> finish - finish(); - } else if (bytesRead < chunkBuffer.length) { - // write the sub-part of data we received -> repeat - decoder.write(chunkBuffer.slice(0, bytesRead), readChunk); - } else { - // write all data we received -> repeat - decoder.write(chunkBuffer, readChunk); - } - }; - - let currentPosition: number = (options && options.position) || null; - - const readChunk = () => { - fs.read(fd, chunkBuffer, 0, chunkBuffer.length, currentPosition, (err, bytesRead) => { - totalBytesRead += bytesRead; - - if (typeof currentPosition === 'number') { - // if we received a position argument as option we need to ensure that - // we advance the position by the number of bytesread - currentPosition += bytesRead; - } - - if (totalBytesRead > Math.max(this.environmentService.args['max-memory'] * 1024 * 1024 || 0, MAX_HEAP_SIZE)) { - finish(new FileOperationError( - nls.localize('fileTooLargeForHeapError', "To open a file of this size, you need to restart VS Code and allow it to use more memory"), - FileOperationResult.FILE_EXCEED_MEMORY_LIMIT - )); - } - - if (totalBytesRead > MAX_FILE_SIZE) { - // stop when reading too much - finish(new FileOperationError( - nls.localize('fileTooLargeError', "File too large to open"), - FileOperationResult.FILE_TOO_LARGE, - options - )); - } else if (err) { - // some error happened - finish(err); - - } else if (decoder) { - // pass on to decoder - handleChunk(bytesRead); - - } else { - // when receiving the first chunk of data we need to create the - // decoding stream which is then used to drive the string stream. - TPromise.as(encoding.detectEncodingFromBuffer( - { buffer: chunkBuffer, bytesRead }, - options && options.autoGuessEncoding || this.configuredAutoGuessEncoding(resource) - )).then(detected => { - - if (options && options.acceptTextOnly && detected.seemsBinary) { - // Return error early if client only accepts text and this is not text - finish(new FileOperationError( - nls.localize('fileBinaryError', "File seems to be binary and cannot be opened as text"), - FileOperationResult.FILE_IS_BINARY, - options - )); - - } else { - result.encoding = this.getEncoding(resource, this.getPeferredEncoding(resource, options, detected)); - result.stream = decoder = encoding.decodeStream(result.encoding); - resolve(result); - handleChunk(bytesRead); - } - - }).then(void 0, err => { - // failed to get encoding - finish(err); - }); - } - }); - }; - - // start reading - readChunk(); - }); - }); - } - - public updateContent(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { - if (this.options.elevationSupport && options.writeElevated) { - return this.doUpdateContentElevated(resource, value, options); - } - - return this.doUpdateContent(resource, value, options); - } - - private doUpdateContent(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { - const absolutePath = this.toAbsolutePath(resource); - - // 1.) check file for writing - return this.checkFileBeforeWriting(absolutePath, options).then(exists => { - let createParentsPromise: TPromise; - if (exists) { - createParentsPromise = TPromise.as(null); - } else { - createParentsPromise = pfs.mkdirp(paths.dirname(absolutePath)); - } - - // 2.) create parents as needed - return createParentsPromise.then(() => { - const encodingToWrite = this.getEncoding(resource, options.encoding); - let addBomPromise: TPromise = TPromise.as(false); - - // UTF_16 BE and LE as well as UTF_8 with BOM always have a BOM - if (encodingToWrite === encoding.UTF16be || encodingToWrite === encoding.UTF16le || encodingToWrite === encoding.UTF8_with_bom) { - addBomPromise = TPromise.as(true); - } - - // Existing UTF-8 file: check for options regarding BOM - else if (exists && encodingToWrite === encoding.UTF8) { - if (options.overwriteEncoding) { - addBomPromise = TPromise.as(false); // if we are to overwrite the encoding, we do not preserve it if found - } else { - addBomPromise = encoding.detectEncodingByBOM(absolutePath).then(enc => enc === encoding.UTF8); // otherwise preserve it if found - } - } - - // 3.) check to add UTF BOM - return addBomPromise.then(addBom => { - - // 4.) set contents and resolve - return this.doSetContentsAndResolve(resource, absolutePath, value, addBom, encodingToWrite).then(void 0, error => { - if (!exists || error.code !== 'EPERM' || !isWindows) { - return TPromise.wrapError(error); - } - - // On Windows and if the file exists with an EPERM error, we try a different strategy of saving the file - // by first truncating the file and then writing with r+ mode. This helps to save hidden files on Windows - // (see https://github.com/Microsoft/vscode/issues/931) - - // 5.) truncate - return pfs.truncate(absolutePath, 0).then(() => { - - // 6.) set contents (this time with r+ mode) and resolve again - return this.doSetContentsAndResolve(resource, absolutePath, value, addBom, encodingToWrite, { flag: 'r+' }); - }); - }); - }); - }); - }).then(null, error => { - if (error.code === 'EACCES' || error.code === 'EPERM') { - return TPromise.wrapError(new FileOperationError( - nls.localize('filePermission', "Permission denied writing to file ({0})", resource.toString(true)), - FileOperationResult.FILE_PERMISSION_DENIED, - options - )); - } - - return TPromise.wrapError(error); - }); - } - - private doSetContentsAndResolve(resource: uri, absolutePath: string, value: string | ITextSnapshot, addBOM: boolean, encodingToWrite: string, options?: { mode?: number; flag?: string; }): TPromise { - let writeFilePromise: TPromise; - - // Configure encoding related options as needed - const writeFileOptions: extfs.IWriteFileOptions = options ? options : Object.create(null); - if (addBOM || encodingToWrite !== encoding.UTF8) { - writeFileOptions.encoding = { - charset: encodingToWrite, - addBOM - }; - } - - if (typeof value === 'string') { - writeFilePromise = pfs.writeFile(absolutePath, value, writeFileOptions); - } else { - writeFilePromise = pfs.writeFile(absolutePath, this.snapshotToReadableStream(value), writeFileOptions); - } - - // set contents - return writeFilePromise.then(() => { - - // resolve - return this.resolve(resource); - }); - } - - private snapshotToReadableStream(snapshot: ITextSnapshot): NodeJS.ReadableStream { - return new Readable({ - read: function () { - try { - let chunk: string; - let canPush = true; - - // Push all chunks as long as we can push and as long as - // the underlying snapshot returns strings to us - while (canPush && typeof (chunk = snapshot.read()) === 'string') { - canPush = this.push(chunk); - } - - // Signal EOS by pushing NULL - if (typeof chunk !== 'string') { - this.push(null); - } - } catch (error) { - this.emit('error', error); - } - }, - encoding: encoding.UTF8 // very important, so that strings are passed around and not buffers! - }); - } - - private doUpdateContentElevated(resource: uri, value: string | ITextSnapshot, options: IUpdateContentOptions = Object.create(null)): TPromise { - const absolutePath = this.toAbsolutePath(resource); - - // 1.) check file for writing - return this.checkFileBeforeWriting(absolutePath, options, options.overwriteReadonly /* ignore readonly if we overwrite readonly, this is handled via sudo later */).then(exists => { - const writeOptions: IUpdateContentOptions = objects.assign(Object.create(null), options); - writeOptions.writeElevated = false; - writeOptions.encoding = this.getEncoding(resource, options.encoding); - - // 2.) write to a temporary file to be able to copy over later - const tmpPath = paths.join(this.tmpPath, `code-elevated-${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 6)}`); - return this.updateContent(uri.file(tmpPath), value, writeOptions).then(() => { - - // 3.) invoke our CLI as super user - return (import('sudo-prompt')).then(sudoPrompt => { - return new TPromise((c, e) => { - const promptOptions = { name: this.options.elevationSupport.promptTitle.replace('-', ''), icns: this.options.elevationSupport.promptIcnsPath }; - - const sudoCommand: string[] = [`"${this.options.elevationSupport.cliPath}"`]; - if (options.overwriteReadonly) { - sudoCommand.push('--file-chmod'); - } - sudoCommand.push('--file-write', `"${tmpPath}"`, `"${absolutePath}"`); - - sudoPrompt.exec(sudoCommand.join(' '), promptOptions, (error: string, stdout: string, stderr: string) => { - if (error || stderr) { - e(error || stderr); - } else { - c(void 0); - } - }); - }); - }).then(() => { - - // 3.) delete temp file - return pfs.del(tmpPath, this.tmpPath).then(() => { - - // 4.) resolve again - return this.resolve(resource); - }); - }); - }); - }).then(null, error => { - if (this.options.verboseLogging) { - this.options.errorLogger(`Unable to write to file '${resource.toString(true)}' as elevated user (${error})`); - } - - if (!FileOperationError.isFileOperationError(error)) { - error = new FileOperationError( - nls.localize('filePermission', "Permission denied writing to file ({0})", resource.toString(true)), - FileOperationResult.FILE_PERMISSION_DENIED, - options - ); - } - - return TPromise.wrapError(error); - }); - } - - public createFile(resource: uri, content: string = '', options: ICreateFileOptions = Object.create(null)): TPromise { - const absolutePath = this.toAbsolutePath(resource); - - let checkFilePromise: TPromise; - if (options.overwrite) { - checkFilePromise = TPromise.as(false); - } else { - checkFilePromise = pfs.exists(absolutePath); - } - - // Check file exists - return checkFilePromise.then(exists => { - if (exists && !options.overwrite) { - return TPromise.wrapError(new FileOperationError( - nls.localize('fileExists', "File to create already exists ({0})", resource.toString(true)), - FileOperationResult.FILE_MODIFIED_SINCE, - options - )); - } - - // Create file - return this.updateContent(resource, content).then(result => { - - // Events - this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, result)); - - return result; - }); - }); - } - - public createFolder(resource: uri): TPromise { - - // 1.) Create folder - const absolutePath = this.toAbsolutePath(resource); - return pfs.mkdirp(absolutePath).then(() => { - - // 2.) Resolve - return this.resolve(resource).then(result => { - - // Events - this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, result)); - - return result; - }); - }); - } - - private checkFileBeforeWriting(absolutePath: string, options: IUpdateContentOptions = Object.create(null), ignoreReadonly?: boolean): TPromise { - return pfs.exists(absolutePath).then(exists => { - if (exists) { - return pfs.stat(absolutePath).then(stat => { - if (stat.isDirectory()) { - return TPromise.wrapError(new Error('Expected file is actually a directory')); - } - - // Dirty write prevention: if the file on disk has been changed and does not match our expected - // mtime and etag, we bail out to prevent dirty writing. - // - // First, we check for a mtime that is in the future before we do more checks. The assumption is - // that only the mtime is an indicator for a file that has changd on disk. - // - // Second, if the mtime has advanced, we compare the size of the file on disk with our previous - // one using the etag() function. Relying only on the mtime check has prooven to produce false - // positives due to file system weirdness (especially around remote file systems). As such, the - // check for size is a weaker check because it can return a false negative if the file has changed - // but to the same length. This is a compromise we take to avoid having to produce checksums of - // the file content for comparison which would be much slower to compute. - if (typeof options.mtime === 'number' && typeof options.etag === 'string' && options.mtime < stat.mtime.getTime() && options.etag !== etag(stat.size, options.mtime)) { - return TPromise.wrapError(new FileOperationError(nls.localize('fileModifiedError', "File Modified Since"), FileOperationResult.FILE_MODIFIED_SINCE, options)); - } - - // Throw if file is readonly and we are not instructed to overwrite - if (!ignoreReadonly && !(stat.mode & 128) /* readonly */) { - if (!options.overwriteReadonly) { - return this.readOnlyError(options); - } - - // Try to change mode to writeable - let mode = stat.mode; - mode = mode | 128; - return pfs.chmod(absolutePath, mode).then(() => { - - // Make sure to check the mode again, it could have failed - return pfs.stat(absolutePath).then(stat => { - if (!(stat.mode & 128) /* readonly */) { - return this.readOnlyError(options); - } - - return exists; - }); - }); - } - - return TPromise.as(exists); - }); - } - - return TPromise.as(exists); - }); - } - - private readOnlyError(options: IUpdateContentOptions): TPromise { - return TPromise.wrapError(new FileOperationError( - nls.localize('fileReadOnlyError', "File is Read Only"), - FileOperationResult.FILE_READ_ONLY, - options - )); - } - - public rename(resource: uri, newName: string): TPromise { - const newPath = paths.join(paths.dirname(resource.fsPath), newName); - - return this.moveFile(resource, uri.file(newPath)); - } - - public moveFile(source: uri, target: uri, overwrite?: boolean): TPromise { - return this.moveOrCopyFile(source, target, false, overwrite); - } - - public copyFile(source: uri, target: uri, overwrite?: boolean): TPromise { - return this.moveOrCopyFile(source, target, true, overwrite); - } - - private moveOrCopyFile(source: uri, target: uri, keepCopy: boolean, overwrite: boolean): TPromise { - const sourcePath = this.toAbsolutePath(source); - const targetPath = this.toAbsolutePath(target); - - // 1.) move / copy - return this.doMoveOrCopyFile(sourcePath, targetPath, keepCopy, overwrite).then(() => { - - // 2.) resolve - return this.resolve(target).then(result => { - - // Events - this._onAfterOperation.fire(new FileOperationEvent(source, keepCopy ? FileOperation.COPY : FileOperation.MOVE, result)); - - return result; - }); - }); - } - - private doMoveOrCopyFile(sourcePath: string, targetPath: string, keepCopy: boolean, overwrite: boolean): TPromise { - - // 1.) validate operation - if (isParent(targetPath, sourcePath, !isLinux)) { - return TPromise.wrapError(new Error('Unable to move/copy when source path is parent of target path')); - } - - // 2.) check if target exists - return pfs.exists(targetPath).then(exists => { - const isCaseRename = sourcePath.toLowerCase() === targetPath.toLowerCase(); - const isSameFile = sourcePath === targetPath; - - // Return early with conflict if target exists and we are not told to overwrite - if (exists && !isCaseRename && !overwrite) { - return TPromise.wrapError(new FileOperationError(nls.localize('fileMoveConflict', "Unable to move/copy. File already exists at destination."), FileOperationResult.FILE_MOVE_CONFLICT)); - } - - // 3.) make sure target is deleted before we move/copy unless this is a case rename of the same file - let deleteTargetPromise = TPromise.wrap(void 0); - if (exists && !isCaseRename) { - if (isEqualOrParent(sourcePath, targetPath, !isLinux /* ignorecase */)) { - return TPromise.wrapError(new Error(nls.localize('unableToMoveCopyError', "Unable to move/copy. File would replace folder it is contained in."))); // catch this corner case! - } - - deleteTargetPromise = this.del(uri.file(targetPath)); - } - - return deleteTargetPromise.then(() => { - - // 4.) make sure parents exists - return pfs.mkdirp(paths.dirname(targetPath)).then(() => { - - // 4.) copy/move - if (isSameFile) { - return TPromise.wrap(null); - } else if (keepCopy) { - return nfcall(extfs.copy, sourcePath, targetPath); - } else { - return nfcall(extfs.mv, sourcePath, targetPath); - } - }).then(() => exists); - }); - }); - } - - public importFile(source: uri, targetFolder: uri): TPromise { - const sourcePath = this.toAbsolutePath(source); - const targetResource = uri.file(paths.join(targetFolder.fsPath, paths.basename(source.fsPath))); - const targetPath = this.toAbsolutePath(targetResource); - - // 1.) resolve - return pfs.stat(sourcePath).then(stat => { - if (stat.isDirectory()) { - return TPromise.wrapError(new Error(nls.localize('foldersCopyError', "Folders cannot be copied into the workspace. Please select individual files to copy them."))); // for now we do not allow to import a folder into a workspace - } - - // 2.) copy - return this.doMoveOrCopyFile(sourcePath, targetPath, true, true).then(exists => { - - // 3.) resolve - return this.resolve(targetResource).then(stat => { - - // Events - this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.IMPORT, stat)); - - return { isNew: !exists, stat: stat }; - }); - }); - }); - } - - public del(resource: uri): TPromise { - const absolutePath = this.toAbsolutePath(resource); - - return pfs.del(absolutePath, this.tmpPath).then(() => { - - // Events - this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.DELETE)); - }); - } - - // Helpers - - private toAbsolutePath(arg1: uri | IFileStat): string { - let resource: uri; - if (arg1 instanceof uri) { - resource = arg1; - } else { - resource = (arg1).resource; - } - - assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource: ${resource}`); - - return paths.normalize(resource.fsPath); - } - - private resolve(resource: uri, options: IResolveFileOptions = Object.create(null)): TPromise { - return this.toStatResolver(resource) - .then(model => model.resolve(options)); - } - - private toStatResolver(resource: uri): TPromise { - const absolutePath = this.toAbsolutePath(resource); - - return pfs.statLink(absolutePath).then(({ isSymbolicLink, stat }) => { - return new StatResolver(resource, isSymbolicLink, stat.isDirectory(), stat.mtime.getTime(), stat.size, this.options.verboseLogging ? this.options.errorLogger : void 0); - }); - } - - private getPeferredEncoding(resource: uri, options: IResolveContentOptions, detected: encoding.IDetectedEncodingResult): string { - let preferredEncoding: string; - if (options && options.encoding) { - if (detected.encoding === encoding.UTF8 && options.encoding === encoding.UTF8) { - preferredEncoding = encoding.UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 - } else { - preferredEncoding = options.encoding; // give passed in encoding highest priority - } - } else if (detected.encoding) { - if (detected.encoding === encoding.UTF8) { - preferredEncoding = encoding.UTF8_with_bom; // if we detected UTF-8, it can only be because of a BOM - } else { - preferredEncoding = detected.encoding; - } - } else if (this.configuredEncoding(resource) === encoding.UTF8_with_bom) { - preferredEncoding = encoding.UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then - } - return preferredEncoding; - } - - public getEncoding(resource: uri, preferredEncoding?: string): string { - let fileEncoding: string; - - const override = this.getEncodingOverride(resource); - if (override) { - fileEncoding = override; - } else if (preferredEncoding) { - fileEncoding = preferredEncoding; - } else { - fileEncoding = this.configuredEncoding(resource); - } - - if (!fileEncoding || !encoding.encodingExists(fileEncoding)) { - fileEncoding = encoding.UTF8; // the default is UTF 8 - } - - return fileEncoding; - } - - private configuredAutoGuessEncoding(resource: uri): boolean { - return this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding'); - } - - private configuredEncoding(resource: uri): string { - return this.textResourceConfigurationService.getValue(resource, 'files.encoding'); - } - - private getEncodingOverride(resource: uri): string { - if (resource && this.options.encodingOverride && this.options.encodingOverride.length) { - for (let i = 0; i < this.options.encodingOverride.length; i++) { - const override = this.options.encodingOverride[i]; - - // check if the resource is child of encoding override path - if (override.parent && isParent(resource.fsPath, override.parent.fsPath, !isLinux /* ignorecase */)) { - return override.encoding; - } - - // check if the resource extension is equal to encoding override - if (override.extension && paths.extname(resource.fsPath) === `.${override.extension}`) { - return override.encoding; - } - } - } - - return null; - } - - public watchFileChanges(resource: uri): void { - assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource for watching: ${resource}`); - - // Create or get watcher for provided path - let watcher = this.activeFileChangesWatchers.get(resource); - if (!watcher) { - const fsPath = resource.fsPath; - const fsName = paths.basename(resource.fsPath); - - watcher = extfs.watch(fsPath, (eventType: string, filename: string) => { - const renamedOrDeleted = ((filename && filename !== fsName) || eventType === 'rename'); - - // The file was either deleted or renamed. Many tools apply changes to files in an - // atomic way ("Atomic Save") by first renaming the file to a temporary name and then - // renaming it back to the original name. Our watcher will detect this as a rename - // and then stops to work on Mac and Linux because the watcher is applied to the - // inode and not the name. The fix is to detect this case and trying to watch the file - // again after a certain delay. - // In addition, we send out a delete event if after a timeout we detect that the file - // does indeed not exist anymore. - if (renamedOrDeleted) { - - // Very important to dispose the watcher which now points to a stale inode - this.unwatchFileChanges(resource); - - // Wait a bit and try to install watcher again, assuming that the file was renamed quickly ("Atomic Save") - setTimeout(() => { - this.existsFile(resource).done(exists => { - - // File still exists, so reapply the watcher - if (exists) { - this.watchFileChanges(resource); - } - - // File seems to be really gone, so emit a deleted event - else { - this.onRawFileChange({ - type: FileChangeType.DELETED, - path: fsPath - }); - } - }); - }, FileService.FS_REWATCH_DELAY); - } - - // Handle raw file change - this.onRawFileChange({ - type: FileChangeType.UPDATED, - path: fsPath - }); - }, (error: string) => this.options.errorLogger(error)); - - if (watcher) { - this.activeFileChangesWatchers.set(resource, watcher); - } - } - } - - private onRawFileChange(event: IRawFileChange): void { - - // add to bucket of undelivered events - this.undeliveredRawFileChangesEvents.push(event); - - if (this.options.verboseLogging) { - console.log('%c[node.js Watcher]%c', 'color: green', 'color: black', event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', event.path); - } - - // handle emit through delayer to accommodate for bulk changes - this.fileChangesWatchDelayer.trigger(() => { - const buffer = this.undeliveredRawFileChangesEvents; - this.undeliveredRawFileChangesEvents = []; - - // Normalize - const normalizedEvents = normalize(buffer); - - // Logging - if (this.options.verboseLogging) { - normalizedEvents.forEach(r => { - console.log('%c[node.js Watcher]%c >> normalized', 'color: green', 'color: black', r.type === FileChangeType.ADDED ? '[ADDED]' : r.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', r.path); - }); - } - - // Emit - this._onFileChanges.fire(toFileChangesEvent(normalizedEvents)); - - return TPromise.as(null); - }); - } - - public unwatchFileChanges(resource: uri): void { - const watcher = this.activeFileChangesWatchers.get(resource); - if (watcher) { - watcher.close(); - this.activeFileChangesWatchers.delete(resource); - } - } - - public dispose(): void { - this.toDispose = dispose(this.toDispose); - - if (this.activeWorkspaceFileChangeWatcher) { - this.activeWorkspaceFileChangeWatcher.dispose(); - this.activeWorkspaceFileChangeWatcher = null; - } - - this.activeFileChangesWatchers.forEach(watcher => watcher.close()); - this.activeFileChangesWatchers.clear(); - } -} - -export class StatResolver { - private name: string; - private etag: string; - - constructor( - private resource: uri, - private isSymbolicLink: boolean, - private isDirectory: boolean, - private mtime: number, - private size: number, - private errorLogger?: (error: Error | string) => void - ) { - assert.ok(resource && resource.scheme === Schemas.file, `Invalid resource: ${resource}`); - - this.name = getBaseLabel(resource); - this.etag = etag(size, mtime); - } - - public resolve(options: IResolveFileOptions): TPromise { - - // General Data - const fileStat: IFileStat = { - resource: this.resource, - isDirectory: this.isDirectory, - isSymbolicLink: this.isSymbolicLink, - name: this.name, - etag: this.etag, - size: this.size, - mtime: this.mtime - }; - - // File Specific Data - if (!this.isDirectory) { - return TPromise.as(fileStat); - } - - // Directory Specific Data - else { - - // Convert the paths from options.resolveTo to absolute paths - let absoluteTargetPaths: string[] = null; - if (options && options.resolveTo) { - absoluteTargetPaths = []; - options.resolveTo.forEach(resource => { - absoluteTargetPaths.push(resource.fsPath); - }); - } - - return new TPromise((c, e) => { - - // Load children - this.resolveChildren(this.resource.fsPath, absoluteTargetPaths, options && options.resolveSingleChildDescendants, children => { - children = arrays.coalesce(children); // we don't want those null children (could be permission denied when reading a child) - fileStat.children = children || []; - - c(fileStat); - }); - }); - } - } - - private resolveChildren(absolutePath: string, absoluteTargetPaths: string[], resolveSingleChildDescendants: boolean, callback: (children: IFileStat[]) => void): void { - extfs.readdir(absolutePath, (error: Error, files: string[]) => { - if (error) { - if (this.errorLogger) { - this.errorLogger(error); - } - - return callback(null); // return - we might not have permissions to read the folder - } - - // for each file in the folder - flow.parallel(files, (file: string, clb: (error: Error, children: IFileStat) => void) => { - const fileResource = uri.file(paths.resolve(absolutePath, file)); - let fileStat: fs.Stats; - let isSymbolicLink = false; - const $this = this; - - flow.sequence( - function onError(error: Error): void { - if ($this.errorLogger) { - $this.errorLogger(error); - } - - clb(null, null); // return - we might not have permissions to read the folder or stat the file - }, - - function stat(this: any): void { - extfs.statLink(fileResource.fsPath, this); - }, - - function countChildren(this: any, statAndLink: extfs.IStatAndLink): void { - fileStat = statAndLink.stat; - isSymbolicLink = statAndLink.isSymbolicLink; - - if (fileStat.isDirectory()) { - extfs.readdir(fileResource.fsPath, (error, result) => { - this(null, result ? result.length : 0); - }); - } else { - this(null, 0); - } - }, - - function resolve(childCount: number): void { - const childStat: IFileStat = { - resource: fileResource, - isDirectory: fileStat.isDirectory(), - isSymbolicLink, - name: file, - mtime: fileStat.mtime.getTime(), - etag: etag(fileStat), - size: fileStat.size - }; - - // Return early for files - if (!fileStat.isDirectory()) { - return clb(null, childStat); - } - - // Handle Folder - let resolveFolderChildren = false; - if (files.length === 1 && resolveSingleChildDescendants) { - resolveFolderChildren = true; - } else if (childCount > 0 && absoluteTargetPaths && absoluteTargetPaths.some(targetPath => isEqualOrParent(targetPath, fileResource.fsPath, !isLinux /* ignorecase */))) { - resolveFolderChildren = true; - } - - // Continue resolving children based on condition - if (resolveFolderChildren) { - $this.resolveChildren(fileResource.fsPath, absoluteTargetPaths, resolveSingleChildDescendants, children => { - children = arrays.coalesce(children); // we don't want those null children - childStat.children = children || []; - - clb(null, childStat); - }); - } - - // Otherwise return result - else { - clb(null, childStat); - } - }); - }, (errors, result) => { - callback(result); - }); - }); - } -} diff --git a/src/vs/workbench/services/files/test/node/fileService.test.ts b/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts similarity index 95% rename from src/vs/workbench/services/files/test/node/fileService.test.ts rename to src/vs/workbench/services/files/test/electron-browser/fileService.test.ts index fb5aceb59bd..959d774f9d9 100644 --- a/src/vs/workbench/services/files/test/node/fileService.test.ts +++ b/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts @@ -11,14 +11,14 @@ import * as os from 'os'; import * as assert from 'assert'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileService, IEncodingOverride } from 'vs/workbench/services/files/node/fileService'; +import { FileService, IEncodingOverride } from 'vs/workbench/services/files/electron-browser/fileService'; import { FileOperation, FileOperationEvent, FileChangesEvent, FileOperationResult, FileOperationError } from 'vs/platform/files/common/files'; import uri from 'vs/base/common/uri'; import * as uuid from 'vs/base/common/uuid'; import * as pfs from 'vs/base/node/pfs'; import * as encodingLib from 'vs/base/node/encoding'; -import * as utils from 'vs/workbench/services/files/test/node/utils'; -import { TestEnvironmentService, TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService } from 'vs/workbench/test/workbenchTestServices'; +import * as utils from 'vs/workbench/services/files/test/electron-browser/utils'; +import { TestEnvironmentService, TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TextModel } from 'vs/editor/common/model/textModel'; @@ -34,7 +34,7 @@ suite('FileService', () => { const sourceDir = require.toUrl('./fixtures/service'); return pfs.copy(sourceDir, testDir).then(() => { - service = new FileService(new TestContextService(new Workspace(testDir, testDir, toWorkspaceFolders([{ path: testDir }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true }); + service = new FileService(new TestContextService(new Workspace(testDir, testDir, toWorkspaceFolders([{ path: testDir }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), new TestStorageService(), new TestNotificationService(), { disableWatcher: true }); }); }); @@ -892,10 +892,18 @@ suite('FileService', () => { const textResourceConfigurationService = new TestTextResourceConfigurationService(configurationService); - const _service = new FileService(new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), TestEnvironmentService, textResourceConfigurationService, configurationService, new TestLifecycleService(), { - encodingOverride, - disableWatcher: true - }); + const _service = new FileService( + new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), + TestEnvironmentService, + textResourceConfigurationService, + configurationService, + new TestLifecycleService(), + new TestStorageService(), + new TestNotificationService(), + { + encodingOverride, + disableWatcher: true + }); return _service.resolveContent(uri.file(path.join(testDir, 'index.html'))).then(c => { assert.equal(c.encoding, 'windows1252'); @@ -929,10 +937,18 @@ suite('FileService', () => { const textResourceConfigurationService = new TestTextResourceConfigurationService(configurationService); - const _service = new FileService(new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), TestEnvironmentService, textResourceConfigurationService, configurationService, new TestLifecycleService(), { - encodingOverride, - disableWatcher: true - }); + const _service = new FileService( + new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), + TestEnvironmentService, + textResourceConfigurationService, + configurationService, + new TestLifecycleService(), + new TestStorageService(), + new TestNotificationService(), + { + encodingOverride, + disableWatcher: true + }); return _service.resolveContent(uri.file(path.join(testDir, 'index.html'))).then(c => { assert.equal(c.encoding, 'windows1252'); @@ -955,9 +971,17 @@ suite('FileService', () => { const _sourceDir = require.toUrl('./fixtures/service'); const resource = uri.file(path.join(testDir, 'index.html')); - const _service = new FileService(new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { - disableWatcher: true - }); + const _service = new FileService( + new TestContextService(new Workspace(_testDir, _testDir, toWorkspaceFolders([{ path: _testDir }]))), + TestEnvironmentService, + new TestTextResourceConfigurationService(), + new TestConfigurationService(), + new TestLifecycleService(), + new TestStorageService(), + new TestNotificationService(), + { + disableWatcher: true + }); return pfs.copy(_sourceDir, _testDir).then(() => { return pfs.readFile(resource.fsPath).then(data => { diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/company.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/company.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/conway.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/conway.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/employee.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/employee.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/small.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/examples/small.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/index.html b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/index.html similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/index.html rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/index.html diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/company.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/company.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/conway.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/conway.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/employee.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/employee.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/small.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/other/deep/small.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/site.css b/src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/site.css similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/resolver/site.css rename to src/vs/workbench/services/files/test/electron-browser/fixtures/resolver/site.css diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/binary.txt b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/binary.txt similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/binary.txt rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/binary.txt diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/company.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/company.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/conway.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/conway.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/employee.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/employee.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/small.js similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/deep/small.js diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/index.html b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/index.html similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/index.html rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/index.html diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/lorem.txt b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/lorem.txt similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/lorem.txt rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/lorem.txt diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/small.txt b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/small.txt similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/small.txt rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/small.txt diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/small_umlaut.txt b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/small_umlaut.txt similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/small_umlaut.txt rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/small_umlaut.txt diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/some_utf16le.css b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/some_utf16le.css similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/some_utf16le.css rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/some_utf16le.css diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/some_utf8_bom.txt b/src/vs/workbench/services/files/test/electron-browser/fixtures/service/some_utf8_bom.txt similarity index 100% rename from src/vs/workbench/services/files/test/node/fixtures/service/some_utf8_bom.txt rename to src/vs/workbench/services/files/test/electron-browser/fixtures/service/some_utf8_bom.txt diff --git a/src/vs/workbench/services/files/test/node/resolver.test.ts b/src/vs/workbench/services/files/test/electron-browser/resolver.test.ts similarity index 97% rename from src/vs/workbench/services/files/test/node/resolver.test.ts rename to src/vs/workbench/services/files/test/electron-browser/resolver.test.ts index 230d31d4e0f..3a9c19ad869 100644 --- a/src/vs/workbench/services/files/test/node/resolver.test.ts +++ b/src/vs/workbench/services/files/test/electron-browser/resolver.test.ts @@ -9,10 +9,10 @@ import * as fs from 'fs'; import * as path from 'path'; import * as assert from 'assert'; -import { StatResolver } from 'vs/workbench/services/files/node/fileService'; +import { StatResolver } from 'vs/workbench/services/files/electron-browser/fileService'; import uri from 'vs/base/common/uri'; import { isLinux } from 'vs/base/common/platform'; -import * as utils from 'vs/workbench/services/files/test/node/utils'; +import * as utils from 'vs/workbench/services/files/test/electron-browser/utils'; function create(relativePath: string): StatResolver { let basePath = require.toUrl('./fixtures/resolver'); diff --git a/src/vs/workbench/services/files/test/node/utils.ts b/src/vs/workbench/services/files/test/electron-browser/utils.ts similarity index 100% rename from src/vs/workbench/services/files/test/node/utils.ts rename to src/vs/workbench/services/files/test/electron-browser/utils.ts diff --git a/src/vs/workbench/services/files/test/node/watcher.test.ts b/src/vs/workbench/services/files/test/electron-browser/watcher.test.ts similarity index 100% rename from src/vs/workbench/services/files/test/node/watcher.test.ts rename to src/vs/workbench/services/files/test/electron-browser/watcher.test.ts diff --git a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts similarity index 95% rename from src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts rename to src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts index 9e7e5d447f1..5d78d2c0752 100644 --- a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts @@ -16,11 +16,11 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { KeyCode, SimpleKeybinding, ChordKeybinding } from 'vs/base/common/keyCodes'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import * as extfs from 'vs/base/node/extfs'; -import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService, TestTextResourceConfigurationService, TestHashService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService, TestTextResourceConfigurationService, TestHashService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; import { IWorkspaceContextService, Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import * as uuid from 'vs/base/common/uuid'; import { ConfigurationService } from 'vs/platform/configuration/node/configurationService'; -import { FileService } from 'vs/workbench/services/files/node/fileService'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { IFileService } from 'vs/platform/files/common/files'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; @@ -80,7 +80,16 @@ suite('Keybindings Editing', () => { instantiationService.stub(ITelemetryService, NullTelemetryService); instantiationService.stub(IModeService, ModeServiceImpl); instantiationService.stub(IModelService, instantiationService.createInstance(ModelServiceImpl)); - instantiationService.stub(IFileService, new FileService(new TestContextService(new Workspace(testDir, testDir, toWorkspaceFolders([{ path: testDir }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), lifecycleService, { disableWatcher: true })); + instantiationService.stub(IFileService, new FileService( + new TestContextService(new Workspace(testDir, testDir, toWorkspaceFolders([{ path: testDir }]))), + TestEnvironmentService, + new TestTextResourceConfigurationService(), + new TestConfigurationService(), + lifecycleService, + new TestStorageService(), + new TestNotificationService(), + { disableWatcher: true }) + ); instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService)); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 0ca51d6b653..1fea905ffe0 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -815,9 +815,6 @@ export class TestFileService implements IFileService { unwatchFileChanges(resource: URI): void { } - updateOptions(options: any): void { - } - getEncoding(resource: URI): string { return 'utf8'; } From 6a47eccedc819d1507d7443d17625c52910f193c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 12:08:00 +0200 Subject: [PATCH 0591/1070] green extensions tests --- src/vs/platform/driver/common/driver.ts | 7 +++ .../driver/electron-browser/driver.ts | 5 +- .../platform/driver/electron-main/driver.ts | 62 ++++++++++++------- test/smoke/src/application.ts | 8 ++- test/smoke/src/areas/extensions/extensions.ts | 8 +-- 5 files changed, 57 insertions(+), 33 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index 8bdfc666f32..f859f45075b 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -131,10 +131,12 @@ export class DriverChannelClient implements IDriver { export interface IWindowDriverRegistry { registerWindowDriver(windowId: number): TPromise; + reloadWindowDriver(windowId: number): TPromise; } export interface IWindowDriverRegistryChannel extends IChannel { call(command: 'registerWindowDriver', arg: number): TPromise; + call(command: 'reloadWindowDriver', arg: number): TPromise; call(command: string, arg: any): TPromise; } @@ -145,6 +147,7 @@ export class WindowDriverRegistryChannel implements IWindowDriverRegistryChannel call(command: string, arg?: any): TPromise { switch (command) { case 'registerWindowDriver': return this.registry.registerWindowDriver(arg); + case 'reloadWindowDriver': return this.registry.reloadWindowDriver(arg); } return undefined; @@ -160,6 +163,10 @@ export class WindowDriverRegistryChannelClient implements IWindowDriverRegistry registerWindowDriver(windowId: number): TPromise { return this.channel.call('registerWindowDriver', windowId); } + + reloadWindowDriver(windowId: number): TPromise { + return this.channel.call('reloadWindowDriver', windowId); + } } export interface IWindowDriver { diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index 1845fe068d4..c762963dddc 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -6,7 +6,7 @@ 'use strict'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IDisposable } from 'vs/base/common/lifecycle'; +import { IDisposable, toDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; import { IWindowDriver, IElement, WindowDriverChannel, WindowDriverRegistryChannelClient } from 'vs/platform/driver/common/driver'; import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; @@ -180,5 +180,6 @@ export async function registerWindowDriver( await windowDriverRegistry.registerWindowDriver(windowId); - return client; + const disposable = toDisposable(() => windowDriverRegistry.reloadWindowDriver(windowId)); + return combinedDisposable([disposable, client]); } \ No newline at end of file diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 77505e14b6b..aa8ad7ed625 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -15,6 +15,7 @@ import { IPCServer, IClientRouter } from 'vs/base/parts/ipc/common/ipc'; import { SimpleKeybinding, KeyCode } from 'vs/base/common/keyCodes'; import { USLayoutResolvedKeybinding } from 'vs/platform/keybinding/common/usLayoutResolvedKeybinding'; import { OS } from 'vs/base/common/platform'; +import { Emitter, toPromise } from 'vs/base/common/event'; // TODO@joao: bad layering! import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; @@ -38,24 +39,33 @@ export class Driver implements IDriver, IWindowDriverRegistry { _serviceBrand: any; private registeredWindowIds = new Set(); + private reloadingWindowIds = new Set(); + private onDidReloadingChange = new Emitter(); constructor( private windowServer: IPCServer, @IWindowsMainService private windowsService: IWindowsMainService ) { } - registerWindowDriver(windowId: number): TPromise { + async registerWindowDriver(windowId: number): TPromise { this.registeredWindowIds.add(windowId); - return TPromise.as(null); + this.reloadingWindowIds.delete(windowId); + this.onDidReloadingChange.fire(); + } + + async reloadWindowDriver(windowId: number): TPromise { + this.reloadingWindowIds.add(windowId); } async getWindowIds(): TPromise { return this.windowsService.getWindows() .map(w => w.id) - .filter(id => this.registeredWindowIds.has(id)); + .filter(id => this.registeredWindowIds.has(id) && !this.reloadingWindowIds.has(id)); } async dispatchKeybinding(windowId: number, keybinding: string): TPromise { + await this.whenUnfrozen(windowId); + const [first, second] = KeybindingIO._readUserBinding(keybinding); await this._dispatchKeybinding(windowId, first); @@ -105,56 +115,64 @@ export class Driver implements IDriver, IWindowDriverRegistry { await TPromise.timeout(100); } - click(windowId: number, selector: string, xoffset?: number, yoffset?: number): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async click(windowId: number, selector: string, xoffset?: number, yoffset?: number): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.click(selector, xoffset, yoffset); } - doubleClick(windowId: number, selector: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async doubleClick(windowId: number, selector: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.doubleClick(selector); } - move(windowId: number, selector: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async move(windowId: number, selector: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.move(selector); } - setValue(windowId: number, selector: string, text: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async setValue(windowId: number, selector: string, text: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.setValue(selector, text); } - getTitle(windowId: number): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async getTitle(windowId: number): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.getTitle(); } - isActiveElement(windowId: number, selector: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async isActiveElement(windowId: number, selector: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.isActiveElement(selector); } - getElements(windowId: number, selector: string, recursive: boolean): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async getElements(windowId: number, selector: string, recursive: boolean): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.getElements(selector, recursive); } - typeInEditor(windowId: number, selector: string, text: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async typeInEditor(windowId: number, selector: string, text: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.typeInEditor(selector, text); } - getTerminalBuffer(windowId: number, selector: string): TPromise { - const windowDriver = this.getWindowDriver(windowId); + async getTerminalBuffer(windowId: number, selector: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); return windowDriver.getTerminalBuffer(selector); } - private getWindowDriver(windowId: number): IWindowDriver { + private async getWindowDriver(windowId: number): TPromise { + await this.whenUnfrozen(windowId); + const router = new WindowRouter(windowId); const windowDriverChannel = this.windowServer.getChannel('windowDriver', router); return new WindowDriverChannelClient(windowDriverChannel); } + + private async whenUnfrozen(windowId: number): TPromise { + while (this.reloadingWindowIds.has(windowId)) { + await toPromise(this.onDidReloadingChange.event); + } + } } export async function serve( diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 1d7294c1ed0..e88eec93df7 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -120,8 +120,10 @@ export class SpectronApplication { } async reload(): Promise { - await this.workbench.runCommand('Reload Window'); - // TODO @sandy: Find a proper condition to wait for reload + this.workbench.runCommand('Reload Window') + .catch(err => null); // ignore the connection drop errors + + // needs to be enough to propagate the 'Reload Window' command await new Promise(c => setTimeout(c, 1500)); await this.checkWindowReady(); } @@ -278,7 +280,7 @@ export class SpectronApplication { let retries = 0; - while (++retries < 50) { + while (++retries < 300) { // 30 seconds const ids = await this.codeInstance.driver.getWindowIds(); if (ids.length > 0) { diff --git a/test/smoke/src/areas/extensions/extensions.ts b/test/smoke/src/areas/extensions/extensions.ts index dc9bdf976ac..bedca3d1aa1 100644 --- a/test/smoke/src/areas/extensions/extensions.ts +++ b/test/smoke/src/areas/extensions/extensions.ts @@ -30,14 +30,10 @@ export class Extensions extends Viewlet { await this.api.setValue(SEARCH_BOX, name); } - async installExtension(name: string): Promise { + async installExtension(name: string): Promise { await this.searchForExtension(name); - // we might want to wait for a while longer since the Marketplace can be slow - // a minute should do - await this.api.waitFor(() => this.api.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.install`), void 0, 'waiting for install button', 600); - + await this.api.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.install`); await this.api.waitForElement(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.reload`); - return true; } } \ No newline at end of file From 6ec806c64f2e1cc17f270018cf1e83a063b6bb6d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 12:09:11 +0200 Subject: [PATCH 0592/1070] :lipstick: --- test/smoke/src/application.ts | 130 ---------------------------------- 1 file changed, 130 deletions(-) diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index e88eec93df7..8a7cb11142d 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { test as testPort } from 'portastic'; import { API } from './api'; import { ScreenCapturer } from './helpers/screenshot'; import { Workbench } from './areas/workbench/workbench'; @@ -12,19 +11,6 @@ import * as cp from 'child_process'; import { CodeDriver } from './driver'; import { Code, spawn, SpawnOptions } from './vscode/code'; -// Just hope random helps us here, cross your fingers! -export async function findFreePort(): Promise { - for (let i = 0; i < 10; i++) { - const port = 10000 + Math.round(Math.random() * 10000); - - if (await testPort(port)) { - return port; - } - } - - throw new Error('Could not find free port!'); -} - export enum Quality { Dev, Insiders, @@ -141,85 +127,6 @@ export class SpectronApplication { } private async startApplication(workspaceOrFolder: string, extraArgs: string[] = []): Promise { - - // let args: string[] = []; - // let chromeDriverArgs: string[] = []; - - // if (process.env.VSCODE_REPOSITORY) { - // args.push(process.env.VSCODE_REPOSITORY as string); - // } - - // args.push(workspaceOrFolder); - - // // Prevent 'Getting Started' web page from opening on clean user-data-dir - // args.push('--skip-getting-started'); - - // // Prevent 'Getting Started' web page from opening on clean user-data-dir - // args.push('--skip-release-notes'); - - // // Prevent Quick Open from closing when focus is stolen, this allows concurrent smoketest suite running - // args.push('--sticky-quickopen'); - - // // Disable telemetry - // args.push('--disable-telemetry'); - - // // Disable updates - // args.push('--disable-updates'); - - // // Disable crash reporter - // // This seems to be the fix for the strange hangups in which Code stays unresponsive - // // and tests finish badly with timeouts, leaving Code running in the background forever - // args.push('--disable-crash-reporter'); - - // // Ensure that running over custom extensions directory, rather than picking up the one that was used by a tester previously - // args.push(`--extensions-dir=${this.options.extensionsPath}`); - - // args.push(...extraArgs); - - // chromeDriverArgs.push(`--user-data-dir=${this.options.userDataDir}`); - - // Spectron always uses the same port number for the chrome driver - // and it handles gracefully when two instances use the same port number - // This works, but when one of the instances quits, it takes down - // chrome driver with it, leaving the other instance in DISPAIR!!! :( - // const port = await findFreePort(); - - // We must get a different port for debugging the smoketest express app - // otherwise concurrent test runs will clash on those ports - // const env = { PORT: String(await findFreePort()), ...process.env }; - - // const opts = { - // path: this.options.electronPath, - // port, - // args, - // env, - // chromeDriverArgs, - // startTimeout: 10000, - // requireName: 'nodeRequire' - // }; - - // const runName = String(SpectronApplication.count++); - // let testsuiteRootPath: string | undefined = undefined; - // let screenshotsDirPath: string | undefined = undefined; - - // if (this.options.artifactsPath) { - // testsuiteRootPath = path.join(this.options.artifactsPath, sanitize(runName)); - // mkdirp.sync(testsuiteRootPath); - - // // Collect screenshots - // screenshotsDirPath = path.join(testsuiteRootPath, 'screenshots'); - // mkdirp.sync(screenshotsDirPath); - - // // Collect chromedriver logs - // const chromedriverLogPath = path.join(testsuiteRootPath, 'chromedriver.log'); - // opts.chromeDriverLogPath = chromedriverLogPath; - - // // Collect webdriver logs - // const webdriverLogsPath = path.join(testsuiteRootPath, 'webdriver'); - // mkdirp.sync(webdriverLogsPath); - // opts.webdriverLogPath = webdriverLogsPath; - // } - this.codeInstance = await spawn({ codePath: this.options.codePath, workspacePath: workspaceOrFolder, @@ -228,43 +135,6 @@ export class SpectronApplication { verbose: this.options.verbose }); - // if (testsuiteRootPath) { - // // Collect logs - // const mainProcessLogPath = path.join(testsuiteRootPath, 'main.log'); - // const rendererProcessLogPath = path.join(testsuiteRootPath, 'renderer.log'); - - // const flush = async () => { - // if (!this.spectron) { - // return; - // } - - // const mainLogs = await this.spectron.client.getMainProcessLogs(); - // await new Promise((c, e) => fs.appendFile(mainProcessLogPath, mainLogs.join('\n'), { encoding: 'utf8' }, err => err ? e(err) : c())); - - // const rendererLogs = (await this.spectron.client.getRenderProcessLogs()).map(m => `${m.timestamp} - ${m.level} - ${m.message}`); - // await new Promise((c, e) => fs.appendFile(rendererProcessLogPath, rendererLogs.join('\n'), { encoding: 'utf8' }, err => err ? e(err) : c())); - // }; - - // let running = true; - // const loopFlush = async () => { - // while (true) { - // await flush(); - - // if (!running) { - // return; - // } - - // await new Promise(c => setTimeout(c, 1000)); - // } - // }; - - // const loopPromise = loopFlush(); - // this.stopLogCollection = () => { - // running = false; - // return loopPromise; - // }; - // } - this._screenCapturer = new ScreenCapturer(null as any, this._suiteName, ''); const driver = new CodeDriver(this.codeInstance.driver, this.options.verbose); From 04cb861845245ba4eff4935501ab6b6317fe3666 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 12:12:58 +0200 Subject: [PATCH 0593/1070] remove screenCapturer --- test/smoke/src/api.ts | 3 -- test/smoke/src/application.ts | 11 +--- test/smoke/src/areas/css/css.test.ts | 4 -- test/smoke/src/areas/debug/debug.test.ts | 11 ---- test/smoke/src/areas/editor/editor.test.ts | 1 - .../src/areas/extensions/extensions.test.ts | 1 - test/smoke/src/areas/git/git.test.ts | 1 - .../src/areas/multiroot/multiroot.test.ts | 1 - .../src/areas/preferences/preferences.test.ts | 3 -- .../src/areas/workbench/data-loss.test.ts | 5 -- .../areas/workbench/data-migration.test.ts | 1 - .../src/areas/workbench/localization.test.ts | 5 -- test/smoke/src/helpers/screenshot.ts | 37 ------------- test/smoke/src/helpers/utilities.ts | 53 ------------------- 14 files changed, 1 insertion(+), 136 deletions(-) delete mode 100644 test/smoke/src/helpers/screenshot.ts delete mode 100644 test/smoke/src/helpers/utilities.ts diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index cbe43c9da25..d548ea39f6b 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ScreenCapturer } from './helpers/screenshot'; import { Driver, Element } from './driver'; export class API { @@ -15,7 +14,6 @@ export class API { constructor( private driver: Driver, - private screenCapturer: ScreenCapturer, waitTime: number ) { this.retryCount = (waitTime * 1000) / this.retryDuration; @@ -99,7 +97,6 @@ export class API { while (true) { if (trial > retryCount) { - await this.screenCapturer.capture('timeout'); throw new Error(`${timeoutMessage}: Timed out after ${(retryCount * this.retryDuration) / 1000} seconds.`); } diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 8a7cb11142d..5ab35ebb77d 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { API } from './api'; -import { ScreenCapturer } from './helpers/screenshot'; import { Workbench } from './areas/workbench/workbench'; import * as fs from 'fs'; import * as cp from 'child_process'; @@ -36,7 +35,6 @@ export class SpectronApplication { private _api: API; private _workbench: Workbench; - private _screenCapturer: ScreenCapturer; private codeInstance: Code | undefined; private keybindings: any[]; private stopLogCollection: (() => Promise) | undefined; @@ -53,10 +51,6 @@ export class SpectronApplication { return this._api; } - get screenCapturer(): ScreenCapturer { - return this._screenCapturer; - } - get workbench(): Workbench { return this._workbench; } @@ -81,7 +75,6 @@ export class SpectronApplication { set suiteName(suiteName: string) { this._suiteName = suiteName; - this._screenCapturer.suiteName = suiteName; } async start(waitForWelcome: boolean = true): Promise { @@ -135,10 +128,8 @@ export class SpectronApplication { verbose: this.options.verbose }); - this._screenCapturer = new ScreenCapturer(null as any, this._suiteName, ''); - const driver = new CodeDriver(this.codeInstance.driver, this.options.verbose); - this._api = new API(driver, this.screenCapturer, this.options.waitTime); + this._api = new API(driver, this.options.waitTime); this._workbench = new Workbench(this._api, this.keybindings, this.userDataPath); } diff --git a/test/smoke/src/areas/css/css.test.ts b/test/smoke/src/areas/css/css.test.ts index 6b187d53a28..cce6027a184 100644 --- a/test/smoke/src/areas/css/css.test.ts +++ b/test/smoke/src/areas/css/css.test.ts @@ -26,11 +26,9 @@ export function setup() { await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); await app.api.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.WARNING)); - await app.screenCapturer.capture('CSS Warning in editor'); await app.workbench.problems.showProblemsView(); await app.api.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.WARNING)); - await app.screenCapturer.capture('CSS Warning in problems view'); await app.workbench.problems.hideProblemsView(); }); @@ -41,12 +39,10 @@ export function setup() { await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); await app.api.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.ERROR)); - await app.screenCapturer.capture('CSS Error in editor'); const problems = new Problems(app.api, app.workbench); await problems.showProblemsView(); await app.api.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.ERROR)); - await app.screenCapturer.capture('CSS Error in probles view'); await problems.hideProblemsView(); }); }); diff --git a/test/smoke/src/areas/debug/debug.test.ts b/test/smoke/src/areas/debug/debug.test.ts index 4223c58bee3..392a8c87e48 100644 --- a/test/smoke/src/areas/debug/debug.test.ts +++ b/test/smoke/src/areas/debug/debug.test.ts @@ -31,7 +31,6 @@ export function setup() { fs.writeFileSync(launchJsonPath, JSON.stringify(config, undefined, 4), 'utf8'); await app.workbench.editor.waitForEditorContents('launch.json', contents => /"protocol": "inspector"/.test(contents)); - await app.screenCapturer.capture('launch.json file'); assert.equal(config.configurations[0].request, 'launch'); assert.equal(config.configurations[0].type, 'node'); @@ -47,7 +46,6 @@ export function setup() { await app.workbench.quickopen.openFile('index.js'); await app.workbench.debug.setBreakpointOnLine(6); - await app.screenCapturer.capture('breakpoints are set'); }); let port: number; @@ -58,15 +56,12 @@ export function setup() { await new Promise(c => setTimeout(c, 100)); port = await app.workbench.debug.startDebugging(); - await app.screenCapturer.capture('debugging has started'); await new Promise((c, e) => { const request = http.get(`http://localhost:${port}`); request.on('error', e); app.workbench.debug.waitForStackFrame(sf => sf.name === 'index.js' && sf.lineNumber === 6, 'looking for index.js and line 6').then(c, e); }); - - await app.screenCapturer.capture('debugging is paused'); }); it('focus stack frames and variables', async function () { @@ -88,15 +83,12 @@ export function setup() { const app = this.app as SpectronApplication; await app.workbench.debug.stepIn(); - await app.screenCapturer.capture('debugging has stepped in'); const first = await app.workbench.debug.waitForStackFrame(sf => sf.name === 'response.js', 'looking for response.js'); await app.workbench.debug.stepOver(); - await app.screenCapturer.capture('debugging has stepped over'); await app.workbench.debug.waitForStackFrame(sf => sf.name === 'response.js' && sf.lineNumber === first.lineNumber + 1, `looking for response.js and line ${first.lineNumber + 1}`); await app.workbench.debug.stepOut(); - await app.screenCapturer.capture('debugging has stepped out'); await app.workbench.debug.waitForStackFrame(sf => sf.name === 'index.js' && sf.lineNumber === 7, `looking for index.js and line 7`); }); @@ -105,7 +97,6 @@ export function setup() { const app = this.app as SpectronApplication; await app.workbench.debug.continue(); - await app.screenCapturer.capture('debugging has continued'); await new Promise((c, e) => { const request = http.get(`http://localhost:${port}`); @@ -113,7 +104,6 @@ export function setup() { app.workbench.debug.waitForStackFrame(sf => sf.name === 'index.js' && sf.lineNumber === 6, `looking for index.js and line 6`).then(c, e); }); - await app.screenCapturer.capture('debugging is paused'); }); it('debug console', async function () { @@ -126,7 +116,6 @@ export function setup() { const app = this.app as SpectronApplication; await app.workbench.debug.stopDebugging(); - await app.screenCapturer.capture('debugging has stopped'); }); }); } \ No newline at end of file diff --git a/test/smoke/src/areas/editor/editor.test.ts b/test/smoke/src/areas/editor/editor.test.ts index 257905b1289..4f7267fef95 100644 --- a/test/smoke/src/areas/editor/editor.test.ts +++ b/test/smoke/src/areas/editor/editor.test.ts @@ -35,7 +35,6 @@ export function setup() { await app.workbench.quickopen.openFile('www'); await app.workbench.editor.rename('www', 7, 'app', 'newApp'); await app.workbench.editor.waitForEditorContents('www', contents => contents.indexOf('newApp') > -1); - await app.screenCapturer.capture('Rename result'); }); // it('folds/unfolds the code correctly', async function () { diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index 703581dc99e..ca3c2820676 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -31,7 +31,6 @@ export function setup() { await app.workbench.runCommand('Smoke Test Check'); const statusbarText = await app.workbench.statusbar.getStatusbarTextByTitle('smoke test'); - await app.screenCapturer.capture('Statusbar'); assert.equal(statusbarText, 'VS Code Smoke Test Check'); }); }); diff --git a/test/smoke/src/areas/git/git.test.ts b/test/smoke/src/areas/git/git.test.ts index 1be1f6c3a41..1135877da50 100644 --- a/test/smoke/src/areas/git/git.test.ts +++ b/test/smoke/src/areas/git/git.test.ts @@ -32,7 +32,6 @@ export function setup() { await app.workbench.scm.refreshSCMViewlet(); await app.workbench.scm.waitForChange('app.js', 'Modified'); await app.workbench.scm.waitForChange('index.jade', 'Modified'); - await app.screenCapturer.capture('changes'); }); it('opens diff editor', async function () { diff --git a/test/smoke/src/areas/multiroot/multiroot.test.ts b/test/smoke/src/areas/multiroot/multiroot.test.ts index 750845ded80..a5e1b9c9269 100644 --- a/test/smoke/src/areas/multiroot/multiroot.test.ts +++ b/test/smoke/src/areas/multiroot/multiroot.test.ts @@ -30,7 +30,6 @@ export function setup() { it('shows workspace name in title', async function () { const app = this.app as SpectronApplication; const title = await app.api.getTitle(); - await app.screenCapturer.capture('window title'); assert.ok(title.indexOf('smoketest (Workspace)') >= 0); }); }); diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index e0d0e8223ab..76bddda4621 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -19,13 +19,10 @@ export function setup() { await app.workbench.explorer.openFile('app.js'); await app.api.waitForElements('.line-numbers', false, elements => !!elements.length); - await app.screenCapturer.capture('app.js has line numbers'); await app.workbench.settingsEditor.addUserSetting('editor.lineNumbers', '"off"'); await app.workbench.editors.selectTab('app.js'); await app.api.waitForElements('.line-numbers', false, result => !result || result.length === 0); - - await app.screenCapturer.capture('line numbers hidden'); }); it(`changes 'workbench.action.toggleSidebarPosition' command key binding and verifies it`, async function () { diff --git a/test/smoke/src/areas/workbench/data-loss.test.ts b/test/smoke/src/areas/workbench/data-loss.test.ts index 9d5298bbed8..50d477f2803 100644 --- a/test/smoke/src/areas/workbench/data-loss.test.ts +++ b/test/smoke/src/areas/workbench/data-loss.test.ts @@ -18,24 +18,19 @@ export function setup() { const untitled = 'Untitled-1'; const textToTypeInUntitled = 'Hello, Unitled Code'; await app.workbench.editor.waitForTypeInEditor(untitled, textToTypeInUntitled); - await app.screenCapturer.capture('Untitled file before reload'); const readmeMd = 'readme.md'; const textToType = 'Hello, Code'; await app.workbench.explorer.openFile(readmeMd); await app.workbench.editor.waitForTypeInEditor(readmeMd, textToType); - await app.screenCapturer.capture(`${readmeMd} before reload`); await app.reload(); - await app.screenCapturer.capture('After reload'); await app.workbench.editors.waitForActiveTab(readmeMd, true); - await app.screenCapturer.capture(`${readmeMd} after reload`); await app.workbench.editor.waitForEditorContents(readmeMd, c => c.indexOf(textToType) > -1); await app.workbench.editors.waitForTab(untitled, true); await app.workbench.editors.selectTab(untitled, true); - await app.screenCapturer.capture('Untitled file after reload'); await app.workbench.editor.waitForEditorContents(untitled, c => c.indexOf(textToTypeInUntitled) > -1); }); }); diff --git a/test/smoke/src/areas/workbench/data-migration.test.ts b/test/smoke/src/areas/workbench/data-migration.test.ts index 582331b6aa9..3dc5a8e44d8 100644 --- a/test/smoke/src/areas/workbench/data-migration.test.ts +++ b/test/smoke/src/areas/workbench/data-migration.test.ts @@ -51,7 +51,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { assert.ok(await app.workbench.editors.waitForActiveTab('Untitled-1', true), `Untitled-1 tab is not present after migration.`); await app.workbench.editor.waitForEditorContents('Untitled-1', c => c.indexOf(textToType) > -1); - await app.screenCapturer.capture('Untitled file text'); await app.stop(); }); diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index ed1f88b0cf1..a39722858e4 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -29,27 +29,22 @@ export function setup() { } let text = await app.workbench.explorer.getOpenEditorsViewTitle(); - await app.screenCapturer.capture('Open editors title'); assert(/geöffnete editoren/i.test(text)); await app.workbench.search.openSearchViewlet(); text = await app.workbench.search.getTitle(); - await app.screenCapturer.capture('Search title'); assert(/suchen/i.test(text)); await app.workbench.scm.openSCMViewlet(); text = await app.workbench.scm.getTitle(); - await app.screenCapturer.capture('Scm title'); assert(/quellcodeverwaltung/i.test(text)); await app.workbench.debug.openDebugViewlet(); text = await app.workbench.debug.getTitle(); - await app.screenCapturer.capture('Debug title'); assert(/debuggen/i.test(text)); await app.workbench.extensions.openExtensionsViewlet(); text = await app.workbench.extensions.getTitle(); - await app.screenCapturer.capture('Extensions title'); assert(/erweiterungen/i.test(text)); }); }); diff --git a/test/smoke/src/helpers/screenshot.ts b/test/smoke/src/helpers/screenshot.ts deleted file mode 100644 index 18a068ec388..00000000000 --- a/test/smoke/src/helpers/screenshot.ts +++ /dev/null @@ -1,37 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as path from 'path'; -import * as fs from 'fs'; -import * as mkdirp from 'mkdirp'; -import { Application } from 'spectron'; -import { sanitize } from './utilities'; - -export class ScreenCapturer { - - private static counter = 0; - - constructor( - private application: Application, - public suiteName: string, - private screenshotsDirPath: string | undefined, - ) { } - - async capture(name: string): Promise { - if (!this.screenshotsDirPath) { - return; - } - - const screenshotPath = path.join( - this.screenshotsDirPath, - sanitize(this.suiteName), - `${ScreenCapturer.counter++}-${sanitize(name)}.png` - ); - - const image = await this.application.browserWindow.capturePage(); - await new Promise((c, e) => mkdirp(path.dirname(screenshotPath), err => err ? e(err) : c())); - await new Promise((c, e) => fs.writeFile(screenshotPath, image, err => err ? e(err) : c())); - } -} diff --git a/test/smoke/src/helpers/utilities.ts b/test/smoke/src/helpers/utilities.ts deleted file mode 100644 index 8b86d31c957..00000000000 --- a/test/smoke/src/helpers/utilities.ts +++ /dev/null @@ -1,53 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as fs from 'fs'; -import { dirname } from 'path'; - -export function nfcall(fn: Function, ...args): Promise { - return new Promise((c, e) => fn(...args, (err, r) => err ? e(err) : c(r))); -} - -export async function mkdirp(path: string, mode?: number): Promise { - const mkdir = async () => { - try { - await nfcall(fs.mkdir, path, mode); - } catch (err) { - if (err.code === 'EEXIST') { - const stat = await nfcall(fs.stat, path); - - if (stat.isDirectory) { - return; - } - - throw new Error(`'${path}' exists and is not a directory.`); - } - - throw err; - } - }; - - // is root? - if (path === dirname(path)) { - return true; - } - - try { - await mkdir(); - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - - await mkdirp(dirname(path), mode); - await mkdir(); - } - - return true; -} - -export function sanitize(name: string): string { - return name.replace(/[&*:\/]/g, ''); -} \ No newline at end of file From 72bd5854c8fbd80c6b8ba4d73b473eb552b9fed9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 12:18:42 +0200 Subject: [PATCH 0594/1070] cleanup --- test/smoke/src/application.ts | 6 ------ test/smoke/src/areas/css/css.test.ts | 4 ---- test/smoke/src/areas/debug/debug.test.ts | 5 ----- test/smoke/src/areas/editor/editor.test.ts | 4 ---- test/smoke/src/areas/explorer/explorer.test.ts | 4 ---- test/smoke/src/areas/extensions/extensions.test.ts | 4 ---- test/smoke/src/areas/git/git.test.ts | 5 ----- test/smoke/src/areas/multiroot/multiroot.test.ts | 2 -- test/smoke/src/areas/preferences/preferences.test.ts | 4 ---- test/smoke/src/areas/search/search.test.ts | 4 ---- test/smoke/src/areas/statusbar/statusbar.test.ts | 4 ---- test/smoke/src/areas/workbench/data-loss.test.ts | 4 ---- test/smoke/src/areas/workbench/data-migration.test.ts | 6 ------ test/smoke/src/areas/workbench/localization.test.ts | 1 - 14 files changed, 57 deletions(-) diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 5ab35ebb77d..d646c6c6e6a 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -71,12 +71,6 @@ export class SpectronApplication { return this.options.workspaceFilePath; } - private _suiteName: string = 'Init'; - - set suiteName(suiteName: string) { - this._suiteName = suiteName; - } - async start(waitForWelcome: boolean = true): Promise { await this._start(); diff --git a/test/smoke/src/areas/css/css.test.ts b/test/smoke/src/areas/css/css.test.ts index cce6027a184..ad0d7923b1a 100644 --- a/test/smoke/src/areas/css/css.test.ts +++ b/test/smoke/src/areas/css/css.test.ts @@ -8,10 +8,6 @@ import { ProblemSeverity, Problems } from '../problems/problems'; export function setup() { describe('CSS', () => { - before(function () { - this.app.suiteName = 'CSS'; - }); - it('verifies quick outline', async function () { const app = this.app as SpectronApplication; await app.workbench.quickopen.openFile('style.css'); diff --git a/test/smoke/src/areas/debug/debug.test.ts b/test/smoke/src/areas/debug/debug.test.ts index 392a8c87e48..edb1d58be46 100644 --- a/test/smoke/src/areas/debug/debug.test.ts +++ b/test/smoke/src/areas/debug/debug.test.ts @@ -12,11 +12,6 @@ import { SpectronApplication } from '../../application'; export function setup() { describe('Debug', () => { - before(async function () { - const app = this.app as SpectronApplication; - app.suiteName = 'Debug'; - }); - it('configure launch json', async function () { const app = this.app as SpectronApplication; diff --git a/test/smoke/src/areas/editor/editor.test.ts b/test/smoke/src/areas/editor/editor.test.ts index 4f7267fef95..5bc47218228 100644 --- a/test/smoke/src/areas/editor/editor.test.ts +++ b/test/smoke/src/areas/editor/editor.test.ts @@ -7,10 +7,6 @@ import { SpectronApplication } from '../../application'; export function setup() { describe('Editor', () => { - before(function () { - this.app.suiteName = 'Editor'; - }); - it('shows correct quick outline', async function () { const app = this.app as SpectronApplication; await app.workbench.quickopen.openFile('www'); diff --git a/test/smoke/src/areas/explorer/explorer.test.ts b/test/smoke/src/areas/explorer/explorer.test.ts index a18c7ec6f0c..5cde709ad74 100644 --- a/test/smoke/src/areas/explorer/explorer.test.ts +++ b/test/smoke/src/areas/explorer/explorer.test.ts @@ -7,10 +7,6 @@ import { SpectronApplication } from '../../application'; export function setup() { describe('Explorer', () => { - before(function () { - this.app.suiteName = 'Explorer'; - }); - it('quick open search produces correct result', async function () { const app = this.app as SpectronApplication; const expectedNames = [ diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index ca3c2820676..f9e324c77c3 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -8,10 +8,6 @@ import { SpectronApplication, Quality } from '../../application'; export function setup() { describe('Extensions', () => { - before(function () { - this.app.suiteName = 'Extensions'; - }); - it(`install and activate vscode-smoketest-check extension`, async function () { const app = this.app as SpectronApplication; diff --git a/test/smoke/src/areas/git/git.test.ts b/test/smoke/src/areas/git/git.test.ts index 1135877da50..9c89b77a5e2 100644 --- a/test/smoke/src/areas/git/git.test.ts +++ b/test/smoke/src/areas/git/git.test.ts @@ -11,11 +11,6 @@ const SYNC_STATUSBAR = 'div[id="workbench.parts.statusbar"] .statusbar-entry a[t export function setup() { describe('Git', () => { - before(async function () { - const app = this.app as SpectronApplication; - app.suiteName = 'Git'; - }); - it('reflects working tree changes', async function () { const app = this.app as SpectronApplication; diff --git a/test/smoke/src/areas/multiroot/multiroot.test.ts b/test/smoke/src/areas/multiroot/multiroot.test.ts index a5e1b9c9269..add575164a1 100644 --- a/test/smoke/src/areas/multiroot/multiroot.test.ts +++ b/test/smoke/src/areas/multiroot/multiroot.test.ts @@ -10,8 +10,6 @@ export function setup() { describe('Multiroot', () => { before(async function () { - this.app.suiteName = 'Multiroot'; - const app = this.app as SpectronApplication; // restart with preventing additional windows from restoring diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index 76bddda4621..21dde973031 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -10,10 +10,6 @@ import { ActivityBarPosition } from '../activitybar/activityBar'; export function setup() { describe('Preferences', () => { - before(function () { - this.app.suiteName = 'Preferences'; - }); - it('turns off editor line numbers and verifies the live change', async function () { const app = this.app as SpectronApplication; diff --git a/test/smoke/src/areas/search/search.test.ts b/test/smoke/src/areas/search/search.test.ts index caa3444efe4..9351c8fafe4 100644 --- a/test/smoke/src/areas/search/search.test.ts +++ b/test/smoke/src/areas/search/search.test.ts @@ -7,10 +7,6 @@ import { SpectronApplication } from '../../application'; export function setup() { describe('Search', () => { - before(function () { - this.app.suiteName = 'Search'; - }); - it('searches for body & checks for correct result number', async function () { const app = this.app as SpectronApplication; await app.workbench.search.openSearchViewlet(); diff --git a/test/smoke/src/areas/statusbar/statusbar.test.ts b/test/smoke/src/areas/statusbar/statusbar.test.ts index 24dce071f6c..78954928847 100644 --- a/test/smoke/src/areas/statusbar/statusbar.test.ts +++ b/test/smoke/src/areas/statusbar/statusbar.test.ts @@ -8,10 +8,6 @@ import { StatusBarElement } from './statusbar'; export function setup() { describe('Statusbar', () => { - before(function () { - this.app.suiteName = 'Statusbar'; - }); - it('verifies presence of all default status bar elements', async function () { const app = this.app as SpectronApplication; diff --git a/test/smoke/src/areas/workbench/data-loss.test.ts b/test/smoke/src/areas/workbench/data-loss.test.ts index 50d477f2803..2781d043ea4 100644 --- a/test/smoke/src/areas/workbench/data-loss.test.ts +++ b/test/smoke/src/areas/workbench/data-loss.test.ts @@ -7,10 +7,6 @@ import { SpectronApplication } from '../../application'; export function setup() { describe('Dataloss', () => { - before(function () { - this.app.suiteName = 'Dataloss'; - }); - it(`verifies that 'hot exit' works for dirty files`, async function () { const app = this.app as SpectronApplication; await app.workbench.editors.newUntitledFile(); diff --git a/test/smoke/src/areas/workbench/data-migration.test.ts b/test/smoke/src/areas/workbench/data-migration.test.ts index 3dc5a8e44d8..c48d216f80b 100644 --- a/test/smoke/src/areas/workbench/data-migration.test.ts +++ b/test/smoke/src/areas/workbench/data-migration.test.ts @@ -28,7 +28,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await stableApp.start(); - stableApp.suiteName = 'Data Migration'; const textToType = 'Very dirty file'; @@ -46,7 +45,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await app.start(false); - app.suiteName = 'Data Migration'; assert.ok(await app.workbench.editors.waitForActiveTab('Untitled-1', true), `Untitled-1 tab is not present after migration.`); @@ -64,7 +62,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await stableApp.start(); - stableApp.suiteName = 'Data Migration'; const fileName = 'app.js'; const textPart = 'This is going to be an unsaved file'; @@ -84,7 +81,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await app.start(false); - app.suiteName = 'Data Migration'; assert.ok(await app.workbench.editors.waitForActiveTab(fileName), `dirty file tab is not present after migration.`); await app.workbench.editor.waitForEditorContents(fileName, c => c.indexOf(textPart) > -1); @@ -101,7 +97,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await stableApp.start(); - stableApp.suiteName = 'Data Migration'; const fileName1 = 'app.js', fileName2 = 'jsconfig.json', fileName3 = 'readme.md'; @@ -119,7 +114,6 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { } await app.start(false); - app.suiteName = 'Data Migration'; assert.ok(await app.workbench.editors.waitForTab(fileName1), `${fileName1} tab was not restored after migration.`); assert.ok(await app.workbench.editors.waitForTab(fileName2), `${fileName2} tab was not restored after migration.`); diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index a39722858e4..2a41c77ea20 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -11,7 +11,6 @@ export function setup() { describe('Localization', () => { before(async function () { const app = this.app as SpectronApplication; - this.app.suiteName = 'Localization'; if (app.quality === Quality.Dev) { return; From 1b2f1980c40636c2ac76a99275333c720b496e5b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 12:20:37 +0200 Subject: [PATCH 0595/1070] forward extraArgs to app --- test/smoke/src/application.ts | 3 ++- test/smoke/src/vscode/code.ts | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index d646c6c6e6a..c656696eec6 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -119,7 +119,8 @@ export class SpectronApplication { workspacePath: workspaceOrFolder, userDataDir: this.options.userDataDir, extensionsPath: this.options.extensionsPath, - verbose: this.options.verbose + verbose: this.options.verbose, + extraArgs }); const driver = new CodeDriver(this.codeInstance.driver, this.options.verbose); diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index b7604d04e4a..a5e0110b796 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -72,14 +72,6 @@ export class Code { } } -export interface SpawnOptions { - codePath?: string; - workspacePath: string; - userDataDir: string; - extensionsPath: string; - verbose: boolean; -} - export async function connect(child: cp.ChildProcess, outPath: string, handlePath: string): Promise { let errCount = 0; @@ -103,6 +95,15 @@ export async function connect(child: cp.ChildProcess, outPath: string, handlePat const instances = new Set(); process.once('exit', () => instances.forEach(code => code.kill())); +export interface SpawnOptions { + codePath?: string; + workspacePath: string; + userDataDir: string; + extensionsPath: string; + verbose: boolean; + extraArgs?: string[]; +} + export async function spawn(options: SpawnOptions): Promise { const codePath = options.codePath; const electronPath = codePath ? getBuildElectronPath(codePath) : getDevElectronPath(); @@ -126,6 +127,10 @@ export async function spawn(options: SpawnOptions): Promise { args.unshift(repoPath); } + if (options.extraArgs) { + args.push(...options.extraArgs); + } + const spawnOptions: cp.SpawnOptions = {}; if (options.verbose) { From 1b33eb37d5df3b74d373bde1f8b6446fa4df88e5 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 12:32:56 +0200 Subject: [PATCH 0596/1070] make readDirectory return string/stat-tuples, #47475 --- src/vs/platform/files/common/files.ts | 2 +- src/vs/vscode.proposed.d.ts | 8 +++---- .../electron-browser/mainThreadFileSystem.ts | 6 ++---- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- .../workbench/api/node/extHostFileSystem.ts | 21 +++++++++++-------- .../electron-browser/remoteFileService.ts | 6 +++++- 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 8efe3094e5d..5782c248f64 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -174,7 +174,7 @@ export interface IFileSystemProvider { writeFile(resource: URI, content: Uint8Array): TPromise; move(from: URI, to: URI): TPromise; mkdir(resource: URI): TPromise; - readdir(resource: URI): TPromise<[URI, IStat][]>; + readdir(resource: URI): TPromise<[string, IStat][]>; delete(resource: URI): TPromise; } diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b64040df24d..3f790bdb8db 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -251,7 +251,7 @@ declare module 'vscode' { // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 3; + _version: 4; /** * An event to signal that a resource has been created, changed, or deleted. @@ -273,9 +273,9 @@ declare module 'vscode' { * * @param uri The uri of the folder. * @param token A cancellation token. - * @return A thenable that resolves to an array of tuples of resources and files stats. + * @return A thenable that resolves to an array of tuples of file names and files stats. */ - readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat2][]>; + readDirectory(uri: Uri, token: CancellationToken): Thenable<[string, FileStat2][]>; /** * Read the entire contents of a file. @@ -313,7 +313,7 @@ declare module 'vscode' { delete(uri: Uri, token: CancellationToken): Thenable; // todo@remote - create(uri: Uri, options: { type: FileType }, token: CancellationToken): Thenable; + create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 80ea36bc303..7e63bbd33d5 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -116,10 +116,8 @@ class RemoteFileSystemProvider implements IFileSystemProvider { mkdir(resource: URI): TPromise { return this._proxy.$mkdir(this._handle, resource); } - readdir(resource: URI): TPromise<[URI, IStat][], any> { - return this._proxy.$readdir(this._handle, resource).then(data => { - return data.map(tuple => <[URI, IStat]>[URI.revive(tuple[0]), tuple[1]]); - }); + readdir(resource: URI): TPromise<[string, IStat][], any> { + return this._proxy.$readdir(this._handle, resource); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 44e0ba2ce5b..3c4042cd144 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -572,7 +572,7 @@ export interface ExtHostFileSystemShape { $move(handle: number, resource: UriComponents, target: UriComponents): TPromise; $mkdir(handle: number, resource: UriComponents): TPromise; - $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][]>; + $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; $delete(handle: number, resource: UriComponents): TPromise; diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 109c18061b1..a3c2ab0b710 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -10,6 +10,7 @@ import { Event, mapEvent } from 'vs/base/common/event'; import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape } from './extHost.protocol'; import * as vscode from 'vscode'; import * as files from 'vs/platform/files/common/files'; +import * as path from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { asWinJsPromise } from 'vs/base/common/async'; import { IPatternInfo } from 'vs/platform/search/common/search'; @@ -59,7 +60,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 3; + _version: 4; onDidChange: vscode.Event; @@ -77,9 +78,9 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { return this._delegate.move(oldUri, newUri).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } - readDirectory(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat2][]> { + readDirectory(resource: vscode.Uri): Thenable<[string, vscode.FileStat2][]> { return this._delegate.readdir(resource).then(tuples => { - return tuples.map(tuple => <[vscode.Uri, vscode.FileStat2]>[tuple[0], FileSystemProviderShim._modernizeFileStat(tuple[1])]); + return tuples.map(tuple => <[string, vscode.FileStat2]>[path.posix.basename(tuple[0].path), FileSystemProviderShim._modernizeFileStat(tuple[1])]); }); } @@ -131,8 +132,8 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { } }); } - create(resource: vscode.Uri, options: { type: vscode.FileType; }): Thenable { - if (options.type === FileType.Dir) { + create(resource: vscode.Uri, options: { type: vscode.FileType2; }): Thenable { + if (options.type === FileType2.Directory) { return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } else { return this._delegate.write(resource, Buffer.from([])) @@ -173,10 +174,12 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 3) { + if (newProvider && newProvider._version === 4) { return this._doRegisterFileSystemProvider(scheme, newProvider); - } else { + } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); + } else { + throw new Error('IGNORED both provider'); } } @@ -234,7 +237,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } - $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, files.IStat][], any> { + $readdir(handle: number, resource: UriComponents): TPromise<[string, files.IStat][], any> { return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); } $readFile(handle: number, resource: UriComponents): TPromise { @@ -254,7 +257,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), token)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir }, token)); + return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType2.Directory }, token)); } $provideFileSearchResults(handle: number, session: number, query: string): TPromise { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 2137a762b6b..23fd3fb4261 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -42,7 +42,11 @@ function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse // dir -> resolve return provider.readdir(resource).then(entries => { // resolve children if requested - return TPromise.join(entries.map(stat => toIFileStat(provider, stat, recurse))).then(children => { + return TPromise.join(entries.map(tuple => { + const [name, stat] = tuple; + const childResource = resource.with({ path: posix.join(resource.path, name) }); + return toIFileStat(provider, [childResource, stat], recurse); + })).then(children => { fileStat.children = children; return fileStat; }); From c28e9b17fd3660ca026aaeac3c71ac06b3d493f5 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 12:38:30 +0200 Subject: [PATCH 0597/1070] bug - make remote-read-stream push `null` eagerly --- .../services/files/electron-browser/remoteFileService.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 23fd3fb4261..9e9aa32cbe2 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -227,18 +227,13 @@ export class RemoteFileService extends FileService { private _createReadStream(provider: IFileSystemProvider, resource: URI): Readable { return new class extends Readable { - _done: boolean = false; _read(size?: number): void { - if (this._done) { - this.push(null); - return; - } provider.readFile(resource).then(data => { - this._done = true; this.push(data); + this.push(null); }, err => { - this._done = true; this.emit('error', err); + this.push(null); }); } }; From 4c5ed7e3c8ef746bc9dbb812eaa2f79fd1e0456f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Weinand?= Date: Wed, 11 Apr 2018 12:51:10 +0200 Subject: [PATCH 0598/1070] be more resilent when parsing RFC 2822 header in DAP --- .../workbench/parts/debug/node/debugAdapter.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index 9d6c1456e80..943bb658fb9 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -134,6 +134,8 @@ export abstract class AbstractDebugAdapter implements debug.IDebugAdapter { export abstract class StreamDebugAdapter extends AbstractDebugAdapter { private static readonly TWO_CRLF = '\r\n\r\n'; + private static readonly HEADER_LINESEPARATOR = /\r?\n/; // allow for non-RFC 2822 conforming line separators + private static readonly HEADER_FIELDSEPARATOR = /: */; private outputStream: stream.Writable; private rawData: Buffer; @@ -191,13 +193,12 @@ export abstract class StreamDebugAdapter extends AbstractDebugAdapter { continue; // there may be more complete messages to process } } else { - /* const idx = this.rawData.indexOf(StreamDebugAdapter.TWO_CRLF); if (idx !== -1) { const header = this.rawData.toString('utf8', 0, idx); - const lines = header.split('\r\n'); + const lines = header.split(StreamDebugAdapter.HEADER_LINESEPARATOR); for (const h of lines) { - const kvPair = h.split(/: +/); + const kvPair = h.split(StreamDebugAdapter.HEADER_FIELDSEPARATOR); if (kvPair[0] === 'Content-Length') { this.contentLength = Number(kvPair[1]); } @@ -205,17 +206,6 @@ export abstract class StreamDebugAdapter extends AbstractDebugAdapter { this.rawData = this.rawData.slice(idx + StreamDebugAdapter.TWO_CRLF.length); continue; } - */ - const s = this.rawData.toString('utf8', 0, this.rawData.length); - const idx = s.indexOf(StreamDebugAdapter.TWO_CRLF); - if (idx !== -1) { - const match = /Content-Length: (\d+)/.exec(s); - if (match && match[1]) { - this.contentLength = Number(match[1]); - this.rawData = this.rawData.slice(idx + StreamDebugAdapter.TWO_CRLF.length); - continue; // try to handle a complete message - } - } } break; } From 5b003aeaee7b81ae3009ae932f514d9f87778836 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 13:45:27 +0200 Subject: [PATCH 0599/1070] tweak file change event, #47475 --- src/vs/vscode.proposed.d.ts | 2 +- src/vs/workbench/api/node/extHostFileSystem.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 3f790bdb8db..e20750ac7da 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -231,7 +231,7 @@ declare module 'vscode' { export interface FileChange2 { type: FileChangeType2; - resource: Uri; + uri: Uri; } export enum FileType2 { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index a3c2ab0b710..de9247046b7 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -118,7 +118,7 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { break; } - return { resource, type: newType }; + return { uri: resource, type: newType }; } // --- delete/create file or folder @@ -192,7 +192,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { if (provider.onDidChange) { reg = provider.onDidChange(event => { let newEvent = event.map(e => { - let { resource, type } = e; + let { uri: resource, type } = e; let newType: files.FileChangeType; switch (type) { case FileChangeType2.Changed: From 9008ae5eb7585214131b927eeff53073893b8a98 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 13:57:03 +0200 Subject: [PATCH 0600/1070] reuse getEncoding/getPreferredEncoding in remoteFileService, #38776 --- src/vs/base/node/encoding.ts | 4 +-- .../files/electron-browser/fileService.ts | 2 +- .../electron-browser/remoteFileService.ts | 29 ++++--------------- 3 files changed, 9 insertions(+), 26 deletions(-) diff --git a/src/vs/base/node/encoding.ts b/src/vs/base/node/encoding.ts index 7a35237f3e9..80da2a7c5c1 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/base/node/encoding.ts @@ -20,7 +20,7 @@ export const UTF16le = 'utf16le'; export interface IDecodeStreamOptions { guessEncoding?: boolean; minBytesRequiredForDetection?: number; - overwriteEncoding?(detected: string): string; + overwriteEncoding?(detectedEncoding: string): string; } export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions): TPromise<{ detected: IDetectedEncodingResult, stream: NodeJS.ReadableStream }> { @@ -79,7 +79,7 @@ export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({ buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered }, options.guessEncoding)).then(detected => { - detected.encoding = options.overwriteEncoding(detected.encoding); // default encoding + detected.encoding = options.overwriteEncoding(detected.encoding); this._decodeStream = decodeStream(detected.encoding); for (const buffer of this._buffer) { this._decodeStream.write(buffer); diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 7e459ad3dea..39c172f4de5 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -1068,7 +1068,7 @@ export class FileService implements IFileService { }); } - private getPeferredEncoding(resource: uri, options: IResolveContentOptions, detected: encoding.IDetectedEncodingResult): string { + protected getPeferredEncoding(resource: uri, options: IResolveContentOptions, detected: encoding.IDetectedEncodingResult): string { let preferredEncoding: string; if (options && options.encoding) { if (detected.encoding === encoding.UTF8 && options.encoding === encoding.UTF8) { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 9e9aa32cbe2..d9420bb679f 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -12,7 +12,7 @@ import { posix } from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { isFalsyOrEmpty, distinct } from 'vs/base/common/arrays'; import { Schemas } from 'vs/base/common/network'; -import { encode, UTF8, UTF8_with_bom, toDecodeStream } from 'vs/base/node/encoding'; +import { encode, toDecodeStream, IDecodeStreamOptions } from 'vs/base/node/encoding'; import { TernarySearchTree } from 'vs/base/common/map'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -261,32 +261,15 @@ export class RemoteFileService extends FileService { ); } - return toDecodeStream(this._createReadStream(provider, resource), { + const decodeStreamOpts: IDecodeStreamOptions = { guessEncoding: options.autoGuessEncoding, overwriteEncoding: detected => { - let preferredEncoding: string; - if (options && options.encoding) { - if (detected === UTF8 && options.encoding === UTF8) { - preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 - } else { - preferredEncoding = options.encoding; // give passed in encoding highest priority - } - } else if (detected) { - if (detected === UTF8) { - preferredEncoding = UTF8_with_bom; // if we detected UTF-8, it can only be because of a BOM - } else { - preferredEncoding = detected; - } - // todo@remote - encoding logic should not be kept - // hostage inside the node file service - // } else if (super.configuredEncoding(resource) === UTF8_with_bom) { - } else { - preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then - } - return preferredEncoding; + const prefered = this.getPeferredEncoding(resource, options, { encoding: detected, seemsBinary: false }); + return this.getEncoding(resource, prefered); } + }; - }).then(data => { + return toDecodeStream(this._createReadStream(provider, resource), decodeStreamOpts).then(data => { if (options.acceptTextOnly && data.detected.seemsBinary) { return TPromise.wrapError(new FileOperationError( From 1ebb0dd23b177409c7a67ba700774b80ae270c95 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 14:05:22 +0200 Subject: [PATCH 0601/1070] remove spectron references --- test/smoke/package.json | 3 +- test/smoke/src/api.ts | 150 +++++- test/smoke/src/application.ts | 18 +- test/smoke/src/areas/css/css.test.ts | 8 +- test/smoke/src/areas/debug/debug.test.ts | 18 +- test/smoke/src/areas/debug/debug.ts | 6 +- test/smoke/src/areas/editor/editor.test.ts | 12 +- .../smoke/src/areas/explorer/explorer.test.ts | 6 +- .../src/areas/extensions/extensions.test.ts | 4 +- test/smoke/src/areas/git/git.test.ts | 10 +- test/smoke/src/areas/git/scm.ts | 6 +- .../src/areas/multiroot/multiroot.test.ts | 8 +- .../src/areas/preferences/preferences.test.ts | 8 +- test/smoke/src/areas/search/search.test.ts | 10 +- .../src/areas/statusbar/statusbar.test.ts | 14 +- .../smoke/src/areas/terminal/terminal.test.ts | 29 - test/smoke/src/areas/terminal/terminal.ts | 45 -- .../src/areas/workbench/data-loss.test.ts | 4 +- .../areas/workbench/data-migration.test.ts | 4 +- .../src/areas/workbench/localization.test.ts | 6 +- test/smoke/src/areas/workbench/workbench.ts | 3 - test/smoke/src/driver.ts | 271 ---------- test/smoke/src/main.ts | 34 +- test/smoke/yarn.lock | 502 +----------------- 24 files changed, 229 insertions(+), 950 deletions(-) delete mode 100644 test/smoke/src/areas/terminal/terminal.test.ts delete mode 100644 test/smoke/src/areas/terminal/terminal.ts delete mode 100644 test/smoke/src/driver.ts diff --git a/test/smoke/package.json b/test/smoke/package.json index 7ef30e22158..e033db34da0 100644 --- a/test/smoke/package.json +++ b/test/smoke/package.json @@ -29,10 +29,9 @@ "ncp": "^2.0.0", "portastic": "^1.0.1", "rimraf": "^2.6.1", - "spectron": "^3.7.2", "strip-json-comments": "^2.0.1", "tmp": "0.0.33", "typescript": "2.5.2", "watch": "^1.0.2" } -} \ No newline at end of file +} diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts index d548ea39f6b..f11ae031575 100644 --- a/test/smoke/src/api.ts +++ b/test/smoke/src/api.ts @@ -3,7 +3,149 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Driver, Element } from './driver'; +import { IDriver, IElement } from './vscode/driver'; + +export class CodeDriver { + + constructor( + private driver: IDriver, + private verbose: boolean + ) { } + + private _activeWindowId: number | undefined = undefined; + + async dispatchKeybinding(keybinding: string): Promise { + if (this.verbose) { + console.log('- dispatchKeybinding:', keybinding); + } + + const windowId = await this.getWindowId(); + await this.driver.dispatchKeybinding(windowId, keybinding); + } + + async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { + if (this.verbose) { + console.log('- click:', selector); + } + + const windowId = await this.getWindowId(); + await this.driver.click(windowId, selector, xoffset, yoffset); + } + + async doubleClick(selector: string): Promise { + if (this.verbose) { + console.log('- doubleClick:', selector); + } + + const windowId = await this.getWindowId(); + await this.driver.doubleClick(windowId, selector); + } + + async move(selector: string): Promise { + if (this.verbose) { + console.log('- move:', selector); + } + + const windowId = await this.getWindowId(); + await this.driver.move(windowId, selector); + } + + async setValue(selector: string, text: string): Promise { + if (this.verbose) { + console.log('- setValue:', selector, text); + } + + const windowId = await this.getWindowId(); + await this.driver.setValue(windowId, selector, text); + } + + async getTitle(): Promise { + if (this.verbose) { + console.log('- getTitle:'); + } + + const windowId = await this.getWindowId(); + return await this.driver.getTitle(windowId); + } + + async isActiveElement(selector: string): Promise { + if (this.verbose) { + console.log('- isActiveElement:', selector); + } + + const windowId = await this.getWindowId(); + return await this.driver.isActiveElement(windowId, selector); + } + + async getElements(selector: string, recursive = false): Promise { + if (this.verbose) { + console.log('- getElements:', selector); + } + + const windowId = await this.getWindowId(); + return await this.driver.getElements(windowId, selector, recursive); + } + + async typeInEditor(selector: string, text: string): Promise { + if (this.verbose) { + console.log('- typeInEditor:', selector, text); + } + + const windowId = await this.getWindowId(); + return await this.driver.typeInEditor(windowId, selector, text); + } + + async getTerminalBuffer(selector: string): Promise { + if (this.verbose) { + console.log('- getTerminalBuffer:', selector); + } + + const windowId = await this.getWindowId(); + return await this.driver.getTerminalBuffer(windowId, selector); + } + + private async getWindowId(): Promise { + if (typeof this._activeWindowId !== 'number') { + const windows = await this.driver.getWindowIds(); + this._activeWindowId = windows[0]; + } + + return this._activeWindowId; + } +} + +export function findElement(element: IElement, fn: (element: IElement) => boolean): IElement | null { + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + return element; + } + + queue.push(...element.children); + } + + return null; +} + +export function findElements(element: IElement, fn: (element: IElement) => boolean): IElement[] { + const result: IElement[] = []; + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + result.push(element); + } + + queue.push(...element.children); + } + + return result; +} export class API { @@ -13,7 +155,7 @@ export class API { private readonly retryDuration = 100; // in milliseconds constructor( - private driver: Driver, + private driver: CodeDriver, waitTime: number ) { this.retryCount = (waitTime * 1000) / this.retryDuration; @@ -58,11 +200,11 @@ export class API { return elements.length; } - waitForElements(selector: string, recursive: boolean, accept: (result: Element[]) => boolean = result => result.length > 0): Promise { + waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { return this.waitFor(() => this.driver.getElements(selector, recursive), accept, `elements with selector ${selector}`) as Promise; } - waitForElement(selector: string, accept: (result: Element | undefined) => boolean = result => !!result): Promise { + waitForElement(selector: string, accept: (result: IElement | undefined) => boolean = result => !!result): Promise { return this.waitFor(() => this.driver.getElements(selector).then(els => els[0]), accept, `element with selector ${selector}`) as Promise; } diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index c656696eec6..0b43ca0b346 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -3,11 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from './api'; +import { API, CodeDriver } from './api'; import { Workbench } from './areas/workbench/workbench'; import * as fs from 'fs'; import * as cp from 'child_process'; -import { CodeDriver } from './driver'; import { Code, spawn, SpawnOptions } from './vscode/code'; export enum Quality { @@ -16,22 +15,15 @@ export enum Quality { Stable } -export interface SpectronApplicationOptions extends SpawnOptions { +export interface ApplicationOptions extends SpawnOptions { quality: Quality; - electronPath: string; workspacePath: string; - artifactsPath: string; workspaceFilePath: string; waitTime: number; verbose: boolean; } -/** - * Wraps Spectron's Application instance with its used methods. - */ -export class SpectronApplication { - - // private static count = 0; +export class Application { private _api: API; private _workbench: Workbench; @@ -39,9 +31,7 @@ export class SpectronApplication { private keybindings: any[]; private stopLogCollection: (() => Promise) | undefined; - constructor( - private options: SpectronApplicationOptions - ) { } + constructor(private options: ApplicationOptions) { } get quality(): Quality { return this.options.quality; diff --git a/test/smoke/src/areas/css/css.test.ts b/test/smoke/src/areas/css/css.test.ts index ad0d7923b1a..10f473a59a9 100644 --- a/test/smoke/src/areas/css/css.test.ts +++ b/test/smoke/src/areas/css/css.test.ts @@ -3,13 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; import { ProblemSeverity, Problems } from '../problems/problems'; export function setup() { describe('CSS', () => { it('verifies quick outline', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('style.css'); await app.workbench.quickopen.openQuickOutline(); @@ -17,7 +17,7 @@ export function setup() { }); it('verifies warnings for the empty rule', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('style.css'); await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); @@ -29,7 +29,7 @@ export function setup() { }); it('verifies that warning becomes an error once setting changed', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.settingsEditor.addUserSetting('css.lint.emptyRules', '"error"'); await app.workbench.quickopen.openFile('style.css'); await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); diff --git a/test/smoke/src/areas/debug/debug.test.ts b/test/smoke/src/areas/debug/debug.test.ts index edb1d58be46..45710a1b6f7 100644 --- a/test/smoke/src/areas/debug/debug.test.ts +++ b/test/smoke/src/areas/debug/debug.test.ts @@ -8,12 +8,12 @@ import * as http from 'http'; import * as path from 'path'; import * as fs from 'fs'; import * as stripJsonComments from 'strip-json-comments'; -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Debug', () => { it('configure launch json', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.debug.openDebugViewlet(); await app.workbench.quickopen.openFile('app.js'); @@ -37,7 +37,7 @@ export function setup() { }); it('breakpoints', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('index.js'); await app.workbench.debug.setBreakpointOnLine(6); @@ -45,7 +45,7 @@ export function setup() { let port: number; it('start debugging', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; // TODO@isidor await new Promise(c => setTimeout(c, 100)); @@ -60,7 +60,7 @@ export function setup() { }); it('focus stack frames and variables', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.api.waitFor(() => app.workbench.debug.getLocalVariableCount(), c => c === 4, 'there should be 4 local variables'); @@ -75,7 +75,7 @@ export function setup() { }); it('stepOver, stepIn, stepOut', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.debug.stepIn(); @@ -89,7 +89,7 @@ export function setup() { }); it('continue', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.debug.continue(); @@ -102,13 +102,13 @@ export function setup() { }); it('debug console', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.debug.waitForReplCommand('2 + 2', r => r === '4'); }); it('stop debugging', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.debug.stopDebugging(); }); diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index fcbc755e97f..f19b3b5143d 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -5,10 +5,10 @@ import { Viewlet } from '../workbench/viewlet'; import { Commands } from '../workbench/workbench'; -import { API } from '../../api'; +import { API, findElement } from '../../api'; import { Editors } from '../editor/editors'; import { Editor } from '../editor/editor'; -import { findElement, Element } from '../../driver'; +import { IElement } from '../../vscode/driver'; const VIEWLET = 'div[id="workbench.view.debug"]'; const DEBUG_VIEW = `${VIEWLET} .debug-view-content`; @@ -37,7 +37,7 @@ export interface IStackFrame { lineNumber: number; } -function toStackFrame(element: Element): IStackFrame { +function toStackFrame(element: IElement): IStackFrame { const name = findElement(element, e => /\bfile-name\b/.test(e.className))!; const line = findElement(element, e => /\bline-number\b/.test(e.className))!; const lineNumber = line.textContent ? parseInt(line.textContent.split(':').shift() || '0') : 0; diff --git a/test/smoke/src/areas/editor/editor.test.ts b/test/smoke/src/areas/editor/editor.test.ts index 5bc47218228..b892c49d5da 100644 --- a/test/smoke/src/areas/editor/editor.test.ts +++ b/test/smoke/src/areas/editor/editor.test.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Editor', () => { it('shows correct quick outline', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('www'); await app.workbench.quickopen.openQuickOutline(); @@ -16,7 +16,7 @@ export function setup() { }); it(`finds 'All References' to 'app'`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('www'); const references = await app.workbench.editor.findReferences('app', 7); @@ -27,7 +27,7 @@ export function setup() { }); it(`renames local 'app' variable`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('www'); await app.workbench.editor.rename('www', 7, 'app', 'newApp'); await app.workbench.editor.waitForEditorContents('www', contents => contents.indexOf('newApp') > -1); @@ -50,7 +50,7 @@ export function setup() { // }); it(`verifies that 'Go To Definition' works`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); await app.workbench.editor.gotoDefinition('express', 11); @@ -59,7 +59,7 @@ export function setup() { }); it(`verifies that 'Peek Definition' works`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); const peek = await app.workbench.editor.peekDefinition('express', 11); diff --git a/test/smoke/src/areas/explorer/explorer.test.ts b/test/smoke/src/areas/explorer/explorer.test.ts index 5cde709ad74..425233c7ad7 100644 --- a/test/smoke/src/areas/explorer/explorer.test.ts +++ b/test/smoke/src/areas/explorer/explorer.test.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Explorer', () => { it('quick open search produces correct result', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; const expectedNames = [ '.eslintrc.json', 'tasks.json', @@ -25,7 +25,7 @@ export function setup() { }); it('quick open respects fuzzy matching', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; const expectedNames = [ 'tasks.json', 'app.js', diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index f9e324c77c3..2a5b2f89fab 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -4,12 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { SpectronApplication, Quality } from '../../application'; +import { Application, Quality } from '../../application'; export function setup() { describe('Extensions', () => { it(`install and activate vscode-smoketest-check extension`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; if (app.quality === Quality.Dev) { this.skip(); diff --git a/test/smoke/src/areas/git/git.test.ts b/test/smoke/src/areas/git/git.test.ts index 9c89b77a5e2..ab742c7ef44 100644 --- a/test/smoke/src/areas/git/git.test.ts +++ b/test/smoke/src/areas/git/git.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as cp from 'child_process'; -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; const DIFF_EDITOR_LINE_INSERT = '.monaco-diff-editor .editor.modified .line-insert'; const SYNC_STATUSBAR = 'div[id="workbench.parts.statusbar"] .statusbar-entry a[title$="Synchronize Changes"]'; @@ -12,7 +12,7 @@ const SYNC_STATUSBAR = 'div[id="workbench.parts.statusbar"] .statusbar-entry a[t export function setup() { describe('Git', () => { it('reflects working tree changes', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.scm.openSCMViewlet(); @@ -30,7 +30,7 @@ export function setup() { }); it('opens diff editor', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.scm.openSCMViewlet(); await app.workbench.scm.openChange('app.js'); @@ -38,7 +38,7 @@ export function setup() { }); it('stages correctly', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.scm.openSCMViewlet(); @@ -52,7 +52,7 @@ export function setup() { }); it(`stages, commits changes and verifies outgoing change`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.scm.openSCMViewlet(); diff --git a/test/smoke/src/areas/git/scm.ts b/test/smoke/src/areas/git/scm.ts index b2cc5fc8baf..21a69240780 100644 --- a/test/smoke/src/areas/git/scm.ts +++ b/test/smoke/src/areas/git/scm.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { Viewlet } from '../workbench/viewlet'; -import { API } from '../../api'; +import { API, findElement, findElements } from '../../api'; import { Commands } from '../workbench/workbench'; -import { Element, findElement, findElements } from '../../driver'; +import { IElement } from '../../vscode/driver'; const VIEWLET = 'div[id="workbench.view.scm"]'; const SCM_INPUT = `${VIEWLET} .scm-editor textarea`; @@ -24,7 +24,7 @@ interface Change { actions: string[]; } -function toChange(element: Element): Change { +function toChange(element: IElement): Change { const name = findElement(element, e => /\blabel-name\b/.test(e.className))!; const type = element.attributes['data-tooltip'] || ''; diff --git a/test/smoke/src/areas/multiroot/multiroot.test.ts b/test/smoke/src/areas/multiroot/multiroot.test.ts index add575164a1..a5f47f25967 100644 --- a/test/smoke/src/areas/multiroot/multiroot.test.ts +++ b/test/smoke/src/areas/multiroot/multiroot.test.ts @@ -4,13 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Multiroot', () => { before(async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; // restart with preventing additional windows from restoring // to ensure the window after restart is the multi-root workspace @@ -18,7 +18,7 @@ export function setup() { }); it('shows results from all folders', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openQuickOpen('*.*'); await app.workbench.quickopen.waitForQuickOpenElements(names => names.length === 6); @@ -26,7 +26,7 @@ export function setup() { }); it('shows workspace name in title', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; const title = await app.api.getTitle(); assert.ok(title.indexOf('smoketest (Workspace)') >= 0); }); diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index 21dde973031..92c58ab4517 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -5,13 +5,13 @@ import * as assert from 'assert'; -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; import { ActivityBarPosition } from '../activitybar/activityBar'; export function setup() { describe('Preferences', () => { it('turns off editor line numbers and verifies the live change', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.explorer.openFile('app.js'); await app.api.waitForElements('.line-numbers', false, elements => !!elements.length); @@ -22,7 +22,7 @@ export function setup() { }); it(`changes 'workbench.action.toggleSidebarPosition' command key binding and verifies it`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; assert.ok(await app.workbench.activitybar.getActivityBar(ActivityBarPosition.LEFT), 'Activity bar should be positioned on the left.'); await app.workbench.keybindingsEditor.updateKeybinding('workbench.action.toggleSidebarPosition', 'ctrl+u', 'Control+U'); @@ -32,7 +32,7 @@ export function setup() { }); after(async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.settingsEditor.clearUserSettings(); }); }); diff --git a/test/smoke/src/areas/search/search.test.ts b/test/smoke/src/areas/search/search.test.ts index 9351c8fafe4..484e428e7b1 100644 --- a/test/smoke/src/areas/search/search.test.ts +++ b/test/smoke/src/areas/search/search.test.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Search', () => { it('searches for body & checks for correct result number', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.search.openSearchViewlet(); await app.workbench.search.searchFor('body'); @@ -16,7 +16,7 @@ export function setup() { }); it('searches only for *.js files & checks for correct result number', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.search.searchFor('body'); await app.workbench.search.showQueryDetails(); await app.workbench.search.setFilesToIncludeText('*.js'); @@ -28,14 +28,14 @@ export function setup() { }); it('dismisses result & checks for correct result number', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.search.searchFor('body'); await app.workbench.search.removeFileMatch(1); await app.workbench.search.waitForResultText('10 results in 4 files'); }); it('replaces first search result with a replace term', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.search.searchFor('body'); await app.workbench.search.expandReplace(); diff --git a/test/smoke/src/areas/statusbar/statusbar.test.ts b/test/smoke/src/areas/statusbar/statusbar.test.ts index 78954928847..3c748bde9bb 100644 --- a/test/smoke/src/areas/statusbar/statusbar.test.ts +++ b/test/smoke/src/areas/statusbar/statusbar.test.ts @@ -3,13 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication, Quality } from '../../application'; +import { Application, Quality } from '../../application'; import { StatusBarElement } from './statusbar'; export function setup() { describe('Statusbar', () => { it('verifies presence of all default status bar elements', async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.statusbar.waitForStatusbarElement(StatusBarElement.BRANCH_STATUS); if (app.quality !== Quality.Dev) { @@ -27,7 +27,7 @@ export function setup() { }); it(`verifies that 'quick open' opens when clicking on status bar elements`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.statusbar.clickOn(StatusBarElement.BRANCH_STATUS); await app.workbench.quickopen.waitForQuickOpenOpened(); @@ -49,14 +49,14 @@ export function setup() { }); it(`verifies that 'Problems View' appears when clicking on 'Problems' status element`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.statusbar.clickOn(StatusBarElement.PROBLEMS_STATUS); await app.workbench.problems.waitForProblemsView(); }); it(`verifies that 'Tweet us feedback' pop-up appears when clicking on 'Feedback' icon`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; if (app.quality === Quality.Dev) { return this.skip(); @@ -67,7 +67,7 @@ export function setup() { }); it(`checks if 'Go to Line' works if called from the status bar`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); await app.workbench.statusbar.clickOn(StatusBarElement.SELECTION_STATUS); @@ -79,7 +79,7 @@ export function setup() { }); it(`verifies if changing EOL is reflected in the status bar`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); await app.workbench.statusbar.clickOn(StatusBarElement.EOL_STATUS); diff --git a/test/smoke/src/areas/terminal/terminal.test.ts b/test/smoke/src/areas/terminal/terminal.test.ts deleted file mode 100644 index 5713e281cc7..00000000000 --- a/test/smoke/src/areas/terminal/terminal.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -// import { SpectronApplication } from '../../application'; - -describe('Terminal', () => { - // let app: SpectronApplication; - // before(() => { app = new SpectronApplication(); return app.start('Terminal'); }); - // after(() => app.stop()); - - // it(`opens terminal, runs 'echo' and verifies the output`, async function () { - // const expected = new Date().getTime().toString(); - // await app.workbench.terminal.showTerminal(); - - // await app.workbench.terminal.runCommand(`echo ${expected}`); - - // await app.workbench.terminal.waitForTerminalText(terminalText => { - // // Last line will not contain the output - // for (let index = terminalText.length - 2; index >= 0; index--) { - // if (!!terminalText[index] && terminalText[index].trim() === expected) { - // return true; - // } - // } - // return false; - // }); - // }); -}); \ No newline at end of file diff --git a/test/smoke/src/areas/terminal/terminal.ts b/test/smoke/src/areas/terminal/terminal.ts deleted file mode 100644 index e69916b475f..00000000000 --- a/test/smoke/src/areas/terminal/terminal.ts +++ /dev/null @@ -1,45 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { API } from '../../api'; -import { Commands } from '../workbench/workbench'; - -const PANEL_SELECTOR = 'div[id="workbench.panel.terminal"]'; -const XTERM_SELECTOR = `${PANEL_SELECTOR} .terminal-wrapper`; - -export class Terminal { - - constructor(private api: API, private commands: Commands) { } - - async showTerminal(): Promise { - if (!await this.isVisible()) { - await this.commands.runCommand('View: Toggle Integrated Terminal'); - await this.api.waitForElement(XTERM_SELECTOR); - await this.waitForTerminalText(text => text.length > 0, 'Waiting for Terminal to be ready'); - } - } - - isVisible(): Promise { - return this.api.doesElementExist(PANEL_SELECTOR); - } - - async runCommand(commandText: string): Promise { - // TODO@Tyriar fix this. we should not use type but setValue - // await this.spectron.client.type(commandText); - await this.api.dispatchKeybinding('enter'); - } - - async waitForTerminalText(fn: (text: string[]) => boolean, timeOutDescription: string = 'Getting Terminal Text'): Promise { - await this.api.waitFor(async () => { - const terminalText = await this.api.getTerminalBuffer(XTERM_SELECTOR); - return fn(terminalText); - }, void 0, timeOutDescription); - } - - async getCurrentLineNumber(): Promise { - const terminalText = await this.api.getTerminalBuffer(XTERM_SELECTOR); - return terminalText.length; - } -} \ No newline at end of file diff --git a/test/smoke/src/areas/workbench/data-loss.test.ts b/test/smoke/src/areas/workbench/data-loss.test.ts index 2781d043ea4..4dc1e37ab26 100644 --- a/test/smoke/src/areas/workbench/data-loss.test.ts +++ b/test/smoke/src/areas/workbench/data-loss.test.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { SpectronApplication } from '../../application'; +import { Application } from '../../application'; export function setup() { describe('Dataloss', () => { it(`verifies that 'hot exit' works for dirty files`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; await app.workbench.editors.newUntitledFile(); const untitled = 'Untitled-1'; diff --git a/test/smoke/src/areas/workbench/data-migration.test.ts b/test/smoke/src/areas/workbench/data-migration.test.ts index c48d216f80b..510cea17736 100644 --- a/test/smoke/src/areas/workbench/data-migration.test.ts +++ b/test/smoke/src/areas/workbench/data-migration.test.ts @@ -5,11 +5,11 @@ import * as assert from 'assert'; -import { SpectronApplication, Quality } from '../../application'; +import { Application, Quality } from '../../application'; import * as rimraf from 'rimraf'; export interface ICreateAppFn { - (quality: Quality): SpectronApplication | null; + (quality: Quality): Application | null; } export function setup(userDataDir: string, createApp: ICreateAppFn) { diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index 2a41c77ea20..e3cc585758e 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -5,12 +5,12 @@ import * as assert from 'assert'; -import { SpectronApplication, Quality } from '../../application'; +import { Application, Quality } from '../../application'; export function setup() { describe('Localization', () => { before(async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; if (app.quality === Quality.Dev) { return; @@ -20,7 +20,7 @@ export function setup() { }); it(`starts with 'DE' locale and verifies title and viewlets text is in German`, async function () { - const app = this.app as SpectronApplication; + const app = this.app as Application; if (app.quality === Quality.Dev) { this.skip(); diff --git a/test/smoke/src/areas/workbench/workbench.ts b/test/smoke/src/areas/workbench/workbench.ts index 01760d509a0..645466acd3b 100644 --- a/test/smoke/src/areas/workbench/workbench.ts +++ b/test/smoke/src/areas/workbench/workbench.ts @@ -15,7 +15,6 @@ import { StatusBar } from '../statusbar/statusbar'; import { Problems } from '../problems/problems'; import { SettingsEditor } from '../preferences/settings'; import { KeybindingsEditor } from '../preferences/keybindings'; -import { Terminal } from '../terminal/terminal'; import { API } from '../../api'; import { Editors } from '../editor/editors'; @@ -38,7 +37,6 @@ export class Workbench implements Commands { readonly problems: Problems; readonly settingsEditor: SettingsEditor; readonly keybindingsEditor: KeybindingsEditor; - readonly terminal: Terminal; constructor(private api: API, private keybindings: any[], userDataPath: string) { this.editors = new Editors(api, this); @@ -54,7 +52,6 @@ export class Workbench implements Commands { this.problems = new Problems(api, this); this.settingsEditor = new SettingsEditor(api, userDataPath, this, this.editors, this.editor); this.keybindingsEditor = new KeybindingsEditor(api, this); - this.terminal = new Terminal(api, this); } /** diff --git a/test/smoke/src/driver.ts b/test/smoke/src/driver.ts deleted file mode 100644 index 3906cf2ad6c..00000000000 --- a/test/smoke/src/driver.ts +++ /dev/null @@ -1,271 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { SpectronClient } from 'spectron'; -import { IDriver } from './vscode/driver'; - -export interface Element { - tagName: string; - className: string; - textContent: string; - attributes: { [name: string]: string }; - children: Element[]; -} - -export interface Driver { - dispatchKeybinding(keybinding: string): Promise; - click(selector: string, xoffset?: number, yoffset?: number): Promise; - doubleClick(selector: string): Promise; - move(selector: string): Promise; - setValue(selector: string, text: string): Promise; - getTitle(): Promise; - - isActiveElement(selector: string): Promise; - getElements(selector: string, recursive?: boolean): Promise; - typeInEditor(selector: string, text: string): Promise; - getTerminalBuffer(selector: string): Promise; -} - -export class SpectronDriver implements Driver { - - constructor( - private spectronClient: SpectronClient, - private verbose: boolean - ) { } - - dispatchKeybinding(keybinding: string): Promise { - return Promise.reject(new Error('not implemented')); - } - - async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { - if (this.verbose) { - console.log('- click:', selector, xoffset, yoffset); - } - - await this.spectronClient.leftClick(selector, xoffset, yoffset); - - if (this.verbose) { - console.log('- click DONE'); - } - } - - async doubleClick(selector: string): Promise { - if (this.verbose) { - console.log('- doubleClick:', selector); - } - - await this.spectronClient.doubleClick(selector); - } - - async move(selector: string): Promise { - if (this.verbose) { - console.log('- move:', selector); - } - - await this.spectronClient.moveToObject(selector); - } - - async setValue(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- setValue:', selector, text); - } - - await this.spectronClient.setValue(selector, text); - } - - async getTitle(): Promise { - if (this.verbose) { - console.log('- getTitle'); - } - - return await this.spectronClient.getTitle(); - } - - async isActiveElement(selector: string): Promise { - if (this.verbose) { - console.log('- isActiveElement:', selector); - } - - const result = await (this.spectronClient.execute(s => document.activeElement.matches(s), selector) as any as Promise<{ value: boolean; }>); - return result.value; - } - - async getElements(selector: string): Promise { - if (this.verbose) { - console.log('- getElements:', selector); - } - - const result = await (this.spectronClient.execute(selector => { - const query = document.querySelectorAll(selector); - const result: Element[] = []; - - for (let i = 0; i < query.length; i++) { - const element: HTMLElement = query.item(i); - - result.push({ - tagName: element.tagName, - className: element.className, - textContent: element.textContent || '', - attributes: {}, - children: [] - }); - } - - return result; - }, selector) as any as Promise<{ value: Element[]; }>); - - return result.value; - } - - typeInEditor(selector: string, text: string): Promise { - throw new Error('Method not implemented.'); - } - - getTerminalBuffer(selector: string): Promise { - throw new Error('Method not implemented.'); - } -} - -export class CodeDriver implements Driver { - - constructor( - private driver: IDriver, - private verbose: boolean - ) { } - - private _activeWindowId: number | undefined = undefined; - - async dispatchKeybinding(keybinding: string): Promise { - if (this.verbose) { - console.log('- dispatchKeybinding:', keybinding); - } - - const windowId = await this.getWindowId(); - await this.driver.dispatchKeybinding(windowId, keybinding); - } - - async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { - if (this.verbose) { - console.log('- click:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.click(windowId, selector, xoffset, yoffset); - } - - async doubleClick(selector: string): Promise { - if (this.verbose) { - console.log('- doubleClick:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.doubleClick(windowId, selector); - } - - async move(selector: string): Promise { - if (this.verbose) { - console.log('- move:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.move(windowId, selector); - } - - async setValue(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- setValue:', selector, text); - } - - const windowId = await this.getWindowId(); - await this.driver.setValue(windowId, selector, text); - } - - async getTitle(): Promise { - if (this.verbose) { - console.log('- getTitle:'); - } - - const windowId = await this.getWindowId(); - return await this.driver.getTitle(windowId); - } - - async isActiveElement(selector: string): Promise { - if (this.verbose) { - console.log('- isActiveElement:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.isActiveElement(windowId, selector); - } - - async getElements(selector: string, recursive = false): Promise { - if (this.verbose) { - console.log('- getElements:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.getElements(windowId, selector, recursive); - } - - async typeInEditor(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- typeInEditor:', selector, text); - } - - const windowId = await this.getWindowId(); - return await this.driver.typeInEditor(windowId, selector, text); - } - - async getTerminalBuffer(selector: string): Promise { - if (this.verbose) { - console.log('- getTerminalBuffer:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.getTerminalBuffer(windowId, selector); - } - - private async getWindowId(): Promise { - if (typeof this._activeWindowId !== 'number') { - const windows = await this.driver.getWindowIds(); - this._activeWindowId = windows[0]; - } - - return this._activeWindowId; - } -} - -export function findElement(element: Element, fn: (element: Element) => boolean): Element | null { - const queue = [element]; - - while (queue.length > 0) { - const element = queue.shift()!; - - if (fn(element)) { - return element; - } - - queue.push(...element.children); - } - - return null; -} - -export function findElements(element: Element, fn: (element: Element) => boolean): Element[] { - const result: Element[] = []; - const queue = [element]; - - while (queue.length > 0) { - const element = queue.shift()!; - - if (fn(element)) { - result.push(element); - } - - queue.push(...element.children); - } - - return result; -} \ No newline at end of file diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index c4221af778d..a534d232691 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -11,9 +11,9 @@ import * as minimist from 'minimist'; import * as tmp from 'tmp'; import * as rimraf from 'rimraf'; import * as mkdirp from 'mkdirp'; -import { SpectronApplication, Quality } from './application'; -import { setup as setupDataMigrationTests } from './areas/workbench/data-migration.test'; +import { Application, Quality } from './application'; +import { setup as setupDataMigrationTests } from './areas/workbench/data-migration.test'; import { setup as setupDataLossTests } from './areas/workbench/data-loss.test'; import { setup as setupDataExplorerTests } from './areas/explorer/explorer.test'; import { setup as setupDataPreferencesTests } from './areas/preferences/preferences.test'; @@ -26,7 +26,6 @@ import { setup as setupDataStatusbarTests } from './areas/statusbar/statusbar.te import { setup as setupDataExtensionTests } from './areas/extensions/extensions.test'; import { setup as setupDataMultirootTests } from './areas/multiroot/multiroot.test'; import { setup as setupDataLocalizationTests } from './areas/workbench/localization.test'; -// import './areas/terminal/terminal.test'; const tmpDir = tmp.dirSync({ prefix: 't' }) as { name: string; removeCallback: Function; }; const testDataPath = tmpDir.name; @@ -37,7 +36,6 @@ const opts = minimist(args, { string: [ 'build', 'stable-build', - 'log', 'wait-time', 'test-repo', 'keybindings' @@ -50,8 +48,6 @@ const opts = minimist(args, { } }); -const artifactsPath = opts.log || ''; - const workspaceFilePath = path.join(testDataPath, 'smoketest.code-workspace'); const testRepoUrl = 'https://github.com/Microsoft/vscode-smoketest-express'; const workspacePath = path.join(testDataPath, 'vscode-smoketest-express'); @@ -232,41 +228,19 @@ async function setup(): Promise { console.log('*** Smoketest setup done!\n'); } -/** - * WebDriverIO 4.8.0 outputs all kinds of "deprecation" warnings - * for common commands like `keys` and `moveToObject`. - * According to https://github.com/Codeception/CodeceptJS/issues/531, - * these deprecation warnings are for Firefox, and have no alternative replacements. - * Since we can't downgrade WDIO as suggested (it's Spectron's dep, not ours), - * we must suppress the warning with a classic monkey-patch. - * - * @see webdriverio/lib/helpers/depcrecationWarning.js - * @see https://github.com/webdriverio/webdriverio/issues/2076 - */ -// Filter out the following messages: -const wdioDeprecationWarning = /^WARNING: the "\w+" command will be deprecated soon../; // [sic] -// Monkey patch: -const warn = console.warn; -console.warn = function suppressWebdriverWarnings(message) { - if (wdioDeprecationWarning.test(message)) { return; } - warn.apply(console, arguments); -}; - -function createApp(quality: Quality): SpectronApplication | null { +function createApp(quality: Quality): Application | null { const path = quality === Quality.Stable ? stablePath : electronPath; if (!path) { return null; } - return new SpectronApplication({ + return new Application({ quality, codePath: opts.build, - electronPath: path, workspacePath, userDataDir, extensionsPath, - artifactsPath, workspaceFilePath, waitTime: parseInt(opts['wait-time'] || '0') || 20, verbose: opts.verbose diff --git a/test/smoke/yarn.lock b/test/smoke/yarn.lock index a6c8f689aa0..2f15aec3278 100644 --- a/test/smoke/yarn.lock +++ b/test/smoke/yarn.lock @@ -78,14 +78,6 @@ ajv@^5.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" - ansi-regex@^0.2.0, ansi-regex@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" @@ -94,20 +86,10 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -119,30 +101,6 @@ aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -archiver@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.0.tgz#d2df2e8d5773a82c1dcce925ccc41450ea999afd" - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - zip-stream "^1.2.0" - are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" @@ -196,20 +154,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@^2.0.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -atob@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" - aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -226,7 +174,7 @@ aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-runtime@^6.26.0, babel-runtime@^6.9.2: +babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -247,12 +195,6 @@ binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" -bl@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" - dependencies: - readable-stream "^2.0.5" - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -300,10 +242,6 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -buffer-crc32@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -333,14 +271,6 @@ chalk@0.5.1: strip-ansi "^0.3.0" supports-color "^0.2.0" -chalk@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - chokidar@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -356,16 +286,6 @@ chokidar@^1.6.0: optionalDependencies: fsevents "^1.0.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -374,16 +294,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -404,15 +314,6 @@ commander@^2.8.1: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -compress-commons@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -466,17 +367,6 @@ cpx@^1.5.0: shell-quote "^1.6.1" subarg "^1.0.0" -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" - -crc@^3.4.4: - version "3.5.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" - cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -489,25 +379,6 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - dependencies: - css "^2.0.0" - -css-value@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" - -css@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" - dependencies: - inherits "^2.0.1" - source-map "^0.1.38" - source-map-resolve "^0.3.0" - urix "^0.1.0" - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -544,10 +415,6 @@ deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" -deepmerge@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.0.1.tgz#25c1c24f110fb914f80001b925264dd77f3f4312" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -560,10 +427,6 @@ detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" -dev-null@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818" - diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -606,17 +469,6 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -ejs@~2.5.6: - version "2.5.7" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" - -electron-chromedriver@~1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-1.7.1.tgz#008c97976007aa4eb18491ee095e94d17ee47610" - dependencies: - electron-download "^4.1.0" - extract-zip "^1.6.5" - electron-download@^3.0.1: version "3.3.0" resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz#2cfd54d6966c019c4d49ad65fbe65cc9cdef68c8" @@ -631,20 +483,6 @@ electron-download@^3.0.1: semver "^5.3.0" sumchecker "^1.2.0" -electron-download@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.0.tgz#bf932c746f2f87ffcc09d1dd472f2ff6b9187845" - dependencies: - debug "^2.2.0" - env-paths "^1.0.0" - fs-extra "^2.0.0" - minimist "^1.2.0" - nugget "^2.0.0" - path-exists "^3.0.0" - rc "^1.1.2" - semver "^5.3.0" - sumchecker "^2.0.1" - electron@1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.7.tgz#cfd89ca9eba79d763ac0b0c6dcc583792097b9b6" @@ -653,20 +491,10 @@ electron@1.7.7: electron-download "^3.0.1" extract-zip "^1.0.3" -end-of-stream@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -env-paths@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" - error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -677,7 +505,7 @@ es6-promise@^4.0.5: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -703,21 +531,13 @@ extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" - dependencies: - iconv-lite "^0.4.17" - jschardet "^1.4.2" - tmp "^0.0.33" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: is-extglob "^1.0.0" -extract-zip@^1.0.3, extract-zip@^1.6.5: +extract-zip@^1.0.3: version "1.6.6" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c" dependencies: @@ -744,12 +564,6 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -815,13 +629,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -863,12 +670,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gaze@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" - dependencies: - globule "^1.0.0" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -909,7 +710,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@~7.1.1: +glob@^7.0.5: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -920,15 +721,7 @@ glob@^7.0.0, glob@^7.0.5, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -globule@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" - dependencies: - glob "~7.1.1" - lodash "~4.17.4" - minimatch "~3.0.2" - -graceful-fs@^4.1.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -972,10 +765,6 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1045,10 +834,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -1070,25 +855,6 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -inquirer@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1139,10 +905,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -1169,10 +931,6 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1203,10 +961,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jschardet@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" - json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -1266,12 +1020,6 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1329,10 +1077,6 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash@^4.14.0, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.4: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - lodash@^4.5.1: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -1405,11 +1149,7 @@ mime-types@~2.1.7: dependencies: mime-db "~1.33.0" -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -1423,17 +1163,13 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - mkdirp@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" dependencies: minimist "0.0.8" -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1460,10 +1196,6 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - nan@^2.3.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -1510,10 +1242,6 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" -npm-install-package@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-2.1.0.tgz#d7efe3cfcd7ab00614b896ea53119dc9ab259125" - npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -1558,25 +1286,12 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -optimist@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1613,10 +1328,6 @@ path-exists@^2.0.0, path-exists@^2.1.0: dependencies: pinkie-promise "^2.0.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1693,18 +1404,10 @@ progress-stream@^1.1.0: speedometer "~0.1.2" through2 "~0.2.3" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -1713,10 +1416,6 @@ qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -1757,7 +1456,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2: +readable-stream@^2.0.2, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -1861,7 +1560,7 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -request@^2.45.0, request@^2.81.0, request@~2.83.0: +request@^2.45.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -1888,49 +1587,18 @@ request@^2.45.0, request@^2.81.0, request@~2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -resolve-url@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - resolve@^1.1.7: version "1.7.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.0.tgz#2bdf5374811207285df0df652b78f118ab8f3c5e" dependencies: path-parse "^1.0.5" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -rgb2hex@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.0.tgz#ccd55f860ae0c5c4ea37504b958e442d8d12325b" - rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - rx@2.3.24: version "2.3.24" resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" @@ -1960,7 +1628,7 @@ shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -1982,25 +1650,6 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -source-map-resolve@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" - dependencies: - atob "~1.1.0" - resolve-url "~0.2.1" - source-map-url "~0.3.0" - urix "~0.1.0" - -source-map-url@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" - -source-map@^0.1.38: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" @@ -2019,26 +1668,10 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -spectron@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/spectron/-/spectron-3.7.2.tgz#86f41306a9b70ed6ee1500f7f7d3adc389afb446" - dependencies: - dev-null "^0.1.1" - electron-chromedriver "~1.7.1" - request "^2.81.0" - split "^1.0.0" - webdriverio "^4.8.0" - speedometer@~0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - dependencies: - through "2" - sshpk@^1.7.0: version "1.13.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" @@ -2061,13 +1694,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -2100,12 +1726,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -2135,12 +1755,6 @@ sumchecker@^1.2.0: debug "^2.2.0" es6-promise "^4.0.5" -sumchecker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e" - dependencies: - debug "^2.2.0" - supports-color@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" @@ -2157,18 +1771,6 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - -supports-color@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.0.0.tgz#1db26229f6ae02f9acdb5410907c36ce2e362b13" - dependencies: - has-flag "^2.0.0" - tar-pack@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" @@ -2182,15 +1784,6 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@^1.5.0: - version "1.5.5" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -2210,11 +1803,7 @@ through2@~0.2.3: readable-stream "~1.1.9" xtend "~2.1.1" -through@2, through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -tmp@0.0.33, tmp@^0.0.33: +tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: @@ -2262,17 +1851,6 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -urix@^0.1.0, urix@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -2292,10 +1870,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -validator@~9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/validator/-/validator-9.1.1.tgz#3bdd1065cbd28f9d96ac806dee01030d32fd97ef" - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -2311,59 +1885,16 @@ watch@^1.0.2: exec-sh "^0.2.0" minimist "^1.2.0" -wdio-dot-reporter@~0.0.8: - version "0.0.9" - resolved "https://registry.yarnpkg.com/wdio-dot-reporter/-/wdio-dot-reporter-0.0.9.tgz#929b2adafd49d6b0534fda068e87319b47e38fe5" - -webdriverio@^4.8.0: - version "4.9.8" - resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.9.8.tgz#907180e715d3b9e16cabe20bad59854bec1e44fa" - dependencies: - archiver "~2.1.0" - babel-runtime "^6.26.0" - css-parse "~2.0.0" - css-value "~0.0.1" - deepmerge "~2.0.1" - ejs "~2.5.6" - gaze "~1.1.2" - glob "~7.1.1" - inquirer "~3.3.0" - json-stringify-safe "~5.0.1" - mkdirp "~0.5.1" - npm-install-package "~2.1.0" - optimist "~0.6.1" - q "~1.5.0" - request "~2.83.0" - rgb2hex "~0.1.0" - safe-buffer "~5.1.1" - supports-color "~5.0.0" - url "~0.11.0" - validator "~9.1.1" - wdio-dot-reporter "~0.0.8" - wgxpath "~1.0.0" - -wgxpath@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz#eef8a4b9d558cc495ad3a9a2b751597ecd9af690" - wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" dependencies: string-width "^1.0.2" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" @@ -2375,12 +1906,3 @@ yauzl@2.4.1: resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" dependencies: fd-slicer "~1.0.1" - -zip-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.2.0" - lodash "^4.8.0" - readable-stream "^2.0.0" From c92769faa1a866ae4ba2d4e7452fdaabc456224d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 14:26:50 +0200 Subject: [PATCH 0602/1070] don't allow double read, #41985, #47475 --- .../services/files/electron-browser/remoteFileService.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index d9420bb679f..27316a8c33e 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -227,8 +227,12 @@ export class RemoteFileService extends FileService { private _createReadStream(provider: IFileSystemProvider, resource: URI): Readable { return new class extends Readable { + _readOperation: Thenable; _read(size?: number): void { - provider.readFile(resource).then(data => { + if (this._readOperation) { + return; + } + this._readOperation = provider.readFile(resource).then(data => { this.push(data); this.push(null); }, err => { From 59cc8326ff0b8130cd75a9ce3065d95008fa7a28 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 Apr 2018 14:52:18 +0200 Subject: [PATCH 0603/1070] fileservice :lipstick: --- .../relauncher.contribution.ts | 12 +- .../files/electron-browser/fileService.ts | 150 ++++++++---------- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts index e1b621a5d90..9981d15cb98 100644 --- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts @@ -20,13 +20,14 @@ import { isEqual } from 'vs/base/common/resources'; import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { equals } from 'vs/base/common/objects'; interface IConfiguration extends IWindowsConfiguration { update: { channel: string; }; telemetry: { enableCrashReporter: boolean }; keyboard: { touchbar: { enabled: boolean } }; workbench: { tree: { horizontalScrolling: boolean } }; - files: { useExperimentalFileWatcher: boolean }; + files: { useExperimentalFileWatcher: boolean, watcherExclude: object }; } export class SettingsChangeRelauncher implements IWorkbenchContribution { @@ -42,6 +43,7 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { private treeHorizontalScrolling: boolean; private windowsSmoothScrollingWorkaround: boolean; private experimentalFileWatcher: boolean; + private fileWatcherExclude: object; private firstFolderResource: URI; private extensionHostRestarter: RunOnceScheduler; @@ -111,6 +113,14 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { changed = true; } + // File Watcher Excludes (only if in folder workspace mode) + if (!this.experimentalFileWatcher && this.contextService.getWorkbenchState() === WorkbenchState.FOLDER) { + if (config.files && typeof config.files.watcherExclude === 'object' && !equals(config.files.watcherExclude, this.fileWatcherExclude)) { + this.fileWatcherExclude = config.files.watcherExclude; + changed = true; + } + } + // macOS: Touchbar config if (isMacintosh && config.keyboard && config.keyboard.touchbar && typeof config.keyboard.touchbar.enabled === 'boolean' && config.keyboard.touchbar.enabled !== this.touchbarEnabled) { this.touchbarEnabled = config.keyboard.touchbar.enabled; diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 39c172f4de5..cce04a6b64f 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -47,61 +47,6 @@ import product from 'vs/platform/node/product'; import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; import { shell } from 'electron'; -export interface IEncodingOverride { - parent?: uri; - extension?: string; - encoding: string; -} - -export interface IFileServiceTestOptions { - tmpDir?: string; - disableWatcher?: boolean; - encodingOverride?: IEncodingOverride[]; -} - -function etag(stat: fs.Stats): string; -function etag(size: number, mtime: number): string; -function etag(arg1: any, arg2?: any): string { - let size: number; - let mtime: number; - if (typeof arg2 === 'number') { - size = arg1; - mtime = arg2; - } else { - size = (arg1).size; - mtime = (arg1).mtime.getTime(); - } - - return `"${crypto.createHash('sha1').update(String(size) + String(mtime)).digest('hex')}"`; -} - -class BufferPool { - - static _64K = new BufferPool(64 * 1024, 5); - - constructor( - readonly bufferSize: number, - private readonly _capacity: number, - private readonly _free: Buffer[] = [], - ) { - // - } - - acquire(): Buffer { - if (this._free.length === 0) { - return Buffer.allocUnsafe(this.bufferSize); - } else { - return this._free.shift(); - } - } - - release(buf: Buffer): void { - if (this._free.length <= this._capacity) { - this._free.push(buf); - } - } -} - export class FileService implements IFileService { public _serviceBrand: any; @@ -118,8 +63,6 @@ export class FileService implements IFileService { protected readonly _onFileChanges: Emitter; protected readonly _onAfterOperation: Emitter; - private tmpPath: string; - private toDispose: IDisposable[]; private activeWorkspaceFileChangeWatcher: IDisposable; @@ -127,9 +70,6 @@ export class FileService implements IFileService { private fileChangesWatchDelayer: ThrottledDelayer; private undeliveredRawFileChangesEvents: IRawFileChange[]; - private useExperimentalFileWatcher: boolean; - private watcherIgnoredPatterns: string[]; - private encodingOverride: IEncodingOverride[]; constructor( @@ -143,7 +83,6 @@ export class FileService implements IFileService { private options: IFileServiceTestOptions = Object.create(null) ) { this.toDispose = []; - this.tmpPath = this.options.tmpDir || os.tmpdir(); this._onFileChanges = new Emitter(); this.toDispose.push(this._onFileChanges); @@ -155,15 +94,6 @@ export class FileService implements IFileService { this.fileChangesWatchDelayer = new ThrottledDelayer(FileService.FS_EVENT_DELAY); this.undeliveredRawFileChangesEvents = []; - const configuration = this.configurationService.getValue(); - - this.watcherIgnoredPatterns = []; - if (configuration.files && configuration.files.watcherExclude) { - this.watcherIgnoredPatterns = Object.keys(configuration.files.watcherExclude).filter(k => !!configuration.files.watcherExclude[k]); - } - - this.useExperimentalFileWatcher = configuration.files && configuration.files.useExperimentalFileWatcher; - this.encodingOverride = this.options.encodingOverride || this.getEncodingOverrides(); this.registerListeners(); @@ -281,26 +211,32 @@ export class FileService implements IFileService { } // new watcher: use it if setting tells us so or we run in multi-root environment - if (this.useExperimentalFileWatcher || workbenchState === WorkbenchState.WORKSPACE) { + const configuration = this.configurationService.getValue(); + if ((configuration.files && configuration.files.useExperimentalFileWatcher) || workbenchState === WorkbenchState.WORKSPACE) { this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupNsfwWorkspaceWatching().startWatching()); } // old watcher else { + let watcherIgnoredPatterns: string[] = []; + if (configuration.files && configuration.files.watcherExclude) { + watcherIgnoredPatterns = Object.keys(configuration.files.watcherExclude).filter(k => !!configuration.files.watcherExclude[k]); + } + if (isWindows) { - this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupWin32WorkspaceWatching().startWatching()); + this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupWin32WorkspaceWatching(watcherIgnoredPatterns).startWatching()); } else { - this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupUnixWorkspaceWatching().startWatching()); + this.activeWorkspaceFileChangeWatcher = toDisposable(this.setupUnixWorkspaceWatching(watcherIgnoredPatterns).startWatching()); } } } - private setupWin32WorkspaceWatching(): WindowsWatcherService { - return new WindowsWatcherService(this.contextService, this.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); + private setupWin32WorkspaceWatching(watcherIgnoredPatterns: string[]): WindowsWatcherService { + return new WindowsWatcherService(this.contextService, watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); } - private setupUnixWorkspaceWatching(): UnixWatcherService { - return new UnixWatcherService(this.contextService, this.watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); + private setupUnixWorkspaceWatching(watcherIgnoredPatterns: string[]): UnixWatcherService { + return new UnixWatcherService(this.contextService, watcherIgnoredPatterns, e => this._onFileChanges.fire(e), err => this.handleError(err), this.environmentService.verbose); } private setupNsfwWorkspaceWatching(): NsfwWatcherService { @@ -745,7 +681,7 @@ export class FileService implements IFileService { writeOptions.encoding = this.getEncoding(resource, options.encoding); // 2.) write to a temporary file to be able to copy over later - const tmpPath = paths.join(this.tmpPath, `code-elevated-${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 6)}`); + const tmpPath = paths.join(os.tmpdir(), `code-elevated-${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 6)}`); return this.updateContent(uri.file(tmpPath), value, writeOptions).then(() => { // 3.) invoke our CLI as super user @@ -773,7 +709,7 @@ export class FileService implements IFileService { }).then(() => { // 3.) delete temp file - return pfs.del(tmpPath, this.tmpPath).then(() => { + return pfs.del(tmpPath, os.tmpdir()).then(() => { // 4.) resolve again return this.resolve(resource); @@ -1033,7 +969,7 @@ export class FileService implements IFileService { private doDelete(resource: uri): TPromise { const absolutePath = this.toAbsolutePath(resource); - return pfs.del(absolutePath, this.tmpPath).then(() => { + return pfs.del(absolutePath, os.tmpdir()).then(() => { // Events this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.DELETE)); @@ -1245,6 +1181,60 @@ export class FileService implements IFileService { } } +export interface IEncodingOverride { + parent?: uri; + extension?: string; + encoding: string; +} + +export interface IFileServiceTestOptions { + disableWatcher?: boolean; + encodingOverride?: IEncodingOverride[]; +} + +function etag(stat: fs.Stats): string; +function etag(size: number, mtime: number): string; +function etag(arg1: any, arg2?: any): string { + let size: number; + let mtime: number; + if (typeof arg2 === 'number') { + size = arg1; + mtime = arg2; + } else { + size = (arg1).size; + mtime = (arg1).mtime.getTime(); + } + + return `"${crypto.createHash('sha1').update(String(size) + String(mtime)).digest('hex')}"`; +} + +class BufferPool { + + static _64K = new BufferPool(64 * 1024, 5); + + constructor( + readonly bufferSize: number, + private readonly _capacity: number, + private readonly _free: Buffer[] = [], + ) { + // + } + + acquire(): Buffer { + if (this._free.length === 0) { + return Buffer.allocUnsafe(this.bufferSize); + } else { + return this._free.shift(); + } + } + + release(buf: Buffer): void { + if (this._free.length <= this._capacity) { + this._free.push(buf); + } + } +} + export class StatResolver { private name: string; private etag: string; From 5d48d47129d6daa981a9a028ddb76086f3481886 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 16:20:09 +0200 Subject: [PATCH 0604/1070] remove API --- src/vs/platform/driver/common/driver.ts | 2 +- test/smoke/src/api.ts | 267 ------------------ test/smoke/src/application.ts | 30 +- .../src/areas/activitybar/activityBar.ts | 10 +- test/smoke/src/areas/css/css.test.ts | 10 +- test/smoke/src/areas/debug/debug.test.ts | 8 +- test/smoke/src/areas/debug/debug.ts | 54 ++-- test/smoke/src/areas/editor/editor.ts | 38 +-- test/smoke/src/areas/editor/editors.ts | 12 +- test/smoke/src/areas/editor/peek.ts | 16 +- .../smoke/src/areas/explorer/explorer.test.ts | 4 +- test/smoke/src/areas/explorer/explorer.ts | 10 +- test/smoke/src/areas/extensions/extensions.ts | 18 +- test/smoke/src/areas/git/git.test.ts | 6 +- test/smoke/src/areas/git/scm.ts | 28 +- .../src/areas/multiroot/multiroot.test.ts | 2 +- .../src/areas/preferences/keybindings.ts | 22 +- .../src/areas/preferences/preferences.test.ts | 6 +- test/smoke/src/areas/preferences/settings.ts | 14 +- test/smoke/src/areas/problems/problems.ts | 10 +- test/smoke/src/areas/quickopen/quickopen.ts | 28 +- test/smoke/src/areas/search/search.ts | 56 ++-- .../src/areas/statusbar/statusbar.test.ts | 2 +- test/smoke/src/areas/statusbar/statusbar.ts | 13 +- test/smoke/src/areas/workbench/viewlet.ts | 8 +- test/smoke/src/areas/workbench/workbench.ts | 32 +-- test/smoke/src/vscode/code.ts | 259 +++++++++++++++-- 27 files changed, 456 insertions(+), 509 deletions(-) delete mode 100644 test/smoke/src/api.ts diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index f859f45075b..6abbc5d59ad 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -34,7 +34,7 @@ export interface IDriver { setValue(windowId: number, selector: string, text: string): TPromise; getTitle(windowId: number): TPromise; isActiveElement(windowId: number, selector: string): TPromise; - getElements(windowId: number, selector: string, recursive: boolean): TPromise; + getElements(windowId: number, selector: string, recursive?: boolean): TPromise; typeInEditor(windowId: number, selector: string, text: string): TPromise; getTerminalBuffer(windowId: number, selector: string): TPromise; } diff --git a/test/smoke/src/api.ts b/test/smoke/src/api.ts deleted file mode 100644 index f11ae031575..00000000000 --- a/test/smoke/src/api.ts +++ /dev/null @@ -1,267 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IDriver, IElement } from './vscode/driver'; - -export class CodeDriver { - - constructor( - private driver: IDriver, - private verbose: boolean - ) { } - - private _activeWindowId: number | undefined = undefined; - - async dispatchKeybinding(keybinding: string): Promise { - if (this.verbose) { - console.log('- dispatchKeybinding:', keybinding); - } - - const windowId = await this.getWindowId(); - await this.driver.dispatchKeybinding(windowId, keybinding); - } - - async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise { - if (this.verbose) { - console.log('- click:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.click(windowId, selector, xoffset, yoffset); - } - - async doubleClick(selector: string): Promise { - if (this.verbose) { - console.log('- doubleClick:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.doubleClick(windowId, selector); - } - - async move(selector: string): Promise { - if (this.verbose) { - console.log('- move:', selector); - } - - const windowId = await this.getWindowId(); - await this.driver.move(windowId, selector); - } - - async setValue(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- setValue:', selector, text); - } - - const windowId = await this.getWindowId(); - await this.driver.setValue(windowId, selector, text); - } - - async getTitle(): Promise { - if (this.verbose) { - console.log('- getTitle:'); - } - - const windowId = await this.getWindowId(); - return await this.driver.getTitle(windowId); - } - - async isActiveElement(selector: string): Promise { - if (this.verbose) { - console.log('- isActiveElement:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.isActiveElement(windowId, selector); - } - - async getElements(selector: string, recursive = false): Promise { - if (this.verbose) { - console.log('- getElements:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.getElements(windowId, selector, recursive); - } - - async typeInEditor(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- typeInEditor:', selector, text); - } - - const windowId = await this.getWindowId(); - return await this.driver.typeInEditor(windowId, selector, text); - } - - async getTerminalBuffer(selector: string): Promise { - if (this.verbose) { - console.log('- getTerminalBuffer:', selector); - } - - const windowId = await this.getWindowId(); - return await this.driver.getTerminalBuffer(windowId, selector); - } - - private async getWindowId(): Promise { - if (typeof this._activeWindowId !== 'number') { - const windows = await this.driver.getWindowIds(); - this._activeWindowId = windows[0]; - } - - return this._activeWindowId; - } -} - -export function findElement(element: IElement, fn: (element: IElement) => boolean): IElement | null { - const queue = [element]; - - while (queue.length > 0) { - const element = queue.shift()!; - - if (fn(element)) { - return element; - } - - queue.push(...element.children); - } - - return null; -} - -export function findElements(element: IElement, fn: (element: IElement) => boolean): IElement[] { - const result: IElement[] = []; - const queue = [element]; - - while (queue.length > 0) { - const element = queue.shift()!; - - if (fn(element)) { - result.push(element); - } - - queue.push(...element.children); - } - - return result; -} - -export class API { - - // waitFor calls should not take more than 200 * 100 = 20 seconds to complete, excluding - // the time it takes for the actual retry call to complete - private retryCount: number; - private readonly retryDuration = 100; // in milliseconds - - constructor( - private driver: CodeDriver, - waitTime: number - ) { - this.retryCount = (waitTime * 1000) / this.retryDuration; - } - - dispatchKeybinding(keybinding: string): Promise { - return this.driver.dispatchKeybinding(keybinding); - } - - waitForTextContent(selector: string, textContent?: string, accept?: (result: string) => boolean): Promise { - accept = accept ? accept : (result => textContent !== void 0 ? textContent === result : !!result); - return this.waitFor(() => this.driver.getElements(selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `getTextContent with selector ${selector}`); - } - - async waitAndClick(selector: string, xoffset?: number, yoffset?: number): Promise { - await this.waitForElement(selector); - return await this.driver.click(selector, xoffset, yoffset); - } - - async waitAndDoubleClick(selector: string): Promise { - await this.waitForElement(selector); - return await this.driver.doubleClick(selector); - } - - async waitAndMove(selector: string): Promise { - await this.waitForElement(selector); - return await this.driver.move(selector); - } - - async setValue(selector: string, text: string): Promise { - await this.waitForElement(selector); - return await this.driver.setValue(selector, text); - } - - async doesElementExist(selector: string): Promise { - const elements = await this.driver.getElements(selector); - return elements.length > 0; - } - - async getElementCount(selector: string): Promise { - const elements = await this.driver.getElements(selector); - return elements.length; - } - - waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { - return this.waitFor(() => this.driver.getElements(selector, recursive), accept, `elements with selector ${selector}`) as Promise; - } - - waitForElement(selector: string, accept: (result: IElement | undefined) => boolean = result => !!result): Promise { - return this.waitFor(() => this.driver.getElements(selector).then(els => els[0]), accept, `element with selector ${selector}`) as Promise; - } - - waitForActiveElement(selector: string): Promise { - return this.waitFor(() => this.driver.isActiveElement(selector), undefined, `wait for active element: ${selector}`); - } - - getTitle(): Promise { - return this.driver.getTitle(); - } - - typeInEditor(selector: string, text: string): Promise { - return this.driver.typeInEditor(selector, text); - } - - getTerminalBuffer(selector: string): Promise { - return this.driver.getTerminalBuffer(selector); - } - - private running = false; - async waitFor(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; - async waitFor(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { - if (this.running) { - throw new Error('Not allowed to run nested waitFor calls!'); - } - - this.running = true; - - try { - let trial = 1; - retryCount = typeof retryCount === 'number' ? retryCount : this.retryCount; - - while (true) { - if (trial > retryCount) { - throw new Error(`${timeoutMessage}: Timed out after ${(retryCount * this.retryDuration) / 1000} seconds.`); - } - - let result; - try { - result = await func(); - } catch (e) { - // console.warn(e); - - if (/Method not implemented/.test(e.message)) { - throw e; - } - } - - if (accept(result)) { - return result; - } - - await new Promise(resolve => setTimeout(resolve, this.retryDuration)); - trial++; - } - } finally { - this.running = false; - } - } -} \ No newline at end of file diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 0b43ca0b346..b8f57eae65f 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API, CodeDriver } from './api'; import { Workbench } from './areas/workbench/workbench'; import * as fs from 'fs'; import * as cp from 'child_process'; @@ -25,9 +24,8 @@ export interface ApplicationOptions extends SpawnOptions { export class Application { - private _api: API; + private _code: Code | undefined; private _workbench: Workbench; - private codeInstance: Code | undefined; private keybindings: any[]; private stopLogCollection: (() => Promise) | undefined; @@ -37,8 +35,8 @@ export class Application { return this.options.quality; } - get api(): API { - return this._api; + get code(): Code { + return this._code!; } get workbench(): Workbench { @@ -97,14 +95,14 @@ export class Application { this.stopLogCollection = undefined; } - if (this.codeInstance) { - this.codeInstance.dispose(); - this.codeInstance = undefined; + if (this._code) { + this._code.dispose(); + this._code = undefined; } } private async startApplication(workspaceOrFolder: string, extraArgs: string[] = []): Promise { - this.codeInstance = await spawn({ + this._code = await spawn({ codePath: this.options.codePath, workspacePath: workspaceOrFolder, userDataDir: this.options.userDataDir, @@ -113,13 +111,11 @@ export class Application { extraArgs }); - const driver = new CodeDriver(this.codeInstance.driver, this.options.verbose); - this._api = new API(driver, this.options.waitTime); - this._workbench = new Workbench(this._api, this.keybindings, this.userDataPath); + this._workbench = new Workbench(this._code, this.keybindings, this.userDataPath); } private async checkWindowReady(): Promise { - if (!this.codeInstance) { + if (!this._code) { console.error('No code instance found'); return; } @@ -127,7 +123,7 @@ export class Application { let retries = 0; while (++retries < 300) { // 30 seconds - const ids = await this.codeInstance.driver.getWindowIds(); + const ids = await this._code.getWindowIds(); if (ids.length > 0) { break; @@ -136,12 +132,12 @@ export class Application { await new Promise(c => setTimeout(c, 100)); } - await this.api.waitForElement('.monaco-workbench'); + await this.code.waitForElement('.monaco-workbench'); } private async waitForWelcome(): Promise { - await this.api.waitForElement('.explorer-folders-view'); - await this.api.waitForElement(`.editor-container[id="workbench.editor.walkThroughPart"] .welcomePage`); + await this.code.waitForElement('.explorer-folders-view'); + await this.code.waitForElement(`.editor-container[id="workbench.editor.walkThroughPart"] .welcomePage`); } private retrieveKeybindings(): Promise { diff --git a/test/smoke/src/areas/activitybar/activityBar.ts b/test/smoke/src/areas/activitybar/activityBar.ts index 46665d64009..22d43a8f8c9 100644 --- a/test/smoke/src/areas/activitybar/activityBar.ts +++ b/test/smoke/src/areas/activitybar/activityBar.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; +import { Code } from '../../vscode/code'; export enum ActivityBarPosition { LEFT = 0, @@ -12,11 +12,9 @@ export enum ActivityBarPosition { export class ActivityBar { - constructor(private api: API) { - // noop - } + constructor(private code: Code) { } - public async getActivityBar(position: ActivityBarPosition): Promise { + async getActivityBar(position: ActivityBarPosition): Promise { let positionClass: string; if (position === ActivityBarPosition.LEFT) { @@ -27,6 +25,6 @@ export class ActivityBar { throw new Error('No such position for activity bar defined.'); } - return this.api.waitForElement(`.part.activitybar.${positionClass}`); + await this.code.waitForElement(`.part.activitybar.${positionClass}`); } } \ No newline at end of file diff --git a/test/smoke/src/areas/css/css.test.ts b/test/smoke/src/areas/css/css.test.ts index 10f473a59a9..176e634bf6d 100644 --- a/test/smoke/src/areas/css/css.test.ts +++ b/test/smoke/src/areas/css/css.test.ts @@ -21,10 +21,10 @@ export function setup() { await app.workbench.quickopen.openFile('style.css'); await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); - await app.api.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.WARNING)); + await app.code.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.WARNING)); await app.workbench.problems.showProblemsView(); - await app.api.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.WARNING)); + await app.code.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.WARNING)); await app.workbench.problems.hideProblemsView(); }); @@ -34,11 +34,11 @@ export function setup() { await app.workbench.quickopen.openFile('style.css'); await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); - await app.api.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.ERROR)); + await app.code.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.ERROR)); - const problems = new Problems(app.api, app.workbench); + const problems = new Problems(app.code, app.workbench); await problems.showProblemsView(); - await app.api.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.ERROR)); + await app.code.waitForElement(Problems.getSelectorInProblemsView(ProblemSeverity.ERROR)); await problems.hideProblemsView(); }); }); diff --git a/test/smoke/src/areas/debug/debug.test.ts b/test/smoke/src/areas/debug/debug.test.ts index 45710a1b6f7..b193d856cfa 100644 --- a/test/smoke/src/areas/debug/debug.test.ts +++ b/test/smoke/src/areas/debug/debug.test.ts @@ -62,16 +62,16 @@ export function setup() { it('focus stack frames and variables', async function () { const app = this.app as Application; - await app.api.waitFor(() => app.workbench.debug.getLocalVariableCount(), c => c === 4, 'there should be 4 local variables'); + await app.workbench.debug.waitForVariableCount(4); await app.workbench.debug.focusStackFrame('layer.js', 'looking for layer.js'); - await app.api.waitFor(() => app.workbench.debug.getLocalVariableCount(), c => c === 5, 'there should be 5 local variables'); + await app.workbench.debug.waitForVariableCount(5); await app.workbench.debug.focusStackFrame('route.js', 'looking for route.js'); - await app.api.waitFor(() => app.workbench.debug.getLocalVariableCount(), c => c === 3, 'there should be 3 local variables'); + await app.workbench.debug.waitForVariableCount(3); await app.workbench.debug.focusStackFrame('index.js', 'looking for index.js'); - await app.api.waitFor(() => app.workbench.debug.getLocalVariableCount(), c => c === 4, 'there should be 4 local variables'); + await app.workbench.debug.waitForVariableCount(4); }); it('stepOver, stepIn, stepOut', async function () { diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index f19b3b5143d..8ee59bb8675 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -5,7 +5,7 @@ import { Viewlet } from '../workbench/viewlet'; import { Commands } from '../workbench/workbench'; -import { API, findElement } from '../../api'; +import { Code, findElement } from '../../vscode/code'; import { Editors } from '../editor/editors'; import { Editor } from '../editor/editor'; import { IElement } from '../../vscode/driver'; @@ -50,30 +50,30 @@ function toStackFrame(element: IElement): IStackFrame { export class Debug extends Viewlet { - constructor(api: API, private commands: Commands, private editors: Editors, private editor: Editor) { - super(api); + constructor(code: Code, private commands: Commands, private editors: Editors, private editor: Editor) { + super(code); } async openDebugViewlet(): Promise { await this.commands.runCommand('workbench.view.debug'); - await this.api.waitForElement(DEBUG_VIEW); + await this.code.waitForElement(DEBUG_VIEW); } async configure(): Promise { - await this.api.waitAndClick(CONFIGURE); + await this.code.waitAndClick(CONFIGURE); await this.editors.waitForEditorFocus('launch.json'); } async setBreakpointOnLine(lineNumber: number): Promise { - await this.api.waitForElement(`${GLYPH_AREA}(${lineNumber})`); - await this.api.waitAndClick(`${GLYPH_AREA}(${lineNumber})`, 5, 5); - await this.api.waitForElement(BREAKPOINT_GLYPH); + await this.code.waitForElement(`${GLYPH_AREA}(${lineNumber})`); + await this.code.waitAndClick(`${GLYPH_AREA}(${lineNumber})`, 5, 5); + await this.code.waitForElement(BREAKPOINT_GLYPH); } async startDebugging(): Promise { await this.commands.runCommand('workbench.action.debug.start'); - await this.api.waitForElement(PAUSE); - await this.api.waitForElement(DEBUG_STATUS_BAR); + await this.code.waitForElement(PAUSE); + await this.code.waitForElement(DEBUG_STATUS_BAR); const portPrefix = 'Port: '; const output = await this.waitForOutput(output => output.some(line => line.indexOf(portPrefix) >= 0)); @@ -83,60 +83,60 @@ export class Debug extends Viewlet { } async stepOver(): Promise { - await this.api.waitAndClick(STEP_OVER); + await this.code.waitAndClick(STEP_OVER); } async stepIn(): Promise { - await this.api.waitAndClick(STEP_IN); + await this.code.waitAndClick(STEP_IN); } async stepOut(): Promise { - await this.api.waitAndClick(STEP_OUT); + await this.code.waitAndClick(STEP_OUT); } async continue(): Promise { - await this.api.waitAndClick(CONTINUE); + await this.code.waitAndClick(CONTINUE); await this.waitForStackFrameLength(0); } async stopDebugging(): Promise { - await this.api.waitAndClick(STOP); - await this.api.waitForElement(TOOLBAR_HIDDEN); - await this.api.waitForElement(NOT_DEBUG_STATUS_BAR); + await this.code.waitAndClick(STOP); + await this.code.waitForElement(TOOLBAR_HIDDEN); + await this.code.waitForElement(NOT_DEBUG_STATUS_BAR); } async waitForStackFrame(func: (stackFrame: IStackFrame) => boolean, message: string): Promise { - const elements = await this.api.waitForElements(STACK_FRAME, true, elements => elements.some(e => func(toStackFrame(e)))); + const elements = await this.code.waitForElements(STACK_FRAME, true, elements => elements.some(e => func(toStackFrame(e)))); return elements.map(toStackFrame).filter(s => func(s))[0]; } async waitForStackFrameLength(length: number): Promise { - await this.api.waitForElements(STACK_FRAME, false, result => result.length === length); + await this.code.waitForElements(STACK_FRAME, false, result => result.length === length); } async focusStackFrame(name: string, message: string): Promise { - await this.api.waitAndClick(SPECIFIC_STACK_FRAME(name)); + await this.code.waitAndClick(SPECIFIC_STACK_FRAME(name)); await this.editors.waitForTab(name); } async waitForReplCommand(text: string, accept: (result: string) => boolean): Promise { await this.commands.runCommand('Debug: Focus Debug Console'); - await this.api.waitForActiveElement(REPL_FOCUSED); - await this.api.setValue(REPL_FOCUSED, text); + await this.code.waitForActiveElement(REPL_FOCUSED); + await this.code.setValue(REPL_FOCUSED, text); // Wait for the keys to be picked up by the editor model such that repl evalutes what just got typed await this.editor.waitForEditorContents('debug:input', s => s.indexOf(text) >= 0); - await this.api.dispatchKeybinding('enter'); - await this.api.waitForElement(CONSOLE_INPUT_OUTPUT); + await this.code.dispatchKeybinding('enter'); + await this.code.waitForElement(CONSOLE_INPUT_OUTPUT); await this.waitForOutput(output => accept(output[output.length - 1] || '')); } - async getLocalVariableCount(): Promise { - return await this.api.getElementCount(VARIABLE); + async waitForVariableCount(count: number): Promise { + await this.code.waitForElements(VARIABLE, false, els => els.length === count); } private async waitForOutput(fn: (output: string[]) => boolean): Promise { - const elements = await this.api.waitForElements(CONSOLE_OUTPUT, false, elements => fn(elements.map(e => e.textContent))); + const elements = await this.code.waitForElements(CONSOLE_OUTPUT, false, elements => fn(elements.map(e => e.textContent))); return elements.map(e => e.textContent); } } diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index fdb5f4ca9c2..8bc52eaeaf5 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -5,7 +5,7 @@ import { References } from './peek'; import { Commands } from '../workbench/workbench'; -import { API } from '../../api'; +import { Code } from '../../vscode/code'; const RENAME_BOX = '.monaco-editor .monaco-editor.rename-box'; const RENAME_INPUT = `${RENAME_BOX} .rename-input`; @@ -18,12 +18,12 @@ export class Editor { private static readonly FOLDING_EXPANDED = '.monaco-editor .margin .margin-view-overlays>:nth-child(${INDEX}) .folding'; private static readonly FOLDING_COLLAPSED = `${Editor.FOLDING_EXPANDED}.collapsed`; - constructor(private api: API, private commands: Commands) { } + constructor(private code: Code, private commands: Commands) { } async findReferences(term: string, line: number): Promise { await this.clickOnTerm(term, line); await this.commands.runCommand('Find All References'); - const references = new References(this.api); + const references = new References(this.code); await references.waitUntilOpen(); return references; } @@ -32,10 +32,10 @@ export class Editor { await this.clickOnTerm(from, line); await this.commands.runCommand('Rename Symbol'); - await this.api.waitForActiveElement(RENAME_INPUT); - await this.api.setValue(RENAME_INPUT, to); + await this.code.waitForActiveElement(RENAME_INPUT); + await this.code.setValue(RENAME_INPUT, to); - await this.api.dispatchKeybinding('enter'); + await this.code.dispatchKeybinding('enter'); } async gotoDefinition(term: string, line: number): Promise { @@ -46,7 +46,7 @@ export class Editor { async peekDefinition(term: string, line: number): Promise { await this.clickOnTerm(term, line); await this.commands.runCommand('Peek Definition'); - const peek = new References(this.api); + const peek = new References(this.code); await peek.waitUntilOpen(); return peek; } @@ -54,7 +54,7 @@ export class Editor { async waitForHighlightingLine(line: number): Promise { const currentLineIndex = await this.getViewLineIndex(line); if (currentLineIndex) { - await this.api.waitForElement(`.monaco-editor .view-overlays>:nth-child(${currentLineIndex}) .current-line`); + await this.code.waitForElement(`.monaco-editor .view-overlays>:nth-child(${currentLineIndex}) .current-line`); return; } throw new Error('Cannot find line ' + line); @@ -68,14 +68,14 @@ export class Editor { async foldAtLine(line: number): Promise { const lineIndex = await this.getViewLineIndex(line); - await this.api.waitAndClick(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); - await this.api.waitForElement(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); + await this.code.waitAndClick(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); + await this.code.waitForElement(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); } async unfoldAtLine(line: number): Promise { const lineIndex = await this.getViewLineIndex(line); - await this.api.waitAndClick(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); - await this.api.waitForElement(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); + await this.code.waitAndClick(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); + await this.code.waitForElement(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); } async waitUntilShown(line: number): Promise { @@ -84,18 +84,18 @@ export class Editor { async clickOnTerm(term: string, line: number): Promise { const selector = await this.getSelector(term, line); - await this.api.waitAndClick(selector); + await this.code.waitAndClick(selector); } async waitForTypeInEditor(filename: string, text: string, selectorPrefix = ''): Promise { const editor = [selectorPrefix || '', EDITOR(filename)].join(' '); - await this.api.waitForElement(editor); + await this.code.waitForElement(editor); const textarea = `${editor} textarea`; - await this.api.waitForActiveElement(textarea); + await this.code.waitForActiveElement(textarea); - await this.api.typeInEditor(textarea, text); + await this.code.typeInEditor(textarea, text); await this.waitForEditorContents(filename, c => c.indexOf(text) > -1, selectorPrefix); } @@ -103,17 +103,17 @@ export class Editor { async waitForEditorContents(filename: string, accept: (contents: string) => boolean, selectorPrefix = ''): Promise { const selector = [selectorPrefix || '', `${EDITOR(filename)} .view-lines`].join(' '); - return this.api.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' '))); + return this.code.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' '))); } private async getClassSelectors(term: string, viewline: number): Promise { - const elements = await this.api.waitForElements(`${Editor.VIEW_LINES}>:nth-child(${viewline}) span span`, false, els => els.some(el => el.textContent === term)); + const elements = await this.code.waitForElements(`${Editor.VIEW_LINES}>:nth-child(${viewline}) span span`, false, els => els.some(el => el.textContent === term)); const { className } = elements.filter(r => r.textContent === term)[0]; return className.split(/\s/g); } private async getViewLineIndex(line: number): Promise { - const elements = await this.api.waitForElements(Editor.LINE_NUMBERS, false, els => { + const elements = await this.code.waitForElements(Editor.LINE_NUMBERS, false, els => { return els.some(el => el.textContent === `${line}`); }); diff --git a/test/smoke/src/areas/editor/editors.ts b/test/smoke/src/areas/editor/editors.ts index 300e57bf965..4ac026780e4 100644 --- a/test/smoke/src/areas/editor/editors.ts +++ b/test/smoke/src/areas/editor/editors.ts @@ -3,25 +3,25 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; export class Editors { - constructor(private api: API, private commands: Commands) { } + constructor(private code: Code, private commands: Commands) { } async saveOpenedFile(): Promise { await this.commands.runCommand('workbench.action.files.save'); } async selectTab(tabName: string, untitled: boolean = false): Promise { - await this.api.waitAndClick(`.tabs-container div.tab[aria-label="${tabName}, tab"]`); + await this.code.waitAndClick(`.tabs-container div.tab[aria-label="${tabName}, tab"]`); await this.waitForEditorFocus(tabName, untitled); } async waitForActiveEditor(filename: string): Promise { const selector = `.editor-container .monaco-editor[data-uri$="${filename}"] textarea`; - return this.api.waitForActiveElement(selector); + return this.code.waitForActiveElement(selector); } async waitForEditorFocus(fileName: string, untitled: boolean = false): Promise { @@ -30,11 +30,11 @@ export class Editors { } async waitForActiveTab(fileName: string, isDirty: boolean = false): Promise { - await this.api.waitForElement(`.tabs-container div.tab.active${isDirty ? '.dirty' : ''}[aria-selected="true"][aria-label="${fileName}, tab"]`); + await this.code.waitForElement(`.tabs-container div.tab.active${isDirty ? '.dirty' : ''}[aria-selected="true"][aria-label="${fileName}, tab"]`); } async waitForTab(fileName: string, isDirty: boolean = false): Promise { - await this.api.waitForElement(`.tabs-container div.tab${isDirty ? '.dirty' : ''}[aria-label="${fileName}, tab"]`); + await this.code.waitForElement(`.tabs-container div.tab${isDirty ? '.dirty' : ''}[aria-label="${fileName}, tab"]`); } async newUntitledFile(): Promise { diff --git a/test/smoke/src/areas/editor/peek.ts b/test/smoke/src/areas/editor/peek.ts index 4f0bd9170b2..55f7f5ece06 100644 --- a/test/smoke/src/areas/editor/peek.ts +++ b/test/smoke/src/areas/editor/peek.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; +import { Code } from '../../vscode/code'; export class References { @@ -12,29 +12,29 @@ export class References { private static readonly REFERENCES_TITLE_COUNT = `${References.REFERENCES_WIDGET} .head .peekview-title .meta`; private static readonly REFERENCES = `${References.REFERENCES_WIDGET} .body .ref-tree.inline .monaco-tree-row .reference`; - constructor(private api: API) { } + constructor(private code: Code) { } async waitUntilOpen(): Promise { - await this.api.waitForElement(References.REFERENCES_WIDGET); + await this.code.waitForElement(References.REFERENCES_WIDGET); } async waitForReferencesCountInTitle(count: number): Promise { - await this.api.waitForTextContent(References.REFERENCES_TITLE_COUNT, void 0, titleCount => { + await this.code.waitForTextContent(References.REFERENCES_TITLE_COUNT, void 0, titleCount => { const matches = titleCount.match(/\d+/); return matches ? parseInt(matches[0]) === count : false; }); } async waitForReferencesCount(count: number): Promise { - await this.api.waitForElements(References.REFERENCES, false, result => result && result.length === count); + await this.code.waitForElements(References.REFERENCES, false, result => result && result.length === count); } async waitForFile(file: string): Promise { - await this.api.waitForTextContent(References.REFERENCES_TITLE_FILE_NAME, file); + await this.code.waitForTextContent(References.REFERENCES_TITLE_FILE_NAME, file); } async close(): Promise { - await this.api.dispatchKeybinding('escape'); - await this.api.waitForElement(References.REFERENCES_WIDGET, element => !element); + await this.code.dispatchKeybinding('escape'); + await this.code.waitForElement(References.REFERENCES_WIDGET, element => !element); } } \ No newline at end of file diff --git a/test/smoke/src/areas/explorer/explorer.test.ts b/test/smoke/src/areas/explorer/explorer.test.ts index 425233c7ad7..946105649b7 100644 --- a/test/smoke/src/areas/explorer/explorer.test.ts +++ b/test/smoke/src/areas/explorer/explorer.test.ts @@ -21,7 +21,7 @@ export function setup() { await app.workbench.quickopen.openQuickOpen('.js'); await app.workbench.quickopen.waitForQuickOpenElements(names => expectedNames.every(n => names.some(m => n === m))); - await app.api.dispatchKeybinding('escape'); + await app.code.dispatchKeybinding('escape'); }); it('quick open respects fuzzy matching', async function () { @@ -34,7 +34,7 @@ export function setup() { await app.workbench.quickopen.openQuickOpen('a.s'); await app.workbench.quickopen.waitForQuickOpenElements(names => expectedNames.every(n => names.some(m => n === m))); - await app.api.dispatchKeybinding('escape'); + await app.code.dispatchKeybinding('escape'); }); }); } \ No newline at end of file diff --git a/test/smoke/src/areas/explorer/explorer.ts b/test/smoke/src/areas/explorer/explorer.ts index 956b29b488f..15dc32668ee 100644 --- a/test/smoke/src/areas/explorer/explorer.ts +++ b/test/smoke/src/areas/explorer/explorer.ts @@ -4,17 +4,17 @@ *--------------------------------------------------------------------------------------------*/ import { Viewlet } from '../workbench/viewlet'; -import { API } from '../../api'; import { Editors } from '../editor/editors'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; export class Explorer extends Viewlet { private static readonly EXPLORER_VIEWLET = 'div[id="workbench.view.explorer"]'; private static readonly OPEN_EDITORS_VIEW = `${Explorer.EXPLORER_VIEWLET} .split-view-view:nth-child(1) .title`; - constructor(api: API, private commands: Commands, private editors: Editors) { - super(api); + constructor(code: Code, private commands: Commands, private editors: Editors) { + super(code); } openExplorerView(): Promise { @@ -22,11 +22,11 @@ export class Explorer extends Viewlet { } getOpenEditorsViewTitle(): Promise { - return this.api.waitForTextContent(Explorer.OPEN_EDITORS_VIEW); + return this.code.waitForTextContent(Explorer.OPEN_EDITORS_VIEW); } async openFile(fileName: string): Promise { - await this.api.waitAndDoubleClick(`div[class="monaco-icon-label file-icon ${fileName}-name-file-icon ${this.getExtensionSelector(fileName)} explorer-item"]`); + await this.code.waitAndDoubleClick(`div[class="monaco-icon-label file-icon ${fileName}-name-file-icon ${this.getExtensionSelector(fileName)} explorer-item"]`); await this.editors.waitForEditorFocus(fileName); } diff --git a/test/smoke/src/areas/extensions/extensions.ts b/test/smoke/src/areas/extensions/extensions.ts index bedca3d1aa1..386e521e5f8 100644 --- a/test/smoke/src/areas/extensions/extensions.ts +++ b/test/smoke/src/areas/extensions/extensions.ts @@ -4,15 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import { Viewlet } from '../workbench/viewlet'; -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; const SEARCH_BOX = 'div.extensions-viewlet[id="workbench.view.extensions"] input.search-box'; export class Extensions extends Viewlet { - constructor(api: API, private commands: Commands) { - super(api); + constructor(code: Code, private commands: Commands) { + super(code); } async openExtensionsViewlet(): Promise { @@ -21,19 +21,19 @@ export class Extensions extends Viewlet { } async waitForExtensionsViewlet(): Promise { - await this.api.waitForActiveElement(SEARCH_BOX); + await this.code.waitForActiveElement(SEARCH_BOX); } async searchForExtension(name: string): Promise { - await this.api.waitAndClick(SEARCH_BOX); - await this.api.waitForActiveElement(SEARCH_BOX); - await this.api.setValue(SEARCH_BOX, name); + await this.code.waitAndClick(SEARCH_BOX); + await this.code.waitForActiveElement(SEARCH_BOX); + await this.code.setValue(SEARCH_BOX, name); } async installExtension(name: string): Promise { await this.searchForExtension(name); - await this.api.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.install`); - await this.api.waitForElement(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.reload`); + await this.code.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.install`); + await this.code.waitForElement(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.reload`); } } \ No newline at end of file diff --git a/test/smoke/src/areas/git/git.test.ts b/test/smoke/src/areas/git/git.test.ts index ab742c7ef44..e5c2669b722 100644 --- a/test/smoke/src/areas/git/git.test.ts +++ b/test/smoke/src/areas/git/git.test.ts @@ -34,7 +34,7 @@ export function setup() { await app.workbench.scm.openSCMViewlet(); await app.workbench.scm.openChange('app.js'); - await app.api.waitForElement(DIFF_EDITOR_LINE_INSERT); + await app.code.waitForElement(DIFF_EDITOR_LINE_INSERT); }); it('stages correctly', async function () { @@ -61,13 +61,13 @@ export function setup() { await app.workbench.scm.waitForChange('app.js', 'Index Modified'); await app.workbench.scm.commit('first commit'); - await app.api.waitForTextContent(SYNC_STATUSBAR, ' 0↓ 1↑'); + await app.code.waitForTextContent(SYNC_STATUSBAR, ' 0↓ 1↑'); await app.workbench.runCommand('Git: Stage All Changes'); await app.workbench.scm.waitForChange('index.jade', 'Index Modified'); await app.workbench.scm.commit('second commit'); - await app.api.waitForTextContent(SYNC_STATUSBAR, ' 0↓ 2↑'); + await app.code.waitForTextContent(SYNC_STATUSBAR, ' 0↓ 2↑'); cp.execSync('git reset --hard origin/master', { cwd: app.workspacePath }); }); diff --git a/test/smoke/src/areas/git/scm.ts b/test/smoke/src/areas/git/scm.ts index 21a69240780..4543c6fc689 100644 --- a/test/smoke/src/areas/git/scm.ts +++ b/test/smoke/src/areas/git/scm.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { Viewlet } from '../workbench/viewlet'; -import { API, findElement, findElements } from '../../api'; import { Commands } from '../workbench/workbench'; import { IElement } from '../../vscode/driver'; +import { findElement, findElements, Code } from '../../vscode/code'; const VIEWLET = 'div[id="workbench.view.scm"]'; const SCM_INPUT = `${VIEWLET} .scm-editor textarea`; @@ -41,44 +41,44 @@ function toChange(element: IElement): Change { export class SCM extends Viewlet { - constructor(api: API, private commands: Commands) { - super(api); + constructor(code: Code, private commands: Commands) { + super(code); } async openSCMViewlet(): Promise { await this.commands.runCommand('workbench.view.scm'); - await this.api.waitForElement(SCM_INPUT); + await this.code.waitForElement(SCM_INPUT); } async waitForChange(name: string, type?: string): Promise { const func = (change: Change) => change.name === name && (!type || change.type === type); - await this.api.waitForElements(SCM_RESOURCE, true, elements => elements.some(e => func(toChange(e)))); + await this.code.waitForElements(SCM_RESOURCE, true, elements => elements.some(e => func(toChange(e)))); } async refreshSCMViewlet(): Promise { - await this.api.waitAndClick(REFRESH_COMMAND); + await this.code.waitAndClick(REFRESH_COMMAND); } async openChange(name: string): Promise { - await this.api.waitAndClick(SCM_RESOURCE_CLICK(name)); + await this.code.waitAndClick(SCM_RESOURCE_CLICK(name)); } async stage(name: string): Promise { - await this.api.waitAndClick(SCM_RESOURCE_ACTION_CLICK(name, 'Stage Changes')); + await this.code.waitAndClick(SCM_RESOURCE_ACTION_CLICK(name, 'Stage Changes')); } async stageAll(): Promise { - await this.api.waitAndClick(SCM_RESOURCE_GROUP_COMMAND_CLICK('Stage All Changes')); + await this.code.waitAndClick(SCM_RESOURCE_GROUP_COMMAND_CLICK('Stage All Changes')); } async unstage(name: string): Promise { - await this.api.waitAndClick(SCM_RESOURCE_ACTION_CLICK(name, 'Unstage Changes')); + await this.code.waitAndClick(SCM_RESOURCE_ACTION_CLICK(name, 'Unstage Changes')); } async commit(message: string): Promise { - await this.api.waitAndClick(SCM_INPUT); - await this.api.waitForActiveElement(SCM_INPUT); - await this.api.setValue(SCM_INPUT, message); - await this.api.waitAndClick(COMMIT_COMMAND); + await this.code.waitAndClick(SCM_INPUT); + await this.code.waitForActiveElement(SCM_INPUT); + await this.code.setValue(SCM_INPUT, message); + await this.code.waitAndClick(COMMIT_COMMAND); } } \ No newline at end of file diff --git a/test/smoke/src/areas/multiroot/multiroot.test.ts b/test/smoke/src/areas/multiroot/multiroot.test.ts index a5f47f25967..5b479677556 100644 --- a/test/smoke/src/areas/multiroot/multiroot.test.ts +++ b/test/smoke/src/areas/multiroot/multiroot.test.ts @@ -27,7 +27,7 @@ export function setup() { it('shows workspace name in title', async function () { const app = this.app as Application; - const title = await app.api.getTitle(); + const title = await app.code.getTitle(); assert.ok(title.indexOf('smoketest (Workspace)') >= 0); }); }); diff --git a/test/smoke/src/areas/preferences/keybindings.ts b/test/smoke/src/areas/preferences/keybindings.ts index 014dff290a3..98865e492c4 100644 --- a/test/smoke/src/areas/preferences/keybindings.ts +++ b/test/smoke/src/areas/preferences/keybindings.ts @@ -3,28 +3,28 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; const SEARCH_INPUT = '.settings-search-input input'; export class KeybindingsEditor { - constructor(private api: API, private commands: Commands) { } + constructor(private code: Code, private commands: Commands) { } async updateKeybinding(command: string, keybinding: string, ariaLabel: string): Promise { await this.commands.runCommand('workbench.action.openGlobalKeybindings'); - await this.api.waitForActiveElement(SEARCH_INPUT); - await this.api.setValue(SEARCH_INPUT, command); + await this.code.waitForActiveElement(SEARCH_INPUT); + await this.code.setValue(SEARCH_INPUT, command); - await this.api.waitAndClick('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item'); - await this.api.waitForElement('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item.focused.selected'); + await this.code.waitAndClick('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item'); + await this.code.waitForElement('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item.focused.selected'); - await this.api.waitAndClick('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item .action-item .icon.add'); - await this.api.waitForElement('.defineKeybindingWidget .monaco-inputbox.synthetic-focus'); + await this.code.waitAndClick('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item .action-item .icon.add'); + await this.code.waitForElement('.defineKeybindingWidget .monaco-inputbox.synthetic-focus'); - await this.api.dispatchKeybinding(keybinding); - await this.api.dispatchKeybinding('enter'); - await this.api.waitForElement(`div[aria-label="Keybindings"] div[aria-label="Keybinding is ${ariaLabel}."]`); + await this.code.dispatchKeybinding(keybinding); + await this.code.dispatchKeybinding('enter'); + await this.code.waitForElement(`div[aria-label="Keybindings"] div[aria-label="Keybinding is ${ariaLabel}."]`); } } \ No newline at end of file diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index 92c58ab4517..ecca6a44167 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -14,11 +14,11 @@ export function setup() { const app = this.app as Application; await app.workbench.explorer.openFile('app.js'); - await app.api.waitForElements('.line-numbers', false, elements => !!elements.length); + await app.code.waitForElements('.line-numbers', false, elements => !!elements.length); await app.workbench.settingsEditor.addUserSetting('editor.lineNumbers', '"off"'); await app.workbench.editors.selectTab('app.js'); - await app.api.waitForElements('.line-numbers', false, result => !result || result.length === 0); + await app.code.waitForElements('.line-numbers', false, result => !result || result.length === 0); }); it(`changes 'workbench.action.toggleSidebarPosition' command key binding and verifies it`, async function () { @@ -27,7 +27,7 @@ export function setup() { await app.workbench.keybindingsEditor.updateKeybinding('workbench.action.toggleSidebarPosition', 'ctrl+u', 'Control+U'); - await app.api.dispatchKeybinding('ctrl+u'); + await app.code.dispatchKeybinding('ctrl+u'); assert.ok(await app.workbench.activitybar.getActivityBar(ActivityBarPosition.RIGHT), 'Activity bar was not moved to right after toggling its position.'); }); diff --git a/test/smoke/src/areas/preferences/settings.ts b/test/smoke/src/areas/preferences/settings.ts index 915af0873ea..2c64ae89b12 100644 --- a/test/smoke/src/areas/preferences/settings.ts +++ b/test/smoke/src/areas/preferences/settings.ts @@ -5,10 +5,10 @@ import * as fs from 'fs'; import * as path from 'path'; -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; import { Editor } from '../editor/editor'; import { Editors } from '../editor/editors'; +import { Code } from '../../vscode/code'; export enum ActivityBarPosition { LEFT = 0, @@ -20,17 +20,17 @@ const EDITOR = '.editable-preferences-editor-container .monaco-editor textarea'; export class SettingsEditor { - constructor(private api: API, private userDataPath: string, private commands: Commands, private editors: Editors, private editor: Editor) { } + constructor(private code: Code, private userDataPath: string, private commands: Commands, private editors: Editors, private editor: Editor) { } async addUserSetting(setting: string, value: string): Promise { await this.commands.runCommand('workbench.action.openGlobalSettings'); - await this.api.waitAndClick(SEARCH_INPUT); - await this.api.waitForActiveElement(SEARCH_INPUT); + await this.code.waitAndClick(SEARCH_INPUT); + await this.code.waitForActiveElement(SEARCH_INPUT); - await this.api.dispatchKeybinding('down'); - await this.api.waitForActiveElement(EDITOR); + await this.code.dispatchKeybinding('down'); + await this.code.waitForActiveElement(EDITOR); - await this.api.dispatchKeybinding('right'); + await this.code.dispatchKeybinding('right'); await this.editor.waitForTypeInEditor('settings.json', `"${setting}": ${value}`, '.editable-preferences-editor-container'); await this.editors.saveOpenedFile(); } diff --git a/test/smoke/src/areas/problems/problems.ts b/test/smoke/src/areas/problems/problems.ts index 84a0b92c244..b5c671a9e70 100644 --- a/test/smoke/src/areas/problems/problems.ts +++ b/test/smoke/src/areas/problems/problems.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; export enum ProblemSeverity { WARNING = 0, @@ -15,7 +15,7 @@ export class Problems { static PROBLEMS_VIEW_SELECTOR = '.panel.markers-panel'; - constructor(private api: API, private commands: Commands) { + constructor(private code: Code, private commands: Commands) { // noop } @@ -29,16 +29,16 @@ export class Problems { public async hideProblemsView(): Promise { if (await this.isVisible()) { await this.commands.runCommand('workbench.actions.view.problems'); - await this.api.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR, el => !el); + await this.code.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR, el => !el); } } isVisible(): Promise { - return this.api.doesElementExist(Problems.PROBLEMS_VIEW_SELECTOR); + return this.code.doesElementExist(Problems.PROBLEMS_VIEW_SELECTOR); } public async waitForProblemsView(): Promise { - await this.api.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR); + await this.code.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR); } public static getSelectorInProblemsView(problemType: ProblemSeverity): string { diff --git a/test/smoke/src/areas/quickopen/quickopen.ts b/test/smoke/src/areas/quickopen/quickopen.ts index 9d411f60d77..c580efdf69d 100644 --- a/test/smoke/src/areas/quickopen/quickopen.ts +++ b/test/smoke/src/areas/quickopen/quickopen.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; import { Editors } from '../editor/editors'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; export class QuickOpen { @@ -16,14 +16,14 @@ export class QuickOpen { static QUICK_OPEN_ENTRY_SELECTOR = 'div[aria-label="Quick Picker"] .monaco-tree-rows.show-twisties .monaco-tree-row .quick-open-entry'; static QUICK_OPEN_ENTRY_LABEL_SELECTOR = 'div[aria-label="Quick Picker"] .monaco-tree-rows.show-twisties .monaco-tree-row .quick-open-entry .label-name'; - constructor(private api: API, private commands: Commands, private editors: Editors) { } + constructor(private code: Code, private commands: Commands, private editors: Editors) { } async openQuickOpen(value: string): Promise { await this.commands.runCommand('workbench.action.quickOpen'); await this.waitForQuickOpenOpened(); if (value) { - await this.api.setValue(QuickOpen.QUICK_OPEN_INPUT, value); + await this.code.setValue(QuickOpen.QUICK_OPEN_INPUT, value); } } @@ -36,46 +36,46 @@ export class QuickOpen { await this.openQuickOpen(fileName); await this.waitForQuickOpenElements(names => names.some(n => n === fileName)); - await this.api.dispatchKeybinding('enter'); + await this.code.dispatchKeybinding('enter'); await this.editors.waitForActiveTab(fileName); await this.editors.waitForEditorFocus(fileName); } async waitForQuickOpenOpened(): Promise { - await this.api.waitForActiveElement(QuickOpen.QUICK_OPEN_INPUT); + await this.code.waitForActiveElement(QuickOpen.QUICK_OPEN_INPUT); } private async waitForQuickOpenClosed(): Promise { - await this.api.waitForElement(QuickOpen.QUICK_OPEN_HIDDEN); + await this.code.waitForElement(QuickOpen.QUICK_OPEN_HIDDEN); } async submit(text: string): Promise { - await this.api.setValue(QuickOpen.QUICK_OPEN_INPUT, text); - await this.api.dispatchKeybinding('enter'); + await this.code.setValue(QuickOpen.QUICK_OPEN_INPUT, text); + await this.code.dispatchKeybinding('enter'); await this.waitForQuickOpenClosed(); } async selectQuickOpenElement(index: number): Promise { await this.waitForQuickOpenOpened(); for (let from = 0; from < index; from++) { - await this.api.dispatchKeybinding('down'); + await this.code.dispatchKeybinding('down'); } - await this.api.dispatchKeybinding('enter'); + await this.code.dispatchKeybinding('enter'); await this.waitForQuickOpenClosed(); } async waitForQuickOpenElements(accept: (names: string[]) => boolean): Promise { - await this.api.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_LABEL_SELECTOR, false, els => accept(els.map(e => e.textContent))); + await this.code.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_LABEL_SELECTOR, false, els => accept(els.map(e => e.textContent))); } async runCommand(command: string): Promise { await this.openQuickOpen(`> ${command}`); // wait for best choice to be focused - await this.api.waitForTextContent(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT, command); + await this.code.waitForTextContent(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT, command); // wait and click on best choice - await this.api.waitAndClick(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT); + await this.code.waitAndClick(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT); } async openQuickOutline(): Promise { @@ -84,7 +84,7 @@ export class QuickOpen { while (++retries < 10) { await this.commands.runCommand('workbench.action.gotoSymbol'); - const text = await this.api.waitForTextContent('div[aria-label="Quick Picker"] .monaco-tree-rows.show-twisties div.monaco-tree-row .quick-open-entry .monaco-icon-label .label-name .monaco-highlighted-label span'); + const text = await this.code.waitForTextContent('div[aria-label="Quick Picker"] .monaco-tree-rows.show-twisties div.monaco-tree-row .quick-open-entry .monaco-icon-label .label-name .monaco-highlighted-label span'); if (text !== 'No symbol information for the file') { return; diff --git a/test/smoke/src/areas/search/search.ts b/test/smoke/src/areas/search/search.ts index 3976d4e64c6..8c3514ae1f3 100644 --- a/test/smoke/src/areas/search/search.ts +++ b/test/smoke/src/areas/search/search.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { Viewlet } from '../workbench/viewlet'; -import { API } from '../../api'; import { Commands } from '../workbench/workbench'; +import { Code } from '../../vscode/code'; const VIEWLET = 'div[id="workbench.view.search"] .search-view'; const INPUT = `${VIEWLET} .search-widget .search-container .monaco-inputbox input`; @@ -13,75 +13,75 @@ const INCLUDE_INPUT = `${VIEWLET} .query-details .monaco-inputbox input[aria-lab export class Search extends Viewlet { - constructor(api: API, private commands: Commands) { - super(api); + constructor(code: Code, private commands: Commands) { + super(code); } async openSearchViewlet(): Promise { await this.commands.runCommand('workbench.view.search'); - await this.api.waitForActiveElement(INPUT); + await this.code.waitForActiveElement(INPUT); } async searchFor(text: string): Promise { - await this.api.waitAndClick(INPUT); - await this.api.waitForActiveElement(INPUT); - await this.api.setValue(INPUT, text); + await this.code.waitAndClick(INPUT); + await this.code.waitForActiveElement(INPUT); + await this.code.setValue(INPUT, text); await this.submitSearch(); } async submitSearch(): Promise { - await this.api.waitAndClick(INPUT); - await this.api.waitForActiveElement(INPUT); + await this.code.waitAndClick(INPUT); + await this.code.waitForActiveElement(INPUT); - await this.api.dispatchKeybinding('enter'); - await this.api.waitForElement(`${VIEWLET} .messages[aria-hidden="false"]`); + await this.code.dispatchKeybinding('enter'); + await this.code.waitForElement(`${VIEWLET} .messages[aria-hidden="false"]`); } async setFilesToIncludeText(text: string): Promise { - await this.api.waitAndClick(INCLUDE_INPUT); - await this.api.waitForActiveElement(INCLUDE_INPUT); - await this.api.setValue(INCLUDE_INPUT, text || ''); + await this.code.waitAndClick(INCLUDE_INPUT); + await this.code.waitForActiveElement(INCLUDE_INPUT); + await this.code.setValue(INCLUDE_INPUT, text || ''); } async showQueryDetails(): Promise { if (!await this.areDetailsVisible()) { - await this.api.waitAndClick(`${VIEWLET} .query-details .more`); + await this.code.waitAndClick(`${VIEWLET} .query-details .more`); } } async hideQueryDetails(): Promise { if (await this.areDetailsVisible()) { - await this.api.waitAndClick(`${VIEWLET} .query-details.more .more`); + await this.code.waitAndClick(`${VIEWLET} .query-details.more .more`); } } areDetailsVisible(): Promise { - return this.api.doesElementExist(`${VIEWLET} .query-details.more`); + return this.code.doesElementExist(`${VIEWLET} .query-details.more`); } async removeFileMatch(index: number): Promise { - await this.api.waitAndMove(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch`); - const file = await this.api.waitForTextContent(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch a.label-name`); - await this.api.waitAndClick(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch .action-label.icon.action-remove`); - await this.api.waitForTextContent(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch a.label-name`, void 0, result => result !== file); + await this.code.waitAndMove(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch`); + const file = await this.code.waitForTextContent(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch a.label-name`); + await this.code.waitAndClick(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch .action-label.icon.action-remove`); + await this.code.waitForTextContent(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch a.label-name`, void 0, result => result !== file); } async expandReplace(): Promise { - await this.api.waitAndClick(`${VIEWLET} .search-widget .monaco-button.toggle-replace-button.collapse`); + await this.code.waitAndClick(`${VIEWLET} .search-widget .monaco-button.toggle-replace-button.collapse`); } async setReplaceText(text: string): Promise { - await this.api.waitAndClick(`${VIEWLET} .search-widget .replace-container .monaco-inputbox input[title="Replace"]`); - await this.api.waitForElement(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`); - await this.api.setValue(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`, text); + await this.code.waitAndClick(`${VIEWLET} .search-widget .replace-container .monaco-inputbox input[title="Replace"]`); + await this.code.waitForElement(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`); + await this.code.setValue(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`, text); } async replaceFileMatch(index: number): Promise { - await this.api.waitAndMove(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch`); - await this.api.waitAndClick(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch .action-label.icon.action-replace-all`); + await this.code.waitAndMove(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch`); + await this.code.waitAndClick(`${VIEWLET} .results .monaco-tree-rows>:nth-child(${index}) .filematch .action-label.icon.action-replace-all`); } async waitForResultText(text: string): Promise { - await this.api.waitForTextContent(`${VIEWLET} .messages[aria-hidden="false"] .message>p`, text); + await this.code.waitForTextContent(`${VIEWLET} .messages[aria-hidden="false"] .message>p`, text); } } diff --git a/test/smoke/src/areas/statusbar/statusbar.test.ts b/test/smoke/src/areas/statusbar/statusbar.test.ts index 3c748bde9bb..b5c119c0539 100644 --- a/test/smoke/src/areas/statusbar/statusbar.test.ts +++ b/test/smoke/src/areas/statusbar/statusbar.test.ts @@ -63,7 +63,7 @@ export function setup() { } await app.workbench.statusbar.clickOn(StatusBarElement.FEEDBACK_ICON); - await app.api.waitForElement('.feedback-form'); + await app.code.waitForElement('.feedback-form'); }); it(`checks if 'Go to Line' works if called from the status bar`, async function () { diff --git a/test/smoke/src/areas/statusbar/statusbar.ts b/test/smoke/src/areas/statusbar/statusbar.ts index 20ab92c96e3..e4b8237f49b 100644 --- a/test/smoke/src/areas/statusbar/statusbar.ts +++ b/test/smoke/src/areas/statusbar/statusbar.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; +import { Code } from '../../vscode/code'; export enum StatusBarElement { BRANCH_STATUS = 0, @@ -23,23 +23,22 @@ export class StatusBar { private readonly leftSelector = '.statusbar-item.left'; private readonly rightSelector = '.statusbar-item.right'; - constructor(private api: API) { - } + constructor(private code: Code) { } async waitForStatusbarElement(element: StatusBarElement): Promise { - await this.api.waitForElement(this.getSelector(element)); + await this.code.waitForElement(this.getSelector(element)); } async clickOn(element: StatusBarElement): Promise { - await this.api.waitAndClick(this.getSelector(element)); + await this.code.waitAndClick(this.getSelector(element)); } async waitForEOL(eol: string): Promise { - return this.api.waitForTextContent(this.getSelector(StatusBarElement.EOL_STATUS), eol); + return this.code.waitForTextContent(this.getSelector(StatusBarElement.EOL_STATUS), eol); } async getStatusbarTextByTitle(title: string): Promise { - return await this.api.waitForTextContent(`${this.mainSelector} span[title="smoke test"]`); + return await this.code.waitForTextContent(`${this.mainSelector} span[title="smoke test"]`); } private getSelector(element: StatusBarElement): string { diff --git a/test/smoke/src/areas/workbench/viewlet.ts b/test/smoke/src/areas/workbench/viewlet.ts index c76ddb6e41c..82978b7770d 100644 --- a/test/smoke/src/areas/workbench/viewlet.ts +++ b/test/smoke/src/areas/workbench/viewlet.ts @@ -3,15 +3,17 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { API } from '../../api'; +'use strict'; + +import { Code } from '../../vscode/code'; export abstract class Viewlet { - constructor(protected api: API) { + constructor(protected code: Code) { // noop } async getTitle(): Promise { - return this.api.waitForTextContent('.monaco-workbench-container .part.sidebar > .title > .title-label > span'); + return this.code.waitForTextContent('.monaco-workbench-container .part.sidebar > .title > .title-label > span'); } } \ No newline at end of file diff --git a/test/smoke/src/areas/workbench/workbench.ts b/test/smoke/src/areas/workbench/workbench.ts index 645466acd3b..d81733bb58b 100644 --- a/test/smoke/src/areas/workbench/workbench.ts +++ b/test/smoke/src/areas/workbench/workbench.ts @@ -15,8 +15,8 @@ import { StatusBar } from '../statusbar/statusbar'; import { Problems } from '../problems/problems'; import { SettingsEditor } from '../preferences/settings'; import { KeybindingsEditor } from '../preferences/keybindings'; -import { API } from '../../api'; import { Editors } from '../editor/editors'; +import { Code } from '../../vscode/code'; export interface Commands { runCommand(command: string): Promise; @@ -38,20 +38,20 @@ export class Workbench implements Commands { readonly settingsEditor: SettingsEditor; readonly keybindingsEditor: KeybindingsEditor; - constructor(private api: API, private keybindings: any[], userDataPath: string) { - this.editors = new Editors(api, this); - this.quickopen = new QuickOpen(api, this, this.editors); - this.explorer = new Explorer(api, this.quickopen, this.editors); - this.activitybar = new ActivityBar(api); - this.search = new Search(api, this); - this.extensions = new Extensions(api, this); - this.editor = new Editor(api, this); - this.scm = new SCM(api, this); - this.debug = new Debug(api, this, this.editors, this.editor); - this.statusbar = new StatusBar(api); - this.problems = new Problems(api, this); - this.settingsEditor = new SettingsEditor(api, userDataPath, this, this.editors, this.editor); - this.keybindingsEditor = new KeybindingsEditor(api, this); + constructor(private code: Code, private keybindings: any[], userDataPath: string) { + this.editors = new Editors(code, this); + this.quickopen = new QuickOpen(code, this, this.editors); + this.explorer = new Explorer(code, this.quickopen, this.editors); + this.activitybar = new ActivityBar(code); + this.search = new Search(code, this); + this.extensions = new Extensions(code, this); + this.editor = new Editor(code, this); + this.scm = new SCM(code, this); + this.debug = new Debug(code, this, this.editors, this.editor); + this.statusbar = new StatusBar(code); + this.problems = new Problems(code, this); + this.settingsEditor = new SettingsEditor(code, userDataPath, this, this.editors, this.editor); + this.keybindingsEditor = new KeybindingsEditor(code, this); } /** @@ -65,7 +65,7 @@ export class Workbench implements Commands { return; } - return this.api.dispatchKeybinding(binding.key); + return this.code.dispatchKeybinding(binding.key); } } diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index a5e0110b796..d76a45c7d80 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -6,7 +6,7 @@ import * as path from 'path'; import * as cp from 'child_process'; import { tmpName } from 'tmp'; -import { IDriver, connect as connectDriver, IDisposable } from './driver'; +import { IDriver, connect as connectDriver, IDisposable, IElement } from './driver'; const repoPath = path.join(__dirname, '../../../..'); @@ -56,29 +56,13 @@ function getBuildOutPath(root: string): string { } } -export class Code { - - constructor( - private process: cp.ChildProcess, - private client: IDisposable, - readonly driver: IDriver - ) { - - } - - dispose(): void { - this.client.dispose(); - this.process.kill(); - } -} - -export async function connect(child: cp.ChildProcess, outPath: string, handlePath: string): Promise { +async function connect(child: cp.ChildProcess, outPath: string, handlePath: string, verbose: boolean): Promise { let errCount = 0; while (true) { try { const { client, driver } = await connectDriver(outPath, handlePath); - return new Code(child, client, driver); + return new Code(child, client, driver, verbose); } catch (err) { if (++errCount > 50) { child.kill(); @@ -142,5 +126,240 @@ export async function spawn(options: SpawnOptions): Promise { instances.add(child); child.once('exit', () => instances.delete(child)); - return connect(child, outPath, handlePath); + return connect(child, outPath, handlePath, options.verbose); +} + +export class Code { + + private _activeWindowId: number | undefined = undefined; + + constructor( + private process: cp.ChildProcess, + private client: IDisposable, + private driver: IDriver, + private verbose: boolean + ) { } + + async dispatchKeybinding(keybinding: string): Promise { + if (this.verbose) { + console.log('- dispatchKeybinding:', keybinding); + } + + const windowId = await this.getActiveWindowId(); + await this.driver.dispatchKeybinding(windowId, keybinding); + } + + async waitForTextContent(selector: string, textContent?: string, accept?: (result: string) => boolean): Promise { + if (this.verbose) { + console.log('- waitForTextContent:', selector); + } + + const windowId = await this.getActiveWindowId(); + accept = accept || (result => textContent !== void 0 ? textContent === result : !!result); + return await this.waitFor(() => this.driver.getElements(windowId, selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `getTextContent with selector ${selector}`); + } + + async waitAndClick(selector: string, xoffset?: number, yoffset?: number): Promise { + if (this.verbose) { + console.log('- waitAndClick:', selector); + } + + const windowId = await this.getActiveWindowId(); + + // TODO should waitForClick + await this.waitForElement(selector); + await this.driver.click(windowId, selector, xoffset, yoffset); + } + + async waitAndDoubleClick(selector: string): Promise { + if (this.verbose) { + console.log('- waitAndDoubleClick:', selector); + } + + const windowId = await this.getActiveWindowId(); + + // TODO should waitForDoubleClick + await this.waitForElement(selector); + await this.driver.doubleClick(windowId, selector); + } + + async waitAndMove(selector: string): Promise { + if (this.verbose) { + console.log('- waitAndMove:', selector); + } + + const windowId = await this.getActiveWindowId(); + // TODO should waitForMove + await this.waitForElement(selector); + await this.driver.move(windowId, selector); + } + + // TODO should be waitForSetValue + async setValue(selector: string, text: string): Promise { + if (this.verbose) { + console.log('- setValue:', selector); + } + + const windowId = await this.getActiveWindowId(); + // TODO should waitForSetValue + await this.waitForElement(selector); + await this.driver.setValue(windowId, selector, text); + } + + // TODO merge with getElements + async doesElementExist(selector: string): Promise { + if (this.verbose) { + console.log('- doesElementExist:', selector); + } + + const windowId = await this.getActiveWindowId(); + const elements = await this.driver.getElements(windowId, selector); + return elements.length > 0; + } + + // TODO merge with getElements + async getElementCount(selector: string): Promise { + if (this.verbose) { + console.log('- getElementCount:', selector); + } + + const windowId = await this.getActiveWindowId(); + const elements = await this.driver.getElements(windowId, selector); + return elements.length; + } + + async waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { + if (this.verbose) { + console.log('- waitForElements:', selector); + } + + const windowId = await this.getActiveWindowId(); + return await this.waitFor(() => this.driver.getElements(windowId, selector, recursive), accept, `elements with selector ${selector}`); + } + + async waitForElement(selector: string, accept: (result: IElement | undefined) => boolean = result => !!result): Promise { + if (this.verbose) { + console.log('- waitForElement:', selector); + } + + const windowId = await this.getActiveWindowId(); + return await this.waitFor(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `element with selector ${selector}`); + } + + async waitForActiveElement(selector: string): Promise { + if (this.verbose) { + console.log('- waitForActiveElement:', selector); + } + + const windowId = await this.getActiveWindowId(); + return await this.waitFor(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); + } + + // TODO make into waitForTitle + async getTitle(): Promise { + if (this.verbose) { + console.log('- getTitle'); + } + + const windowId = await this.getActiveWindowId(); + return await this.driver.getTitle(windowId); + } + + // TODO make into waitForTypeInEditor + async typeInEditor(selector: string, text: string): Promise { + if (this.verbose) { + console.log('- typeInEditor', selector, text); + } + + const windowId = await this.getActiveWindowId(); + await this.driver.typeInEditor(windowId, selector, text); + } + + // waitFor calls should not take more than 200 * 100 = 20 seconds to complete, excluding + // the time it takes for the actual retry call to complete + private readonly retryCount: number = 200; + private readonly retryDuration = 100; // in milliseconds + + // TODO: clean function interface + private async waitFor(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; + private async waitFor(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { + let trial = 1; + retryCount = typeof retryCount === 'number' ? retryCount : this.retryCount; + + while (true) { + if (trial > retryCount) { + throw new Error(`${timeoutMessage}: Timed out after ${(retryCount * this.retryDuration) / 1000} seconds.`); + } + + let result; + try { + result = await func(); + } catch (e) { + // console.warn(e); + + if (/Method not implemented/.test(e.message)) { + throw e; + } + } + + if (accept(result)) { + return result; + } + + await new Promise(resolve => setTimeout(resolve, this.retryDuration)); + trial++; + } + } + + // TODO: replace with waitForWindows + async getWindowIds(): Promise { + return await this.driver.getWindowIds(); + } + + private async getActiveWindowId(): Promise { + if (typeof this._activeWindowId !== 'number') { + const windows = await this.driver.getWindowIds(); + this._activeWindowId = windows[0]; + } + + return this._activeWindowId; + } + + dispose(): void { + this.client.dispose(); + this.process.kill(); + } +} + +export function findElement(element: IElement, fn: (element: IElement) => boolean): IElement | null { + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + return element; + } + + queue.push(...element.children); + } + + return null; +} + +export function findElements(element: IElement, fn: (element: IElement) => boolean): IElement[] { + const result: IElement[] = []; + const queue = [element]; + + while (queue.length > 0) { + const element = queue.shift()!; + + if (fn(element)) { + result.push(element); + } + + queue.push(...element.children); + } + + return result; } \ No newline at end of file From da79ed6bb2fc70d038a7df0d95fca29dc74d93ff Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 16:21:33 +0200 Subject: [PATCH 0605/1070] allow to return results async and sync, #47475 --- src/vs/vscode.proposed.d.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index e20750ac7da..392b4cf9ab9 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -266,7 +266,7 @@ declare module 'vscode' { */ // todo@remote // ! throw error (ENOENT) when the file doesn't exist - stat(uri: Uri, token: CancellationToken): Thenable; + stat(uri: Uri, token: CancellationToken): FileStat2 | Thenable; /** * Retrieve the meta data of all entries of a [directory](#FileType2.Directory) @@ -275,7 +275,7 @@ declare module 'vscode' { * @param token A cancellation token. * @return A thenable that resolves to an array of tuples of file names and files stats. */ - readDirectory(uri: Uri, token: CancellationToken): Thenable<[string, FileStat2][]>; + readDirectory(uri: Uri, token: CancellationToken): [string, FileStat2][] | Thenable<[string, FileStat2][]>; /** * Read the entire contents of a file. @@ -284,7 +284,7 @@ declare module 'vscode' { * @param token A cancellation token. * @return A thenable that resolves to an array of bytes. */ - readFile(uri: Uri, token: CancellationToken): Thenable; + readFile(uri: Uri, token: CancellationToken): Uint8Array | Thenable; /** * Write data to a file, replacing its entire contents. @@ -293,7 +293,7 @@ declare module 'vscode' { * @param content The new content of the file. * @param token A cancellation token. */ - writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): Thenable; + writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): void | Thenable; /** * Rename a file or folder. @@ -302,18 +302,18 @@ declare module 'vscode' { * @param newUri The target location * @param token A cancellation token. */ - rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; + rename(oldUri: Uri, newUri: Uri, token: CancellationToken): FileStat2 | Thenable; // todo@remote // helps with performance bigly - // copy?(from: Uri, to: Uri): Thenable; + // copy?(from: Uri, to: Uri): FileStat2 | Thenable; // todo@remote // ? useTrash, expose trash - delete(uri: Uri, token: CancellationToken): Thenable; + delete(uri: Uri, token: CancellationToken): void | Thenable; // todo@remote - create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): Thenable; + create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): FileStat2 | Thenable; } export namespace workspace { From 68e36ecb872150a5020e622b7f2499953069527f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 16:48:42 +0200 Subject: [PATCH 0606/1070] more wait calls --- .../src/areas/activitybar/activityBar.ts | 2 +- test/smoke/src/areas/explorer/explorer.ts | 4 +-- .../src/areas/extensions/extensions.test.ts | 8 ++---- test/smoke/src/areas/extensions/extensions.ts | 1 - .../src/areas/multiroot/multiroot.test.ts | 4 +-- .../src/areas/preferences/preferences.test.ts | 6 ++--- test/smoke/src/areas/statusbar/statusbar.ts | 4 +-- .../areas/workbench/data-migration.test.ts | 27 +++++-------------- .../src/areas/workbench/localization.test.ts | 17 ++++-------- test/smoke/src/areas/workbench/viewlet.ts | 8 +++--- test/smoke/src/main.ts | 19 +++++-------- test/smoke/src/vscode/code.ts | 9 +++---- 12 files changed, 35 insertions(+), 74 deletions(-) diff --git a/test/smoke/src/areas/activitybar/activityBar.ts b/test/smoke/src/areas/activitybar/activityBar.ts index 22d43a8f8c9..a2acb1ac44d 100644 --- a/test/smoke/src/areas/activitybar/activityBar.ts +++ b/test/smoke/src/areas/activitybar/activityBar.ts @@ -14,7 +14,7 @@ export class ActivityBar { constructor(private code: Code) { } - async getActivityBar(position: ActivityBarPosition): Promise { + async waitForActivityBar(position: ActivityBarPosition): Promise { let positionClass: string; if (position === ActivityBarPosition.LEFT) { diff --git a/test/smoke/src/areas/explorer/explorer.ts b/test/smoke/src/areas/explorer/explorer.ts index 15dc32668ee..ef9231393ef 100644 --- a/test/smoke/src/areas/explorer/explorer.ts +++ b/test/smoke/src/areas/explorer/explorer.ts @@ -21,8 +21,8 @@ export class Explorer extends Viewlet { return this.commands.runCommand('workbench.view.explorer'); } - getOpenEditorsViewTitle(): Promise { - return this.code.waitForTextContent(Explorer.OPEN_EDITORS_VIEW); + async waitForOpenEditorsViewTitle(fn: (title: string) => boolean): Promise { + await this.code.waitForTextContent(Explorer.OPEN_EDITORS_VIEW, undefined, fn); } async openFile(fileName: string): Promise { diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index 2a5b2f89fab..ca3cbc1774f 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as assert from 'assert'; import { Application, Quality } from '../../application'; export function setup() { @@ -19,15 +18,12 @@ export function setup() { const extensionName = 'vscode-smoketest-check'; await app.workbench.extensions.openExtensionsViewlet(); - const installed = await app.workbench.extensions.installExtension(extensionName); - assert.ok(installed); + await app.workbench.extensions.installExtension(extensionName); await app.reload(); await app.workbench.extensions.waitForExtensionsViewlet(); await app.workbench.runCommand('Smoke Test Check'); - - const statusbarText = await app.workbench.statusbar.getStatusbarTextByTitle('smoke test'); - assert.equal(statusbarText, 'VS Code Smoke Test Check'); + await app.workbench.statusbar.waitForStatusbarText('smoke test', 'VS Code Smoke Test Check'); }); }); } \ No newline at end of file diff --git a/test/smoke/src/areas/extensions/extensions.ts b/test/smoke/src/areas/extensions/extensions.ts index 386e521e5f8..017c39d7420 100644 --- a/test/smoke/src/areas/extensions/extensions.ts +++ b/test/smoke/src/areas/extensions/extensions.ts @@ -32,7 +32,6 @@ export class Extensions extends Viewlet { async installExtension(name: string): Promise { await this.searchForExtension(name); - await this.code.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.install`); await this.code.waitForElement(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${name}"] .extension li[class='action-item'] .extension-action.reload`); } diff --git a/test/smoke/src/areas/multiroot/multiroot.test.ts b/test/smoke/src/areas/multiroot/multiroot.test.ts index 5b479677556..86449f54858 100644 --- a/test/smoke/src/areas/multiroot/multiroot.test.ts +++ b/test/smoke/src/areas/multiroot/multiroot.test.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as assert from 'assert'; import { Application } from '../../application'; export function setup() { @@ -27,8 +26,7 @@ export function setup() { it('shows workspace name in title', async function () { const app = this.app as Application; - const title = await app.code.getTitle(); - assert.ok(title.indexOf('smoketest (Workspace)') >= 0); + await app.code.waitForTitle(title => /smoketest \(Workspace\)/i.test(title)); }); }); } \ No newline at end of file diff --git a/test/smoke/src/areas/preferences/preferences.test.ts b/test/smoke/src/areas/preferences/preferences.test.ts index ecca6a44167..1b2bbbec548 100644 --- a/test/smoke/src/areas/preferences/preferences.test.ts +++ b/test/smoke/src/areas/preferences/preferences.test.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as assert from 'assert'; - import { Application } from '../../application'; import { ActivityBarPosition } from '../activitybar/activityBar'; @@ -23,12 +21,12 @@ export function setup() { it(`changes 'workbench.action.toggleSidebarPosition' command key binding and verifies it`, async function () { const app = this.app as Application; - assert.ok(await app.workbench.activitybar.getActivityBar(ActivityBarPosition.LEFT), 'Activity bar should be positioned on the left.'); + await app.workbench.activitybar.waitForActivityBar(ActivityBarPosition.LEFT); await app.workbench.keybindingsEditor.updateKeybinding('workbench.action.toggleSidebarPosition', 'ctrl+u', 'Control+U'); await app.code.dispatchKeybinding('ctrl+u'); - assert.ok(await app.workbench.activitybar.getActivityBar(ActivityBarPosition.RIGHT), 'Activity bar was not moved to right after toggling its position.'); + await app.workbench.activitybar.waitForActivityBar(ActivityBarPosition.RIGHT); }); after(async function () { diff --git a/test/smoke/src/areas/statusbar/statusbar.ts b/test/smoke/src/areas/statusbar/statusbar.ts index e4b8237f49b..dd3392a5a9c 100644 --- a/test/smoke/src/areas/statusbar/statusbar.ts +++ b/test/smoke/src/areas/statusbar/statusbar.ts @@ -37,8 +37,8 @@ export class StatusBar { return this.code.waitForTextContent(this.getSelector(StatusBarElement.EOL_STATUS), eol); } - async getStatusbarTextByTitle(title: string): Promise { - return await this.code.waitForTextContent(`${this.mainSelector} span[title="smoke test"]`); + async waitForStatusbarText(title: string, text: string): Promise { + await this.code.waitForTextContent(`${this.mainSelector} span[title="${title}"]`, text); } private getSelector(element: StatusBarElement): string { diff --git a/test/smoke/src/areas/workbench/data-migration.test.ts b/test/smoke/src/areas/workbench/data-migration.test.ts index 510cea17736..8fa282fd061 100644 --- a/test/smoke/src/areas/workbench/data-migration.test.ts +++ b/test/smoke/src/areas/workbench/data-migration.test.ts @@ -3,13 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as assert from 'assert'; - import { Application, Quality } from '../../application'; import * as rimraf from 'rimraf'; export interface ICreateAppFn { - (quality: Quality): Application | null; + (quality: Quality): Application; } export function setup(userDataDir: string, createApp: ICreateAppFn) { @@ -40,14 +38,9 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { // Checking latest version for the restored state const app = createApp(Quality.Insiders); - if (!app) { - return assert(false); - } - await app.start(false); - assert.ok(await app.workbench.editors.waitForActiveTab('Untitled-1', true), `Untitled-1 tab is not present after migration.`); - + await app.workbench.editors.waitForActiveTab('Untitled-1', true); await app.workbench.editor.waitForEditorContents('Untitled-1', c => c.indexOf(textToType) > -1); await app.stop(); @@ -76,13 +69,9 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { // Checking latest version for the restored state const app = createApp(Quality.Insiders); - if (!app) { - return assert(false); - } - await app.start(false); - assert.ok(await app.workbench.editors.waitForActiveTab(fileName), `dirty file tab is not present after migration.`); + await app.workbench.editors.waitForActiveTab(fileName); await app.workbench.editor.waitForEditorContents(fileName, c => c.indexOf(textPart) > -1); await app.stop(); @@ -109,15 +98,11 @@ export function setup(userDataDir: string, createApp: ICreateAppFn) { const app = createApp(Quality.Insiders); - if (!app) { - return assert(false); - } - await app.start(false); - assert.ok(await app.workbench.editors.waitForTab(fileName1), `${fileName1} tab was not restored after migration.`); - assert.ok(await app.workbench.editors.waitForTab(fileName2), `${fileName2} tab was not restored after migration.`); - assert.ok(await app.workbench.editors.waitForTab(fileName3), `${fileName3} tab was not restored after migration.`); + await app.workbench.editors.waitForTab(fileName1); + await app.workbench.editors.waitForTab(fileName2); + await app.workbench.editors.waitForTab(fileName3); await app.stop(); }); diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index e3cc585758e..ea7a25bf8cf 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as assert from 'assert'; - import { Application, Quality } from '../../application'; export function setup() { @@ -27,24 +25,19 @@ export function setup() { return; } - let text = await app.workbench.explorer.getOpenEditorsViewTitle(); - assert(/geöffnete editoren/i.test(text)); + await app.workbench.explorer.waitForOpenEditorsViewTitle(title => /geöffnete editoren/i.test(title)); await app.workbench.search.openSearchViewlet(); - text = await app.workbench.search.getTitle(); - assert(/suchen/i.test(text)); + await app.workbench.search.waitForTitle(title => /suchen/i.test(title)); await app.workbench.scm.openSCMViewlet(); - text = await app.workbench.scm.getTitle(); - assert(/quellcodeverwaltung/i.test(text)); + await app.workbench.scm.waitForTitle(title => /quellcodeverwaltung/i.test(title)); await app.workbench.debug.openDebugViewlet(); - text = await app.workbench.debug.getTitle(); - assert(/debuggen/i.test(text)); + await app.workbench.debug.waitForTitle(title => /debuggen/i.test(title)); await app.workbench.extensions.openExtensionsViewlet(); - text = await app.workbench.extensions.getTitle(); - assert(/erweiterungen/i.test(text)); + await app.workbench.extensions.waitForTitle(title => /erweiterungen/i.test(title)); }); }); } \ No newline at end of file diff --git a/test/smoke/src/areas/workbench/viewlet.ts b/test/smoke/src/areas/workbench/viewlet.ts index 82978b7770d..2293752b705 100644 --- a/test/smoke/src/areas/workbench/viewlet.ts +++ b/test/smoke/src/areas/workbench/viewlet.ts @@ -9,11 +9,9 @@ import { Code } from '../../vscode/code'; export abstract class Viewlet { - constructor(protected code: Code) { - // noop - } + constructor(protected code: Code) { } - async getTitle(): Promise { - return this.code.waitForTextContent('.monaco-workbench-container .part.sidebar > .title > .title-label > span'); + async waitForTitle(fn: (title: string) => boolean): Promise { + await this.code.waitForTextContent('.monaco-workbench-container .part.sidebar > .title > .title-label > span', undefined, fn); } } \ No newline at end of file diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index a534d232691..63149f3e522 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -100,16 +100,16 @@ function getBuildElectronPath(root: string): string { } let testCodePath = opts.build; -let stableCodePath = opts['stable-build']; +// let stableCodePath = opts['stable-build']; let electronPath: string; -let stablePath: string; +// let stablePath: string; if (testCodePath) { electronPath = getBuildElectronPath(testCodePath); - if (stableCodePath) { - stablePath = getBuildElectronPath(stableCodePath); - } + // if (stableCodePath) { + // stablePath = getBuildElectronPath(stableCodePath); + // } } else { testCodePath = getDevElectronPath(); electronPath = testCodePath; @@ -228,13 +228,7 @@ async function setup(): Promise { console.log('*** Smoketest setup done!\n'); } -function createApp(quality: Quality): Application | null { - const path = quality === Quality.Stable ? stablePath : electronPath; - - if (!path) { - return null; - } - +function createApp(quality: Quality): Application { return new Application({ quality, codePath: opts.build, @@ -246,6 +240,7 @@ function createApp(quality: Quality): Application | null { verbose: opts.verbose }); } + before(async function () { // allow two minutes for setup this.timeout(2 * 60 * 1000); diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index d76a45c7d80..2821a060e7b 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -246,23 +246,22 @@ export class Code { return await this.waitFor(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `element with selector ${selector}`); } - async waitForActiveElement(selector: string): Promise { + async waitForActiveElement(selector: string): Promise { if (this.verbose) { console.log('- waitForActiveElement:', selector); } const windowId = await this.getActiveWindowId(); - return await this.waitFor(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); + await this.waitFor(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); } - // TODO make into waitForTitle - async getTitle(): Promise { + async waitForTitle(fn: (title: string) => boolean): Promise { if (this.verbose) { console.log('- getTitle'); } const windowId = await this.getActiveWindowId(); - return await this.driver.getTitle(windowId); + await this.waitFor(() => this.driver.getTitle(windowId), fn, 'wait for title: ${}'); } // TODO make into waitForTypeInEditor From b21e8d48fbe8367a45222f369154bb1da572d2d1 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 11 Apr 2018 16:55:18 +0200 Subject: [PATCH 0607/1070] :lipstick:, #47475 --- src/vs/platform/files/common/files.ts | 9 ++------- .../api/electron-browser/mainThreadFileSystem.ts | 2 +- .../services/files/electron-browser/remoteFileService.ts | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 5782c248f64..c2902838625 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -164,21 +164,16 @@ export interface IStat { } export interface IFileSystemProvider { - - onDidChange?: Event; - - // more... - // + onDidChange: Event; stat(resource: URI): TPromise; readFile(resource: URI): TPromise; writeFile(resource: URI, content: Uint8Array): TPromise; - move(from: URI, to: URI): TPromise; + rename(from: URI, to: URI): TPromise; mkdir(resource: URI): TPromise; readdir(resource: URI): TPromise<[string, IStat][]>; delete(resource: URI): TPromise; } - export enum FileOperation { CREATE, DELETE, diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 7e63bbd33d5..f9bf18fa750 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -110,7 +110,7 @@ class RemoteFileSystemProvider implements IFileSystemProvider { delete(resource: URI): TPromise { return this._proxy.$delete(this._handle, resource); } - move(resource: URI, target: URI): TPromise { + rename(resource: URI, target: URI): TPromise { return this._proxy.$move(this._handle, resource, target); } mkdir(resource: URI): TPromise { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 27316a8c33e..bfe2289123d 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -410,7 +410,7 @@ export class RemoteFileService extends FileService { : TPromise.as(null); return prepare.then(() => this._withProvider(source)).then(provider => { - return provider.move(source, target).then(stat => { + return provider.rename(source, target).then(stat => { return toIFileStat(provider, [target, stat]); }).then(fileStat => { this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.MOVE, fileStat)); From 3df5480a165eac0413921149f361ceda07c2f859 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 17:25:37 +0200 Subject: [PATCH 0608/1070] green tests, more cleanup --- test/smoke/src/areas/debug/debug.ts | 2 +- test/smoke/src/areas/editor/editor.ts | 5 +- test/smoke/src/areas/extensions/extensions.ts | 2 +- test/smoke/src/areas/git/scm.ts | 2 +- .../src/areas/preferences/keybindings.ts | 2 +- test/smoke/src/areas/preferences/settings.ts | 3 +- test/smoke/src/areas/problems/problems.ts | 20 +-- test/smoke/src/areas/quickopen/quickopen.ts | 4 +- test/smoke/src/areas/search/search.ts | 18 +-- .../areas/workbench/data-migration.test.ts | 121 +++++++-------- test/smoke/src/vscode/code.ts | 138 +++++------------- 11 files changed, 121 insertions(+), 196 deletions(-) diff --git a/test/smoke/src/areas/debug/debug.ts b/test/smoke/src/areas/debug/debug.ts index 8ee59bb8675..bf92dd930ff 100644 --- a/test/smoke/src/areas/debug/debug.ts +++ b/test/smoke/src/areas/debug/debug.ts @@ -122,7 +122,7 @@ export class Debug extends Viewlet { async waitForReplCommand(text: string, accept: (result: string) => boolean): Promise { await this.commands.runCommand('Debug: Focus Debug Console'); await this.code.waitForActiveElement(REPL_FOCUSED); - await this.code.setValue(REPL_FOCUSED, text); + await this.code.waitForSetValue(REPL_FOCUSED, text); // Wait for the keys to be picked up by the editor model such that repl evalutes what just got typed await this.editor.waitForEditorContents('debug:input', s => s.indexOf(text) >= 0); diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index 8bc52eaeaf5..41a04d85412 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -33,7 +33,7 @@ export class Editor { await this.commands.runCommand('Rename Symbol'); await this.code.waitForActiveElement(RENAME_INPUT); - await this.code.setValue(RENAME_INPUT, to); + await this.code.waitForSetValue(RENAME_INPUT, to); await this.code.dispatchKeybinding('enter'); } @@ -95,14 +95,13 @@ export class Editor { const textarea = `${editor} textarea`; await this.code.waitForActiveElement(textarea); - await this.code.typeInEditor(textarea, text); + await this.code.waitForTypeInEditor(textarea, text); await this.waitForEditorContents(filename, c => c.indexOf(text) > -1, selectorPrefix); } async waitForEditorContents(filename: string, accept: (contents: string) => boolean, selectorPrefix = ''): Promise { const selector = [selectorPrefix || '', `${EDITOR(filename)} .view-lines`].join(' '); - return this.code.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' '))); } diff --git a/test/smoke/src/areas/extensions/extensions.ts b/test/smoke/src/areas/extensions/extensions.ts index 017c39d7420..64bfb07dd3d 100644 --- a/test/smoke/src/areas/extensions/extensions.ts +++ b/test/smoke/src/areas/extensions/extensions.ts @@ -27,7 +27,7 @@ export class Extensions extends Viewlet { async searchForExtension(name: string): Promise { await this.code.waitAndClick(SEARCH_BOX); await this.code.waitForActiveElement(SEARCH_BOX); - await this.code.setValue(SEARCH_BOX, name); + await this.code.waitForSetValue(SEARCH_BOX, name); } async installExtension(name: string): Promise { diff --git a/test/smoke/src/areas/git/scm.ts b/test/smoke/src/areas/git/scm.ts index 4543c6fc689..9c2a6f3e871 100644 --- a/test/smoke/src/areas/git/scm.ts +++ b/test/smoke/src/areas/git/scm.ts @@ -78,7 +78,7 @@ export class SCM extends Viewlet { async commit(message: string): Promise { await this.code.waitAndClick(SCM_INPUT); await this.code.waitForActiveElement(SCM_INPUT); - await this.code.setValue(SCM_INPUT, message); + await this.code.waitForSetValue(SCM_INPUT, message); await this.code.waitAndClick(COMMIT_COMMAND); } } \ No newline at end of file diff --git a/test/smoke/src/areas/preferences/keybindings.ts b/test/smoke/src/areas/preferences/keybindings.ts index 98865e492c4..807a971891e 100644 --- a/test/smoke/src/areas/preferences/keybindings.ts +++ b/test/smoke/src/areas/preferences/keybindings.ts @@ -15,7 +15,7 @@ export class KeybindingsEditor { async updateKeybinding(command: string, keybinding: string, ariaLabel: string): Promise { await this.commands.runCommand('workbench.action.openGlobalKeybindings'); await this.code.waitForActiveElement(SEARCH_INPUT); - await this.code.setValue(SEARCH_INPUT, command); + await this.code.waitForSetValue(SEARCH_INPUT, command); await this.code.waitAndClick('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item'); await this.code.waitForElement('div[aria-label="Keybindings"] .monaco-list-row.keybinding-item.focused.selected'); diff --git a/test/smoke/src/areas/preferences/settings.ts b/test/smoke/src/areas/preferences/settings.ts index 2c64ae89b12..3ac98059629 100644 --- a/test/smoke/src/areas/preferences/settings.ts +++ b/test/smoke/src/areas/preferences/settings.ts @@ -39,6 +39,7 @@ export class SettingsEditor { const settingsPath = path.join(this.userDataPath, 'User', 'settings.json'); await new Promise((c, e) => fs.writeFile(settingsPath, '{}', 'utf8', err => err ? e(err) : c())); - await this.editor.waitForEditorContents('settings.json', c => c.length === 0, '.editable-preferences-editor-container'); + await this.commands.runCommand('workbench.action.openGlobalSettings'); + await this.editor.waitForEditorContents('settings.json', c => c === '{}', '.editable-preferences-editor-container'); } } \ No newline at end of file diff --git a/test/smoke/src/areas/problems/problems.ts b/test/smoke/src/areas/problems/problems.ts index b5c671a9e70..0b82fa6914e 100644 --- a/test/smoke/src/areas/problems/problems.ts +++ b/test/smoke/src/areas/problems/problems.ts @@ -15,26 +15,16 @@ export class Problems { static PROBLEMS_VIEW_SELECTOR = '.panel.markers-panel'; - constructor(private code: Code, private commands: Commands) { - // noop - } + constructor(private code: Code, private commands: Commands) { } public async showProblemsView(): Promise { - if (!await this.isVisible()) { - await this.commands.runCommand('workbench.actions.view.problems'); - await this.waitForProblemsView(); - } + await this.commands.runCommand('workbench.actions.view.problems'); + await this.waitForProblemsView(); } public async hideProblemsView(): Promise { - if (await this.isVisible()) { - await this.commands.runCommand('workbench.actions.view.problems'); - await this.code.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR, el => !el); - } - } - - isVisible(): Promise { - return this.code.doesElementExist(Problems.PROBLEMS_VIEW_SELECTOR); + await this.commands.runCommand('workbench.actions.view.problems'); + await this.code.waitForElement(Problems.PROBLEMS_VIEW_SELECTOR, el => !el); } public async waitForProblemsView(): Promise { diff --git a/test/smoke/src/areas/quickopen/quickopen.ts b/test/smoke/src/areas/quickopen/quickopen.ts index c580efdf69d..35cc55464ff 100644 --- a/test/smoke/src/areas/quickopen/quickopen.ts +++ b/test/smoke/src/areas/quickopen/quickopen.ts @@ -23,7 +23,7 @@ export class QuickOpen { await this.waitForQuickOpenOpened(); if (value) { - await this.code.setValue(QuickOpen.QUICK_OPEN_INPUT, value); + await this.code.waitForSetValue(QuickOpen.QUICK_OPEN_INPUT, value); } } @@ -50,7 +50,7 @@ export class QuickOpen { } async submit(text: string): Promise { - await this.code.setValue(QuickOpen.QUICK_OPEN_INPUT, text); + await this.code.waitForSetValue(QuickOpen.QUICK_OPEN_INPUT, text); await this.code.dispatchKeybinding('enter'); await this.waitForQuickOpenClosed(); } diff --git a/test/smoke/src/areas/search/search.ts b/test/smoke/src/areas/search/search.ts index 8c3514ae1f3..632707e1bf9 100644 --- a/test/smoke/src/areas/search/search.ts +++ b/test/smoke/src/areas/search/search.ts @@ -25,7 +25,7 @@ export class Search extends Viewlet { async searchFor(text: string): Promise { await this.code.waitAndClick(INPUT); await this.code.waitForActiveElement(INPUT); - await this.code.setValue(INPUT, text); + await this.code.waitForSetValue(INPUT, text); await this.submitSearch(); } @@ -40,23 +40,15 @@ export class Search extends Viewlet { async setFilesToIncludeText(text: string): Promise { await this.code.waitAndClick(INCLUDE_INPUT); await this.code.waitForActiveElement(INCLUDE_INPUT); - await this.code.setValue(INCLUDE_INPUT, text || ''); + await this.code.waitForSetValue(INCLUDE_INPUT, text || ''); } async showQueryDetails(): Promise { - if (!await this.areDetailsVisible()) { - await this.code.waitAndClick(`${VIEWLET} .query-details .more`); - } + await this.code.waitAndClick(`${VIEWLET} .query-details .more`); } async hideQueryDetails(): Promise { - if (await this.areDetailsVisible()) { - await this.code.waitAndClick(`${VIEWLET} .query-details.more .more`); - } - } - - areDetailsVisible(): Promise { - return this.code.doesElementExist(`${VIEWLET} .query-details.more`); + await this.code.waitAndClick(`${VIEWLET} .query-details.more .more`); } async removeFileMatch(index: number): Promise { @@ -73,7 +65,7 @@ export class Search extends Viewlet { async setReplaceText(text: string): Promise { await this.code.waitAndClick(`${VIEWLET} .search-widget .replace-container .monaco-inputbox input[title="Replace"]`); await this.code.waitForElement(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`); - await this.code.setValue(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`, text); + await this.code.waitForSetValue(`${VIEWLET} .search-widget .replace-container .monaco-inputbox.synthetic-focus input[title="Replace"]`, text); } async replaceFileMatch(index: number): Promise { diff --git a/test/smoke/src/areas/workbench/data-migration.test.ts b/test/smoke/src/areas/workbench/data-migration.test.ts index 8fa282fd061..f4084ca624b 100644 --- a/test/smoke/src/areas/workbench/data-migration.test.ts +++ b/test/smoke/src/areas/workbench/data-migration.test.ts @@ -13,98 +13,99 @@ export interface ICreateAppFn { export function setup(userDataDir: string, createApp: ICreateAppFn) { describe('Data Migration', () => { + afterEach(async function () { await new Promise((c, e) => rimraf(userDataDir, { maxBusyTries: 10 }, err => err ? e(err) : c())); }); - it('checks if the Untitled file is restored migrating from stable to latest', async function () { - const stableApp = createApp(Quality.Stable); + // it('checks if the Untitled file is restored migrating from stable to latest', async function () { + // const stableApp = createApp(Quality.Stable); - if (!stableApp) { - this.skip(); - return; - } + // if (!stableApp) { + // this.skip(); + // return; + // } - await stableApp.start(); + // await stableApp.start(); - const textToType = 'Very dirty file'; + // const textToType = 'Very dirty file'; - await stableApp.workbench.editors.newUntitledFile(); - await stableApp.workbench.editor.waitForTypeInEditor('Untitled-1', textToType); + // await stableApp.workbench.editors.newUntitledFile(); + // await stableApp.workbench.editor.waitForTypeInEditor('Untitled-1', textToType); - await stableApp.stop(); - await new Promise(c => setTimeout(c, 500)); // wait until all resources are released (e.g. locked local storage) + // await stableApp.stop(); + // await new Promise(c => setTimeout(c, 500)); // wait until all resources are released (e.g. locked local storage) - // Checking latest version for the restored state - const app = createApp(Quality.Insiders); + // // Checking latest version for the restored state + // const app = createApp(Quality.Insiders); - await app.start(false); + // await app.start(false); - await app.workbench.editors.waitForActiveTab('Untitled-1', true); - await app.workbench.editor.waitForEditorContents('Untitled-1', c => c.indexOf(textToType) > -1); + // await app.workbench.editors.waitForActiveTab('Untitled-1', true); + // await app.workbench.editor.waitForEditorContents('Untitled-1', c => c.indexOf(textToType) > -1); - await app.stop(); - }); + // await app.stop(); + // }); - it('checks if the newly created dirty file is restored migrating from stable to latest', async function () { - const stableApp = createApp(Quality.Stable); + // it('checks if the newly created dirty file is restored migrating from stable to latest', async function () { + // const stableApp = createApp(Quality.Stable); - if (!stableApp) { - this.skip(); - return; - } + // if (!stableApp) { + // this.skip(); + // return; + // } - await stableApp.start(); + // await stableApp.start(); - const fileName = 'app.js'; - const textPart = 'This is going to be an unsaved file'; + // const fileName = 'app.js'; + // const textPart = 'This is going to be an unsaved file'; - await stableApp.workbench.quickopen.openFile(fileName); + // await stableApp.workbench.quickopen.openFile(fileName); - await stableApp.workbench.editor.waitForTypeInEditor(fileName, textPart); + // await stableApp.workbench.editor.waitForTypeInEditor(fileName, textPart); - await stableApp.stop(); - await new Promise(c => setTimeout(c, 500)); // wait until all resources are released (e.g. locked local storage) + // await stableApp.stop(); + // await new Promise(c => setTimeout(c, 500)); // wait until all resources are released (e.g. locked local storage) - // Checking latest version for the restored state - const app = createApp(Quality.Insiders); + // // Checking latest version for the restored state + // const app = createApp(Quality.Insiders); - await app.start(false); + // await app.start(false); - await app.workbench.editors.waitForActiveTab(fileName); - await app.workbench.editor.waitForEditorContents(fileName, c => c.indexOf(textPart) > -1); + // await app.workbench.editors.waitForActiveTab(fileName); + // await app.workbench.editor.waitForEditorContents(fileName, c => c.indexOf(textPart) > -1); - await app.stop(); - }); + // await app.stop(); + // }); - it('checks if opened tabs are restored migrating from stable to latest', async function () { - const stableApp = createApp(Quality.Stable); + // it('checks if opened tabs are restored migrating from stable to latest', async function () { + // const stableApp = createApp(Quality.Stable); - if (!stableApp) { - this.skip(); - return; - } + // if (!stableApp) { + // this.skip(); + // return; + // } - await stableApp.start(); + // await stableApp.start(); - const fileName1 = 'app.js', fileName2 = 'jsconfig.json', fileName3 = 'readme.md'; + // const fileName1 = 'app.js', fileName2 = 'jsconfig.json', fileName3 = 'readme.md'; - await stableApp.workbench.quickopen.openFile(fileName1); - await stableApp.workbench.runCommand('View: Keep Editor'); - await stableApp.workbench.quickopen.openFile(fileName2); - await stableApp.workbench.runCommand('View: Keep Editor'); - await stableApp.workbench.quickopen.openFile(fileName3); - await stableApp.stop(); + // await stableApp.workbench.quickopen.openFile(fileName1); + // await stableApp.workbench.runCommand('View: Keep Editor'); + // await stableApp.workbench.quickopen.openFile(fileName2); + // await stableApp.workbench.runCommand('View: Keep Editor'); + // await stableApp.workbench.quickopen.openFile(fileName3); + // await stableApp.stop(); - const app = createApp(Quality.Insiders); + // const app = createApp(Quality.Insiders); - await app.start(false); + // await app.start(false); - await app.workbench.editors.waitForTab(fileName1); - await app.workbench.editors.waitForTab(fileName2); - await app.workbench.editors.waitForTab(fileName3); + // await app.workbench.editors.waitForTab(fileName1); + // await app.workbench.editors.waitForTab(fileName2); + // await app.workbench.editors.waitForTab(fileName3); - await app.stop(); - }); + // await app.stop(); + // }); }); } \ No newline at end of file diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index 2821a060e7b..25638508589 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -132,146 +132,87 @@ export async function spawn(options: SpawnOptions): Promise { export class Code { private _activeWindowId: number | undefined = undefined; + private driver: IDriver; constructor( private process: cp.ChildProcess, private client: IDisposable, - private driver: IDriver, - private verbose: boolean - ) { } + driver: IDriver, + verbose: boolean + ) { + if (verbose) { + this.driver = new Proxy(driver, { + get(target, prop, receiver) { + if (typeof target[prop] !== 'function') { + return target[prop]; + } + + return function (...args) { + console.log('** ', prop, ...args.filter(a => typeof a === 'string')); + return target[prop].apply(this, args); + }; + } + }); + } else { + this.driver = driver; + } + } async dispatchKeybinding(keybinding: string): Promise { - if (this.verbose) { - console.log('- dispatchKeybinding:', keybinding); - } - const windowId = await this.getActiveWindowId(); await this.driver.dispatchKeybinding(windowId, keybinding); } async waitForTextContent(selector: string, textContent?: string, accept?: (result: string) => boolean): Promise { - if (this.verbose) { - console.log('- waitForTextContent:', selector); - } - const windowId = await this.getActiveWindowId(); accept = accept || (result => textContent !== void 0 ? textContent === result : !!result); - return await this.waitFor(() => this.driver.getElements(windowId, selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `getTextContent with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `getTextContent with selector ${selector}`); } async waitAndClick(selector: string, xoffset?: number, yoffset?: number): Promise { - if (this.verbose) { - console.log('- waitAndClick:', selector); - } - const windowId = await this.getActiveWindowId(); - - // TODO should waitForClick - await this.waitForElement(selector); - await this.driver.click(windowId, selector, xoffset, yoffset); + await this.poll(() => this.driver.click(windowId, selector, xoffset, yoffset), () => true); } async waitAndDoubleClick(selector: string): Promise { - if (this.verbose) { - console.log('- waitAndDoubleClick:', selector); - } - const windowId = await this.getActiveWindowId(); - - // TODO should waitForDoubleClick - await this.waitForElement(selector); - await this.driver.doubleClick(windowId, selector); + await this.poll(() => this.driver.doubleClick(windowId, selector), () => true); } async waitAndMove(selector: string): Promise { - if (this.verbose) { - console.log('- waitAndMove:', selector); - } - const windowId = await this.getActiveWindowId(); - // TODO should waitForMove - await this.waitForElement(selector); - await this.driver.move(windowId, selector); + await this.poll(() => this.driver.move(windowId, selector), () => true); } - // TODO should be waitForSetValue - async setValue(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- setValue:', selector); - } - + async waitForSetValue(selector: string, value: string): Promise { const windowId = await this.getActiveWindowId(); - // TODO should waitForSetValue - await this.waitForElement(selector); - await this.driver.setValue(windowId, selector, text); - } - - // TODO merge with getElements - async doesElementExist(selector: string): Promise { - if (this.verbose) { - console.log('- doesElementExist:', selector); - } - - const windowId = await this.getActiveWindowId(); - const elements = await this.driver.getElements(windowId, selector); - return elements.length > 0; - } - - // TODO merge with getElements - async getElementCount(selector: string): Promise { - if (this.verbose) { - console.log('- getElementCount:', selector); - } - - const windowId = await this.getActiveWindowId(); - const elements = await this.driver.getElements(windowId, selector); - return elements.length; + await this.poll(() => this.driver.setValue(windowId, selector, value), () => true); } async waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { - if (this.verbose) { - console.log('- waitForElements:', selector); - } - const windowId = await this.getActiveWindowId(); - return await this.waitFor(() => this.driver.getElements(windowId, selector, recursive), accept, `elements with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector, recursive), accept, `elements with selector ${selector}`); } async waitForElement(selector: string, accept: (result: IElement | undefined) => boolean = result => !!result): Promise { - if (this.verbose) { - console.log('- waitForElement:', selector); - } - const windowId = await this.getActiveWindowId(); - return await this.waitFor(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `element with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `element with selector ${selector}`); } async waitForActiveElement(selector: string): Promise { - if (this.verbose) { - console.log('- waitForActiveElement:', selector); - } - const windowId = await this.getActiveWindowId(); - await this.waitFor(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); + await this.poll(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); } async waitForTitle(fn: (title: string) => boolean): Promise { - if (this.verbose) { - console.log('- getTitle'); - } - const windowId = await this.getActiveWindowId(); - await this.waitFor(() => this.driver.getTitle(windowId), fn, 'wait for title: ${}'); + await this.poll(() => this.driver.getTitle(windowId), fn, 'wait for title: ${}'); } // TODO make into waitForTypeInEditor - async typeInEditor(selector: string, text: string): Promise { - if (this.verbose) { - console.log('- typeInEditor', selector, text); - } - + async waitForTypeInEditor(selector: string, text: string): Promise { const windowId = await this.getActiveWindowId(); - await this.driver.typeInEditor(windowId, selector, text); + await this.poll(() => this.driver.typeInEditor(windowId, selector, text), () => true, 'wait for title: ${}'); } // waitFor calls should not take more than 200 * 100 = 20 seconds to complete, excluding @@ -280,8 +221,9 @@ export class Code { private readonly retryDuration = 100; // in milliseconds // TODO: clean function interface - private async waitFor(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; - private async waitFor(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { + // TODO: if accept function is missing, just dont use one, rely on exceptions + private async poll(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; + private async poll(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { let trial = 1; retryCount = typeof retryCount === 'number' ? retryCount : this.retryCount; @@ -293,6 +235,10 @@ export class Code { let result; try { result = await func(); + + if (accept(result)) { + return result; + } } catch (e) { // console.warn(e); @@ -301,10 +247,6 @@ export class Code { } } - if (accept(result)) { - return result; - } - await new Promise(resolve => setTimeout(resolve, this.retryDuration)); trial++; } From b4492b1f767be0995cc59db8653bee0d8198ea5b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 11 Apr 2018 17:25:51 +0200 Subject: [PATCH 0609/1070] further cleanup of driver API --- test/smoke/src/application.ts | 15 ++--------- test/smoke/src/vscode/code.ts | 50 +++++++++++++++-------------------- 2 files changed, 23 insertions(+), 42 deletions(-) diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index b8f57eae65f..11dd14ea1a4 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -115,23 +115,12 @@ export class Application { } private async checkWindowReady(): Promise { - if (!this._code) { + if (!this.code) { console.error('No code instance found'); return; } - let retries = 0; - - while (++retries < 300) { // 30 seconds - const ids = await this._code.getWindowIds(); - - if (ids.length > 0) { - break; - } - - await new Promise(c => setTimeout(c, 100)); - } - + await this.code.waitForWindowIds(ids => ids.length > 0); await this.code.waitForElement('.monaco-workbench'); } diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index 25638508589..281c05eba80 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -158,6 +158,10 @@ export class Code { } } + async waitForWindowIds(fn: (windowIds: number[]) => boolean): Promise { + await this.poll(() => this.driver.getWindowIds(), fn, `get window ids`); + } + async dispatchKeybinding(keybinding: string): Promise { const windowId = await this.getActiveWindowId(); await this.driver.dispatchKeybinding(windowId, keybinding); @@ -166,75 +170,68 @@ export class Code { async waitForTextContent(selector: string, textContent?: string, accept?: (result: string) => boolean): Promise { const windowId = await this.getActiveWindowId(); accept = accept || (result => textContent !== void 0 ? textContent === result : !!result); - return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `getTextContent with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0].textContent), s => accept!(typeof s === 'string' ? s : ''), `get text content '${selector}'`); } async waitAndClick(selector: string, xoffset?: number, yoffset?: number): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.click(windowId, selector, xoffset, yoffset), () => true); + await this.poll(() => this.driver.click(windowId, selector, xoffset, yoffset), () => true, `click '${selector}'`); } async waitAndDoubleClick(selector: string): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.doubleClick(windowId, selector), () => true); + await this.poll(() => this.driver.doubleClick(windowId, selector), () => true, `double click '${selector}'`); } async waitAndMove(selector: string): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.move(windowId, selector), () => true); + await this.poll(() => this.driver.move(windowId, selector), () => true, `move '${selector}'`); } async waitForSetValue(selector: string, value: string): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.setValue(windowId, selector, value), () => true); + await this.poll(() => this.driver.setValue(windowId, selector, value), () => true, `set value '${selector}'`); } async waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { const windowId = await this.getActiveWindowId(); - return await this.poll(() => this.driver.getElements(windowId, selector, recursive), accept, `elements with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector, recursive), accept, `get elements '${selector}'`); } async waitForElement(selector: string, accept: (result: IElement | undefined) => boolean = result => !!result): Promise { const windowId = await this.getActiveWindowId(); - return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `element with selector ${selector}`); + return await this.poll(() => this.driver.getElements(windowId, selector).then(els => els[0]), accept, `get element '${selector}'`); } async waitForActiveElement(selector: string): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.isActiveElement(windowId, selector), undefined, `wait for active element: ${selector}`); + await this.poll(() => this.driver.isActiveElement(windowId, selector), r => r, `is active element '${selector}'`); } async waitForTitle(fn: (title: string) => boolean): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.getTitle(windowId), fn, 'wait for title: ${}'); + await this.poll(() => this.driver.getTitle(windowId), fn, `get title`); } - // TODO make into waitForTypeInEditor async waitForTypeInEditor(selector: string, text: string): Promise { const windowId = await this.getActiveWindowId(); - await this.poll(() => this.driver.typeInEditor(windowId, selector, text), () => true, 'wait for title: ${}'); + await this.poll(() => this.driver.typeInEditor(windowId, selector, text), () => true, `type in editor '${selector}'`); } - // waitFor calls should not take more than 200 * 100 = 20 seconds to complete, excluding - // the time it takes for the actual retry call to complete - private readonly retryCount: number = 200; - private readonly retryDuration = 100; // in milliseconds + private static PollRetryCount: number = 200; + private static PollInterval = 100; // millis - // TODO: clean function interface - // TODO: if accept function is missing, just dont use one, rely on exceptions - private async poll(func: () => T | Promise, accept?: (result: T) => boolean | Promise, timeoutMessage?: string, retryCount?: number): Promise; - private async poll(func: () => T | Promise, accept: (result: T) => boolean | Promise = result => !!result, timeoutMessage?: string, retryCount?: number): Promise { + private async poll(fn: () => Promise, accept: (result: T) => boolean, timeoutMessage: string): Promise { let trial = 1; - retryCount = typeof retryCount === 'number' ? retryCount : this.retryCount; while (true) { - if (trial > retryCount) { - throw new Error(`${timeoutMessage}: Timed out after ${(retryCount * this.retryDuration) / 1000} seconds.`); + if (trial > Code.PollRetryCount) { + throw new Error(`Timeout: ${timeoutMessage} after ${(Code.PollRetryCount * Code.PollInterval) / 1000} seconds.`); } let result; try { - result = await func(); + result = await fn(); if (accept(result)) { return result; @@ -247,16 +244,11 @@ export class Code { } } - await new Promise(resolve => setTimeout(resolve, this.retryDuration)); + await new Promise(resolve => setTimeout(resolve, Code.PollInterval)); trial++; } } - // TODO: replace with waitForWindows - async getWindowIds(): Promise { - return await this.driver.getWindowIds(); - } - private async getActiveWindowId(): Promise { if (typeof this._activeWindowId !== 'number') { const windows = await this.driver.getWindowIds(); From 6bf56c43e1735a6a7aabaef065756c0d8a0bb3c8 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 11 Apr 2018 17:54:32 +0200 Subject: [PATCH 0610/1070] Use items width to compute overflow --- src/vs/base/browser/ui/toolbar/toolbar.ts | 8 ++++++++ src/vs/workbench/browser/parts/panel/media/panelpart.css | 4 ---- src/vs/workbench/browser/parts/panel/panelPart.ts | 7 +------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/vs/base/browser/ui/toolbar/toolbar.ts b/src/vs/base/browser/ui/toolbar/toolbar.ts index dfdab38d45c..cecc9f9831e 100644 --- a/src/vs/base/browser/ui/toolbar/toolbar.ts +++ b/src/vs/base/browser/ui/toolbar/toolbar.ts @@ -97,6 +97,14 @@ export class ToolBar { return this.actionBar.getContainer(); } + public getItemsWidth(): number { + let itemsWidth = 0; + for (let i = 0; i < this.actionBar.length(); i++) { + itemsWidth += this.actionBar.getWidth(i); + } + return itemsWidth; + } + public setAriaLabel(label: string): void { this.actionBar.setAriaLabel(label); } diff --git a/src/vs/workbench/browser/parts/panel/media/panelpart.css b/src/vs/workbench/browser/parts/panel/media/panelpart.css index fc207f64896..4b0a0a4c7e3 100644 --- a/src/vs/workbench/browser/parts/panel/media/panelpart.css +++ b/src/vs/workbench/browser/parts/panel/media/panelpart.css @@ -30,10 +30,6 @@ border-left-style: solid; } -.monaco-workbench > .part.panel > .composite.title > .title-actions { - flex-grow: 0; -} - .monaco-workbench > .part.panel > .title > .title-actions .monaco-action-bar .action-item .action-label { outline-offset: -2px; } diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index 852757046ca..d2972c69150 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -43,7 +43,6 @@ export class PanelPart extends CompositePart implements IPanelService { private blockOpeningPanel: boolean; private compositeBar: CompositeBar; private dimension: Dimension; - private toolbarWidth = new Map(); constructor( id: string, @@ -258,11 +257,7 @@ export class PanelPart extends CompositePart implements IPanelService { if (!activePanel) { return 0; } - if (!this.toolbarWidth.has(activePanel.getId())) { - this.toolbarWidth.set(activePanel.getId(), this.toolBar.getContainer().offsetWidth); - } - - return this.toolbarWidth.get(activePanel.getId()); + return this.toolBar.getItemsWidth(); } } From 6f32564356f8e20a2f7788ef8ca93c7e787b84d7 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 11 Apr 2018 18:00:42 +0200 Subject: [PATCH 0611/1070] Implement #22289 --- .../parts/markers/electron-browser/markers.ts | 87 +++++-- .../markers/electron-browser/markersModel.ts | 212 +++++++++-------- .../markers/electron-browser/markersPanel.ts | 91 +++++--- .../electron-browser/markersPanelActions.ts | 219 ++++++++++++++---- .../media/excludeSettings-dark.svg | 1 + .../media/excludeSettings.svg | 1 + .../electron-browser/media/markers.css | 43 +++- .../markers/electron-browser/messages.ts | 8 +- 8 files changed, 463 insertions(+), 199 deletions(-) create mode 100755 src/vs/workbench/parts/markers/electron-browser/media/excludeSettings-dark.svg create mode 100755 src/vs/workbench/parts/markers/electron-browser/media/excludeSettings.svg diff --git a/src/vs/workbench/parts/markers/electron-browser/markers.ts b/src/vs/workbench/parts/markers/electron-browser/markers.ts index a15da7a99e9..2c104743afd 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markers.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markers.ts @@ -13,16 +13,26 @@ import Constants from './constants'; import URI from 'vs/base/common/uri'; import { Event, Emitter } from 'vs/base/common/event'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { deepClone, mixin } from 'vs/base/common/objects'; +import { IExpression, getEmptyExpression } from 'vs/base/common/glob'; +import { IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; +import { join, isAbsolute } from 'vs/base/common/paths'; export const IMarkersWorkbenchService = createDecorator('markersWorkbenchService'); +export interface IFilter { + filterText: string; + useFilesExclude: boolean; +} + export interface IMarkersWorkbenchService { _serviceBrand: any; - readonly onDidChangeMarkersForResources: Event; + readonly onDidChange: Event; readonly markersModel: MarkersModel; - filter(filter: string): void; + filter(filter: IFilter): void; } export class MarkersWorkbenchService extends Disposable implements IMarkersWorkbenchService { @@ -30,21 +40,30 @@ export class MarkersWorkbenchService extends Disposable implements IMarkersWorkb readonly markersModel: MarkersModel; - private readonly _onDidChangeMarkersForResources: Emitter = this._register(new Emitter()); - readonly onDidChangeMarkersForResources: Event = this._onDidChangeMarkersForResources.event; + private readonly _onDidChange: Emitter = this._register(new Emitter()); + readonly onDidChange: Event = this._onDidChange.event; + + private useFilesExclude: boolean = false; constructor( @IMarkerService private markerService: IMarkerService, + @IConfigurationService private configurationService: IConfigurationService, + @IWorkspaceContextService private workspaceContextService: IWorkspaceContextService, @IActivityService private activityService: IActivityService ) { super(); this.markersModel = this._register(new MarkersModel(this.readMarkers())); this._register(markerService.onMarkerChanged(resources => this.onMarkerChanged(resources))); + this._register(configurationService.onDidChangeConfiguration(e => { + if (this.useFilesExclude && e.affectsConfiguration('files.exclude')) { + this.doFilter(this.markersModel.filterOptions.filter, this.getExcludeExpression()); + } + })); } - filter(filter: string): void { - this.markersModel.updateFilterOptions(new FilterOptions(filter)); - this.refreshBadge(); + filter(filter: IFilter): void { + this.useFilesExclude = filter.useFilesExclude; + this.doFilter(filter.filterText, this.getExcludeExpression()); } private onMarkerChanged(resources: URI[]): void { @@ -54,19 +73,61 @@ export class MarkersWorkbenchService extends Disposable implements IMarkersWorkb } }); this.refreshBadge(); - this._onDidChangeMarkersForResources.fire(resources); + this._onDidChange.fire(resources); } private readMarkers(resource?: URI): IMarker[] { return this.markerService.read({ resource, severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info }); } + private getExcludeExpression(): IExpression { + if (this.useFilesExclude) { + const workspaceFolders = this.workspaceContextService.getWorkspace().folders; + if (workspaceFolders.length) { + const result = getEmptyExpression(); + for (const workspaceFolder of workspaceFolders) { + mixin(result, this.getExcludesForFolder(workspaceFolder)); + } + return result; + } else { + return this.getFilesExclude(); + } + } + return {}; + } + + private doFilter(filterText: string, filesExclude: IExpression): void { + this.markersModel.updateFilterOptions(new FilterOptions(filterText, filesExclude)); + this.refreshBadge(); + this._onDidChange.fire([]); + } + private refreshBadge(): void { - const { total, filtered } = this.markersModel.stats(); - const message = total === filtered ? localize('totalProblems', 'Total {0} Problems', total) : localize('filteredProblems', 'Showing {0} of {1} Problems', filtered, total); - this.activityService.showActivity(Constants.MARKERS_PANEL_ID, new NumberBadge(filtered, () => message)); + const { total } = this.markersModel.stats(); + const message = localize('totalProblems', 'Total {0} Problems', total); + this.activityService.showActivity(Constants.MARKERS_PANEL_ID, new NumberBadge(total, () => message)); + } + + private getExcludesForFolder(workspaceFolder: IWorkspaceFolder): IExpression { + const expression = this.getFilesExclude(workspaceFolder.uri); + return this.getAbsoluteExpression(expression, workspaceFolder.uri.fsPath); + } + + private getFilesExclude(resource?: URI): IExpression { + return deepClone(this.configurationService.getValue('files.exclude', { resource })) || {}; + } + + private getAbsoluteExpression(expr: IExpression, root: string): IExpression { + return Object.keys(expr) + .reduce((absExpr: IExpression, key: string) => { + if (expr[key] && !isAbsolute(key)) { + const absPattern = join(root, key); + absExpr[absPattern] = expr[key]; + } + + return absExpr; + }, Object.create(null)); } } - -registerSingleton(IMarkersWorkbenchService, MarkersWorkbenchService); +registerSingleton(IMarkersWorkbenchService, MarkersWorkbenchService); \ No newline at end of file diff --git a/src/vs/workbench/parts/markers/electron-browser/markersModel.ts b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts index 2dc945951f8..652e9c08a5b 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersModel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts @@ -13,6 +13,8 @@ import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { Schemas } from 'vs/base/common/network'; import { groupBy, isFalsyOrEmpty, flatten } from 'vs/base/common/arrays'; import { values } from 'vs/base/common/map'; +import * as glob from 'vs/base/common/glob'; +import * as strings from 'vs/base/common/strings'; function compareUris(a: URI, b: URI) { if (a.toString() < b.toString()) { @@ -34,7 +36,9 @@ export class ResourceMarkers extends NodeWithId { private _path: string = null; readonly markers: Marker[]; - filteredCount: number = 0; + isExcluded: boolean = false; + isIncluded: boolean = false; + filteredCount: number; uriMatches: IMatch[] = []; constructor( @@ -127,21 +131,48 @@ export class FilterOptions { readonly filterErrors: boolean = false; readonly filterWarnings: boolean = false; readonly filterInfos: boolean = false; - readonly filter: string = ''; - readonly completeFilter: string = ''; + readonly excludePattern: glob.ParsedExpression = null; + readonly includePattern: glob.ParsedExpression = null; + readonly textFilter: string = ''; - constructor(filter: string = '') { - if (filter) { - this.completeFilter = filter; - this.filter = filter.trim(); - this.filterErrors = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_ERRORS); - this.filterWarnings = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_WARNINGS); - this.filterInfos = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_INFOS); + constructor(readonly filter: string = '', excludePatterns: glob.IExpression = {}) { + filter = filter.trim(); + for (const key of Object.keys(excludePatterns)) { + if (excludePatterns[key]) { + this.setPattern(excludePatterns, key); + } + delete excludePatterns[key]; } + const includePatterns: glob.IExpression = glob.getEmptyExpression(); + if (filter) { + const filters = glob.splitGlobAware(filter, ',').map(s => s.trim()).filter(s => !!s.length); + for (const f of filters) { + this.filterErrors = this.filterErrors || this.matches(f, Messages.MARKERS_PANEL_FILTER_ERRORS); + this.filterWarnings = this.filterWarnings || this.matches(f, Messages.MARKERS_PANEL_FILTER_WARNINGS); + this.filterInfos = this.filterInfos || this.matches(f, Messages.MARKERS_PANEL_FILTER_INFOS); + if (strings.startsWith(f, '!')) { + this.setPattern(excludePatterns, strings.ltrim(f, '!')); + } else { + this.setPattern(includePatterns, f); + this.textFilter += ` ${f}`; + } + } + } + if (Object.keys(excludePatterns).length) { + this.excludePattern = glob.parse(excludePatterns); + } + if (Object.keys(includePatterns).length) { + this.includePattern = glob.parse(includePatterns); + } + this.textFilter = this.textFilter.trim(); } - public hasFilters(): boolean { - return !!this.filter; + private setPattern(expression: glob.IExpression, pattern: string) { + if (pattern[0] === '.') { + pattern = '*' + pattern; // convert ".js" to "*.js" + } + expression[`**/${pattern}/**`] = true; + expression[`**/${pattern}`] = true; } private matches(prefix: string, word: string): boolean { @@ -229,89 +260,90 @@ export class MarkersModel { public updateFilterOptions(filterOptions: FilterOptions): void { this._filterOptions = filterOptions; - if (!this._filterOptions.hasFilters()) { - // reset all filters/matches - this._markersByResource.forEach(resource => { - resource.filteredCount = resource.markers.length; - resource.uriMatches = []; - - for (const marker of resource.markers) { - marker.isSelected = true; - marker.messageMatches = []; - marker.sourceMatches = []; - marker.resourceRelatedInformation.forEach(r => { - r.uriMatches = []; - r.messageMatches = []; - }); - } - }); - } else { - // update properly - this._markersByResource.forEach(resource => { - - resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(resource.uri.fsPath)) : []; - resource.filteredCount = 0; - - for (const marker of resource.markers) { - marker.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, marker.raw.message) : []; - marker.sourceMatches = marker.raw.source && this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, marker.raw.source) : []; - marker.isSelected = this.filterMarker(marker.raw); - if (marker.isSelected) { - resource.filteredCount += 1; - } - marker.resourceRelatedInformation.forEach(r => { - r.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(r.raw.resource.fsPath)) : []; - r.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, r.raw.message) : []; - }); - } - }); - } + this._markersByResource.forEach(resource => { + this.updateResource(resource); + for (const marker of resource.markers) { + this.updateMarker(marker, resource); + } + this.updateFilteredCount(resource); + }); } private createResource(uri: URI, rawMarkers: IMarker[]): ResourceMarkers { let markers: Marker[] = []; - let filteredCount = 0; - for (let i = 0; i < rawMarkers.length; i++) { - let marker = this.createMarker(rawMarkers[i], i, uri.toString()); - markers.push(marker); - if (marker.isSelected) { - filteredCount += 1; - } - } - const resource = new ResourceMarkers(uri, markers); - resource.filteredCount = filteredCount; - resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(uri.fsPath)) : []; + this.updateResource(resource); + + rawMarkers.forEach((rawMarker, index) => { + const marker = new Marker(uri.toString() + index, rawMarker); + if (rawMarker.relatedInformation) { + const groupedByResource = groupBy(rawMarker.relatedInformation, MarkersModel._compareMarkersByUri); + groupedByResource.sort((a, b) => compareUris(a[0].resource, b[0].resource)); + marker.resourceRelatedInformation = flatten(groupedByResource).map((r, index) => new RelatedInformation(marker.id + index, r)); + } + this.updateMarker(marker, resource); + markers.push(marker); + }); + + this.updateFilteredCount(resource); return resource; } - private createMarker(rawMarker: IMarker, index: number, uri: string): Marker { - const marker = new Marker(uri + index, rawMarker); - marker.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, rawMarker.message) : []; - marker.sourceMatches = rawMarker.source && this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, rawMarker.source) : []; - marker.isSelected = this.filterMarker(rawMarker); - if (rawMarker.relatedInformation) { - const groupedByResource = groupBy(rawMarker.relatedInformation, MarkersModel._compareMarkersByUri); - groupedByResource.sort((a, b) => compareUris(a[0].resource, b[0].resource)); - marker.resourceRelatedInformation = flatten(groupedByResource).map((r, index) => { - const relatedInformation = new RelatedInformation(marker.id + index, r); - relatedInformation.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(r.resource.fsPath)) : []; - relatedInformation.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, r.message) : []; - return relatedInformation; - }); - } - return marker; + private updateResource(resource: ResourceMarkers): void { + resource.isExcluded = this.isResourceExcluded(resource); + resource.isIncluded = this.isResourceIncluded(resource); + resource.uriMatches = this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, paths.basename(resource.uri.fsPath)) : []; } - private filterMarker(marker: IMarker): boolean { - if (!this._filterOptions.hasFilters()) { + private updateFilteredCount(resource: ResourceMarkers): void { + if (resource.isExcluded) { + resource.filteredCount = 0; + } else if (resource.isIncluded) { + resource.filteredCount = resource.markers.length; + } else { + resource.filteredCount = resource.markers.filter(m => m.isSelected).length; + } + } + + private updateMarker(marker: Marker, resource: ResourceMarkers): void { + marker.messageMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._fuzzyFilter(this._filterOptions.textFilter, marker.raw.message) : []; + marker.sourceMatches = !resource.isExcluded && marker.raw.source && this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, marker.raw.source) : []; + marker.resourceRelatedInformation.forEach(r => { + r.uriMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, paths.basename(r.raw.resource.fsPath)) : []; + r.messageMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._fuzzyFilter(this._filterOptions.textFilter, r.raw.message) : []; + }); + marker.isSelected = this.isMarkerSelected(marker.raw, resource); + } + + private isResourceExcluded(resource: ResourceMarkers): boolean { + if (resource.uri.scheme === Schemas.walkThrough || resource.uri.scheme === Schemas.walkThroughSnippet) { return true; } - if (marker.resource.scheme === Schemas.walkThrough || marker.resource.scheme === Schemas.walkThroughSnippet) { + if (this.filterOptions.excludePattern && !!this.filterOptions.excludePattern(resource.uri.fsPath)) { + return true; + } + return false; + } + + private isResourceIncluded(resource: ResourceMarkers): boolean { + if (this.filterOptions.includePattern && this.filterOptions.includePattern(resource.uri.fsPath)) { + return true; + } + if (this._filterOptions.textFilter && !!FilterOptions._filter(this._filterOptions.textFilter, paths.basename(resource.uri.fsPath))) { + return true; + } + return false; + } + + private isMarkerSelected(marker: IMarker, resource: ResourceMarkers): boolean { + if (resource.isExcluded) { return false; } + if (resource.isIncluded) { + return true; + } if (this._filterOptions.filterErrors && MarkerSeverity.Error === marker.severity) { return true; } @@ -321,18 +353,18 @@ export class MarkersModel { if (this._filterOptions.filterInfos && MarkerSeverity.Info === marker.severity) { return true; } - if (!!FilterOptions._fuzzyFilter(this._filterOptions.filter, marker.message)) { + if (!this._filterOptions.textFilter) { return true; } - if (!!FilterOptions._filter(this._filterOptions.filter, paths.basename(marker.resource.fsPath))) { + if (!!FilterOptions._fuzzyFilter(this._filterOptions.textFilter, marker.message)) { return true; } - if (!!marker.source && !!FilterOptions._filter(this._filterOptions.filter, marker.source)) { + if (!!marker.source && !!FilterOptions._filter(this._filterOptions.textFilter, marker.source)) { return true; } if (!!marker.relatedInformation && marker.relatedInformation.some(r => - !!FilterOptions._filter(this._filterOptions.filter, paths.basename(r.resource.fsPath)) || ! - !FilterOptions._filter(this._filterOptions.filter, r.message))) { + !!FilterOptions._filter(this._filterOptions.textFilter, paths.basename(r.resource.fsPath)) || ! + !FilterOptions._filter(this._filterOptions.textFilter, r.message))) { return true; } return false; @@ -341,16 +373,4 @@ export class MarkersModel { public dispose(): void { this._markersByResource.clear(); } - - public getMessage(): string { - if (this.hasFilteredResources()) { - return ''; - } - if (this.hasResources()) { - if (this._filterOptions.hasFilters()) { - return Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS; - } - } - return Messages.MARKERS_PANEL_NO_PROBLEMS_BUILT; - } } diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts index e5b909416af..492fc1a1984 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts @@ -10,8 +10,7 @@ import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { Delayer } from 'vs/base/common/async'; import * as dom from 'vs/base/browser/dom'; -import { IAction, Action } from 'vs/base/common/actions'; -import { IActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; +import { IAction, IActionItem } from 'vs/base/common/actions'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import { Panel } from 'vs/workbench/browser/panel'; @@ -21,7 +20,7 @@ import { Marker, ResourceMarkers, RelatedInformation } from 'vs/workbench/parts/ import { Controller } from 'vs/workbench/parts/markers/electron-browser/markersTreeController'; import * as Viewer from 'vs/workbench/parts/markers/electron-browser/markersTreeViewer'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { CollapseAllAction, FilterAction, FilterInputBoxActionItem } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; +import { CollapseAllAction, FilterInputActionItem, FilterByFilesExcludeAction, FilterAction } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations'; @@ -31,6 +30,8 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { TreeResourceNavigator, WorkbenchTree } from 'vs/platform/list/browser/listService'; import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-browser/markers'; import { SimpleFileResourceDragAndDrop } from 'vs/workbench/browser/dnd'; +import { IStorageService } from 'vs/platform/storage/common/storage'; +import { Scope } from 'vs/workbench/common/memento'; export class MarkersPanel extends Panel { @@ -44,12 +45,14 @@ export class MarkersPanel extends Panel { private rangeHighlightDecorations: RangeHighlightDecorations; private actions: IAction[]; - private filterAction: FilterAction; private collapseAllAction: IAction; + private filterInputActionItem: FilterInputActionItem; + private filterByFilesExcludeAction: FilterByFilesExcludeAction; private treeContainer: HTMLElement; private messageBoxContainer: HTMLElement; private messageBox: HTMLElement; + private panelSettings: any; private currentResourceGotAddedToMarkersData: boolean = false; @@ -60,11 +63,13 @@ export class MarkersPanel extends Panel { @IConfigurationService private configurationService: IConfigurationService, @ITelemetryService telemetryService: ITelemetryService, @IThemeService themeService: IThemeService, - @IMarkersWorkbenchService private markersWorkbenchService: IMarkersWorkbenchService + @IMarkersWorkbenchService private markersWorkbenchService: IMarkersWorkbenchService, + @IStorageService storageService: IStorageService, ) { super(Constants.MARKERS_PANEL_ID, telemetryService, themeService); this.delayedRefresh = new Delayer(500); this.autoExpanded = new Set(); + this.panelSettings = this.getMemento(storageService, Scope.WORKSPACE); } public create(parent: HTMLElement): TPromise { @@ -79,9 +84,11 @@ export class MarkersPanel extends Panel { this.createMessageBox(container); this.createTree(container); - + this.createActions(); this.createListeners(); + this.updateFilter(); + return this.render(); } @@ -90,7 +97,10 @@ export class MarkersPanel extends Panel { } public layout(dimension: dom.Dimension): void { - this.tree.layout(dimension.height, dimension.width); + const height = dimension.height - 38; + this.treeContainer.style.height = `${height}px`; + this.tree.layout(height, dimension.width); + this.filterInputActionItem.toggleLayout(dimension.width < 1200); } public focus(): void { @@ -126,9 +136,8 @@ export class MarkersPanel extends Panel { public getActions(): IAction[] { if (!this.actions) { - this.actions = this.createActions(); + this.createActions(); } - this.collapseAllAction.enabled = this.markersWorkbenchService.markersModel.hasFilteredResources(); return this.actions; } @@ -172,11 +181,9 @@ export class MarkersPanel extends Panel { return TPromise.as(null); } - public updateFilter(filter: string) { - this.markersWorkbenchService.filter(filter); + private updateFilter() { this.autoExpanded = new Set(); - this.refreshPanel(); - this.autoReveal(); + this.markersWorkbenchService.filter({ filterText: this.filterInputActionItem.getFilterText(), useFilesExclude: this.filterByFilesExcludeAction.checked }); } private createMessageBox(parent: HTMLElement): void { @@ -221,28 +228,26 @@ export class MarkersPanel extends Panel { })); } - private createActions(): IAction[] { + private createActions(): void { this.collapseAllAction = this.instantiationService.createInstance(CollapseAllAction, this.tree, true); - this.filterAction = new FilterAction(); - const actions = [ - this.filterAction, - this.collapseAllAction - ]; - actions.forEach(a => { - this.toUnbind.push(a); - }); - return actions; + const filterAction = this.instantiationService.createInstance(FilterAction); + this.filterInputActionItem = this.instantiationService.createInstance(FilterInputActionItem, this.panelSettings['filter'], this.panelSettings['filterHistory'] || [], filterAction); + this.filterByFilesExcludeAction = new FilterByFilesExcludeAction(this.panelSettings['useFilesExclude']); + this.actions = [filterAction, this.filterByFilesExcludeAction, this.collapseAllAction]; } private createListeners(): void { - this.toUnbind.push(this.markersWorkbenchService.onDidChangeMarkersForResources(this.onMarkerChanged, this)); + this.toUnbind.push(this.markersWorkbenchService.onDidChange(resources => this.onDidChange(resources))); this.toUnbind.push(this.editorGroupService.onEditorsChanged(this.onEditorsChanged, this)); this.toUnbind.push(this.tree.onDidChangeSelection(() => this.onSelected())); + this.toUnbind.push(this.filterInputActionItem.onDidChange(() => this.updateFilter())); + this.toUnbind.push(this.filterByFilesExcludeAction.onDidCheck(() => this.updateFilter())); + this.actions.forEach(a => this.toUnbind.push(a)); } - private onMarkerChanged(changedResources: URI[]) { - this.currentResourceGotAddedToMarkersData = this.currentResourceGotAddedToMarkersData || this.isCurrentResourceGotAddedToMarkersData(changedResources); - this.updateResources(changedResources); + private onDidChange(resources: URI[]) { + this.currentResourceGotAddedToMarkersData = this.currentResourceGotAddedToMarkersData || this.isCurrentResourceGotAddedToMarkersData(resources); + this.updateResources(resources); this.delayedRefresh.trigger(() => { this.refreshPanel(); this.updateRangeHighlights(); @@ -295,10 +300,23 @@ export class MarkersPanel extends Panel { } private renderMessage(): void { - this.messageBox.textContent = this.markersWorkbenchService.markersModel.getMessage(); + this.messageBox.textContent = this.getMessage(); dom.toggleClass(this.messageBoxContainer, 'hidden', this.markersWorkbenchService.markersModel.hasFilteredResources()); } + private getMessage(): string { + if (this.markersWorkbenchService.markersModel.hasFilteredResources()) { + return ''; + } + if (this.markersWorkbenchService.markersModel.hasResources()) { + if (!this.markersWorkbenchService.markersModel.filterOptions.filter) { + return Messages.MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER; + } + return Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS; + } + return Messages.MARKERS_PANEL_NO_PROBLEMS_BUILT; + } + private autoExpand(): void { this.markersWorkbenchService.markersModel.forEachFilteredResource(resource => { if (!this.autoExpanded.has(resource.uri.toString())) { @@ -375,15 +393,24 @@ export class MarkersPanel extends Panel { } } - public getActionItem(action: Action): IActionItem { + public getFocusElement(): ResourceMarkers | Marker { + return this.tree.getFocus(); + } + + public getActionItem(action: IAction): IActionItem { if (action.id === FilterAction.ID) { - return this.instantiationService.createInstance(FilterInputBoxActionItem, this, action); + return this.filterInputActionItem; } return super.getActionItem(action); } - public getFocusElement(): ResourceMarkers | Marker { - return this.tree.getFocus(); + public shutdown(): void { + // store memento + this.panelSettings['filter'] = this.filterInputActionItem.getFilterText(); + this.panelSettings['filterHistory'] = this.filterInputActionItem.getFilterHistory(); + this.panelSettings['useFilesExclude'] = this.filterByFilesExcludeAction.checked; + + super.shutdown(); } public dispose(): void { diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts index 29fa7d076cc..df7193c9e30 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts @@ -5,10 +5,8 @@ import { Delayer } from 'vs/base/common/async'; import * as DOM from 'vs/base/browser/dom'; -import * as lifecycle from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IAction, Action } from 'vs/base/common/actions'; -import { BaseActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; +import { Action, IAction } from 'vs/base/common/actions'; import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; @@ -16,15 +14,20 @@ import { IContextViewService } from 'vs/platform/contextview/browser/contextView import { TogglePanelAction } from 'vs/workbench/browser/panel'; import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; -import { MarkersPanel } from 'vs/workbench/parts/markers/electron-browser/markersPanel'; import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { CollapseAllAction as TreeCollapseAction } from 'vs/base/parts/tree/browser/treeDefaults'; import * as Tree from 'vs/base/parts/tree/browser/tree'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { attachInputBoxStyler } from 'vs/platform/theme/common/styler'; +import { attachInputBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-browser/markers'; +import { Event, Emitter } from 'vs/base/common/event'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { HistoryNavigator } from 'vs/base/common/history'; +import { BaseActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; +import { badgeBackground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; +import { localize } from '../../../../nls'; export class ToggleMarkersPanelAction extends TogglePanelAction { @@ -34,8 +37,10 @@ export class ToggleMarkersPanelAction extends TogglePanelAction { constructor(id: string, label: string, @IPartService partService: IPartService, @IPanelService panelService: IPanelService, + @IMarkersWorkbenchService markersWorkbenchService: IMarkersWorkbenchService ) { super(id, label, Constants.MARKERS_PANEL_ID, panelService, partService); + this.enabled = markersWorkbenchService.markersModel.hasFilteredResources(); } } @@ -62,6 +67,34 @@ export class CollapseAllAction extends TreeCollapseAction { } } +export class FilterByFilesExcludeAction extends Action { + + public static readonly ID: string = 'workbench.actions.problems.useFilesExclude'; + + private readonly _onDidCheck: Emitter = new Emitter(); + readonly onDidCheck: Event = this._onDidCheck.event; + + private toDispose: IDisposable[] = []; + + constructor(checked: boolean) { + super(FilterByFilesExcludeAction.ID, checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE, 'markers-panel-action-files-exclude', true); + this.toDispose.push(this._onDidCheck); + this.checked = checked; + } + + public run(): TPromise { + this.checked = !this.checked; + this.tooltip = this.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE; + this._onDidCheck.fire(this.checked); + return TPromise.as(null); + } + + dispose(): void { + this.toDispose = dispose(this.toDispose); + super.dispose(); + } +} + export class FilterAction extends Action { public static readonly ID: string = 'workbench.actions.problems.filter'; @@ -72,41 +105,151 @@ export class FilterAction extends Action { } -export class FilterInputBoxActionItem extends BaseActionItem { - protected toDispose: lifecycle.IDisposable[]; +export class FilterInputActionItem extends BaseActionItem { + + private _toDispose: IDisposable[] = []; + + private readonly _onDidChange: Emitter = this._register(new Emitter()); + readonly onDidChange: Event = this._onDidChange.event; private delayedFilterUpdate: Delayer; + private container: HTMLElement; + private filterInputBox: InputBox; + private filterHistory: HistoryNavigator; + private filterBadge: HTMLInputElement; - constructor(private markersPanel: MarkersPanel, action: IAction, + constructor( + private filterText: string, + filterHistory: string[], + action: IAction, @IContextViewService private contextViewService: IContextViewService, @IThemeService private themeService: IThemeService, @IMarkersWorkbenchService private markersWorkbenchService: IMarkersWorkbenchService, - @ITelemetryService private telemetryService: ITelemetryService) { - super(markersPanel, action); - this.toDispose = []; + @ITelemetryService private telemetryService: ITelemetryService + ) { + super(null, action); this.delayedFilterUpdate = new Delayer(500); + this.filterHistory = new HistoryNavigator(filterHistory); } - public render(container: HTMLElement): void { - DOM.addClass(container, 'markers-panel-action-filter'); - let filterInputBox = new InputBox(container, this.contextViewService, { + render(container: HTMLElement): void { + this.container = container; + DOM.addClass(this.container, 'markers-panel-action-filter'); + this.createInput(this.container); + this.createBadge(this.container); + } + + getFilterText(): string { + return this.filterText; + } + + getFilterHistory(): string[] { + return this.filterHistory.getHistory(); + } + + toggleLayout(small: boolean) { + if (this.container) { + DOM.toggleClass(this.container, 'small', small); + DOM.toggleClass(this.filterBadge, 'small', small); + } + } + + private createInput(container: HTMLElement): void { + this.filterInputBox = new InputBox(container, this.contextViewService, { placeholder: Messages.MARKERS_PANEL_FILTER_PLACEHOLDER, - ariaLabel: Messages.MARKERS_PANEL_FILTER_PLACEHOLDER + ariaLabel: Messages.MARKERS_PANEL_FILTER_ARIA_LABEL }); - this.toDispose.push(attachInputBoxStyler(filterInputBox, this.themeService)); - filterInputBox.value = this.markersWorkbenchService.markersModel.filterOptions.completeFilter; - this.toDispose.push(filterInputBox.onDidChange(filter => this.delayedFilterUpdate.trigger(() => this.updateFilter(filter)))); - this.toDispose.push(DOM.addStandardDisposableListener(filterInputBox.inputElement, 'keyup', (keyboardEvent) => this.onInputKeyUp(keyboardEvent, filterInputBox))); - this.toDispose.push(DOM.addStandardDisposableListener(container, 'keydown', this.handleKeyboardEvent)); - this.toDispose.push(DOM.addStandardDisposableListener(container, 'keyup', this.handleKeyboardEvent)); + this._register(attachInputBoxStyler(this.filterInputBox, this.themeService)); + this.filterInputBox.value = this.filterText; + this._register(this.filterInputBox.onDidChange(filter => this.delayedFilterUpdate.trigger(() => this.onDidInputChange()))); + this._register(DOM.addStandardDisposableListener(this.filterInputBox.inputElement, 'keydown', (keyboardEvent) => this.onInputKeyDown(keyboardEvent, this.filterInputBox))); + this._register(DOM.addStandardDisposableListener(container, 'keydown', this.handleKeyboardEvent)); + this._register(DOM.addStandardDisposableListener(container, 'keyup', this.handleKeyboardEvent)); } - private updateFilter(filter: string) { - this.markersPanel.updateFilter(filter); + private createBadge(container: HTMLElement): void { + this.filterBadge = DOM.append(container, DOM.$('.markers-panel-filter-badge')); + this._register(attachStylerCallback(this.themeService, { badgeBackground, contrastBorder }, colors => { + const background = colors.badgeBackground ? colors.badgeBackground.toString() : null; + const border = colors.contrastBorder ? colors.contrastBorder.toString() : null; + + this.filterBadge.style.backgroundColor = background; + + this.filterBadge.style.borderWidth = border ? '1px' : null; + this.filterBadge.style.borderStyle = border ? 'solid' : null; + this.filterBadge.style.borderColor = border; + })); + this._register(this.markersWorkbenchService.onDidChange(() => this.updateBadge())); + } + + private onDidInputChange() { + this.filterText = this.filterInputBox.value; + if (this.filterText && this.filterText !== this.filterHistory.current()) { + this.filterHistory.add(this.getFilterText()); + } + this._onDidChange.fire(); this.reportFilteringUsed(); } + private updateBadge(): void { + const { total, filtered } = this.markersWorkbenchService.markersModel.stats(); + DOM.toggleClass(this.filterBadge, 'hidden', total === filtered); + this.filterBadge.textContent = localize('showing filtered problems', "Showing {0} of {1}", filtered, total); + this.filterInputBox.inputElement.style.paddingRight = DOM.getTotalWidth(this.filterBadge) + 'px'; + } + + // Action toolbar is swallowing some keys for action items which should not be for an input box + private handleKeyboardEvent(e: IKeyboardEvent) { + switch (e.keyCode) { + case KeyCode.Space: + case KeyCode.LeftArrow: + case KeyCode.RightArrow: + case KeyCode.Escape: + e.stopPropagation(); + break; + } + } + + private showNextFilter() { + let next = this.filterHistory.next(); + if (next) { + this.filterInputBox.value = next; + } + } + + private showPreviousFilter() { + let previous = this.filterHistory.previous(); + if (this.filterInputBox.value) { + this.filterHistory.addIfNotPresent(this.filterInputBox.value); + } + if (previous) { + this.filterInputBox.value = previous; + } + } + + private onInputKeyDown(keyboardEvent: IKeyboardEvent, filterInputBox: InputBox) { + let handled = false; + switch (keyboardEvent.keyCode) { + case KeyCode.Escape: + filterInputBox.value = ''; + handled = true; + break; + case KeyCode.UpArrow: + this.showPreviousFilter(); + handled = true; + break; + case KeyCode.DownArrow: + this.showNextFilter(); + handled = true; + break; + } + if (handled) { + keyboardEvent.stopPropagation(); + keyboardEvent.preventDefault(); + } + } + private reportFilteringUsed(): void { let data = {}; data['errors'] = this.markersWorkbenchService.markersModel.filterOptions.filterErrors; @@ -122,30 +265,8 @@ export class FilterInputBoxActionItem extends BaseActionItem { this.telemetryService.publicLog('problems.filter', data); } - public dispose(): void { - this.toDispose = lifecycle.dispose(this.toDispose); - super.dispose(); + private _register(t: T): T { + this._toDispose.push(t); + return t; } - - // Action toolbar is swallowing some keys for action items which should not be for an input box - private handleKeyboardEvent(e: IKeyboardEvent) { - switch (e.keyCode) { - case KeyCode.Space: - case KeyCode.LeftArrow: - case KeyCode.RightArrow: - case KeyCode.Escape: - e.stopPropagation(); - break; - } - } - - private onInputKeyUp(keyboardEvent: IKeyboardEvent, filterInputBox: InputBox) { - switch (keyboardEvent.keyCode) { - case KeyCode.Escape: - filterInputBox.value = ''; - return; - default: - return; - } - } -} +} \ No newline at end of file diff --git a/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings-dark.svg b/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings-dark.svg new file mode 100755 index 00000000000..3eeedcb41c6 --- /dev/null +++ b/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings.svg b/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings.svg new file mode 100755 index 00000000000..79decb032b1 --- /dev/null +++ b/src/vs/workbench/parts/markers/electron-browser/media/excludeSettings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/markers/electron-browser/media/markers.css b/src/vs/workbench/parts/markers/electron-browser/media/markers.css index 3cf32eb0bcc..afcf024db82 100644 --- a/src/vs/workbench/parts/markers/electron-browser/media/markers.css +++ b/src/vs/workbench/parts/markers/electron-browser/media/markers.css @@ -4,11 +4,18 @@ *--------------------------------------------------------------------------------------------*/ .monaco-action-bar .action-item.markers-panel-action-filter { - max-width: 400px; - min-width: 150px; - flex: 1; cursor: default; margin: 4px 10px 0 0; + min-width: 150px; + max-width: 800px; +} + +.monaco-action-bar .action-item.markers-panel-action-filter { + flex: 0.7; +} + +.monaco-action-bar .action-item.markers-panel-action-filter.small { + flex: 0.5; } .monaco-action-bar .action-item.markers-panel-action-filter .monaco-inputbox { @@ -20,6 +27,19 @@ border: 1px solid #ddd; } +.markers-panel-action-filter > .markers-panel-filter-badge { + margin: 4px 0px; + padding: 0px 8px; + border-radius: 2px; + position: absolute; + top: 0px; + right: 4px; +} + +.markers-panel-action-filter > .markers-panel-filter-badge.small { + display: none; +} + .markers-panel .markers-panel-container { height: 100%; } @@ -37,10 +57,6 @@ display: none; } -.markers-panel .markers-panel-container .tree-container { - height: 100%; -} - .markers-panel .markers-panel-container .tree-container.hidden, .markers-panel .markers-panel-container .message-box-container.hidden { display: none; @@ -123,3 +139,16 @@ .vs-dark .markers-panel .icon.info { background: url('status-info-inverse.svg') center center no-repeat; } + +.vs .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude { + background: url('excludeSettings.svg') center center no-repeat; +} + +.vs-dark .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude, +.hc-black .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude { + background: url('excludeSettings-dark.svg') center center no-repeat; +} + +.monaco-action-bar .action-item .icon.markers-panel-action-files-exclude:not(.checked) { + opacity: 0.5; +} diff --git a/src/vs/workbench/parts/markers/electron-browser/messages.ts b/src/vs/workbench/parts/markers/electron-browser/messages.ts index 03bc507f5d7..82eb776dda6 100644 --- a/src/vs/workbench/parts/markers/electron-browser/messages.ts +++ b/src/vs/workbench/parts/markers/electron-browser/messages.ts @@ -22,10 +22,14 @@ export default class Messages { public static MARKERS_PANEL_ARIA_LABEL_PROBLEMS_TREE: string = nls.localize('markers.panel.aria.label.problems.tree', "Problems grouped by files"); public static MARKERS_PANEL_NO_PROBLEMS_BUILT: string = nls.localize('markers.panel.no.problems.build', "No problems have been detected in the workspace so far."); - public static MARKERS_PANEL_NO_PROBLEMS_FILTERS: string = nls.localize('markers.panel.no.problems.filters', "No results found with provided filter criteria"); + public static MARKERS_PANEL_NO_PROBLEMS_FILTERS: string = nls.localize('markers.panel.no.problems.filters', "No results found with provided filter criteria."); + public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "No results found. Review your files exclusion setting."); + public static MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.useFilesExclude', "Filter using Files Exclude Setting"); + public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.donotUseFilesExclude', "Do not use Files Exclude Setting"); public static MARKERS_PANEL_ACTION_TOOLTIP_FILTER: string = nls.localize('markers.panel.action.filter', "Filter Problems"); - public static MARKERS_PANEL_FILTER_PLACEHOLDER: string = nls.localize('markers.panel.filter.placeholder', "Filter by type or text"); + public static MARKERS_PANEL_FILTER_ARIA_LABEL: string = nls.localize('markers.panel.filter.ariaLabel', "Filter Problems"); + public static MARKERS_PANEL_FILTER_PLACEHOLDER: string = nls.localize('markers.panel.filter.placeholder', "Filter by text, include/exclude file patterns. Examples: some text, **/*.ts, !**/node_modules/**"); public static MARKERS_PANEL_FILTER_ERRORS: string = nls.localize('markers.panel.filter.errors', "errors"); public static MARKERS_PANEL_FILTER_WARNINGS: string = nls.localize('markers.panel.filter.warnings', "warnings"); public static MARKERS_PANEL_FILTER_INFOS: string = nls.localize('markers.panel.filter.infos', "infos"); From 485a469b94b55f2af7e4b55eadc2bfe03d2a7639 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 Apr 2018 18:37:27 +0200 Subject: [PATCH 0612/1070] fix handleLocalStorage logic --- src/vs/code/electron-main/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 72ccf412cb8..f9004812666 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -329,7 +329,7 @@ export class CodeApplication { return exists(localStorageLevelDB).then(localStorageLevelDBExists => { return TPromise.join([ localStorageBackupFileExists ? unlink(localStorageBackupFile) : TPromise.as(null), - localStorageJournalBackupFile ? unlink(localStorageJournalBackupFile) : TPromise.as(null), + localStorageJournalBackupFileExists ? unlink(localStorageJournalBackupFile) : TPromise.as(null), localStorageLevelDBExists ? del(localStorageLevelDB) : TPromise.as(null) ]); }); From d0f6325130ae48fc6a087de134254f5749a1ee58 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 11 Apr 2018 10:04:23 -0700 Subject: [PATCH 0613/1070] Fix initial terminal API state --- .../api/electron-browser/mainThreadTerminalService.ts | 8 +++++++- src/vs/workbench/parts/terminal/common/terminal.ts | 2 ++ .../parts/terminal/electron-browser/terminalInstance.ts | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 51cd24cb54c..e5ad8960095 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -23,13 +23,19 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostTerminalService); this._toDispose = []; this._toDispose.push(terminalService.onInstanceCreated((terminalInstance) => { - // Delay this message so the TerminalInstance constructor has a change to finish and + // Delay this message so the TerminalInstance constructor has a chance to finish and // return the ID normally to the extension host. The ID that is passed here will be used // to register non-extension API terminals in the extension host. setTimeout(() => this._onTerminalOpened(terminalInstance), 100); })); this._toDispose.push(terminalService.onInstanceDisposed((terminalInstance) => this._onTerminalDisposed(terminalInstance))); this._toDispose.push(terminalService.onInstanceProcessIdReady((terminalInstance) => this._onTerminalProcessIdReady(terminalInstance))); + + // Set initial ext host state + this.terminalService.terminalInstances.forEach(t => { + this._onTerminalOpened(t); + t.processReady.then(() => this._onTerminalProcessIdReady(t)); + }); } public dispose(): void { diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 2fcfe1c89b7..079e4ac86d7 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -235,6 +235,8 @@ export interface ITerminalInstance { onProcessIdReady: Event; + processReady: TPromise; + /** * The title of the terminal. This is either title or the process currently running or an * explicit name given to the terminal instance through the extension API. diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index a7f25db2960..2333fd8b76e 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -107,7 +107,9 @@ export class TerminalInstance implements ITerminalInstance { public disableLayout: boolean; public get id(): number { return this._id; } + // TODO: Ideally processId would be merged into processReady public get processId(): number { return this._processId; } + public get processReady(): TPromise { return this._processReady; } public get onDisposed(): Event { return this._onDisposed.event; } public get onFocused(): Event { return this._onFocused.event; } public get onProcessIdReady(): Event { return this._onProcessIdReady.event; } From 27cd6f537ea29aae0f75783d312c2e1a48218636 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 11 Apr 2018 10:21:32 -0700 Subject: [PATCH 0614/1070] Allow processId and name access on disposed API Terminals --- src/vs/workbench/api/node/extHostTerminalService.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index b6026d73c0c..d45b8545b09 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -51,12 +51,10 @@ export class ExtHostTerminal implements vscode.Terminal { } public get name(): string { - this._checkDisposed(); return this._name; } public get processId(): Thenable { - this._checkDisposed(); return this._pidPromise; } From 4f626cf21c4954802864a0da27ae7d2759023710 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 11 Apr 2018 10:23:29 -0700 Subject: [PATCH 0615/1070] Remove obsolete TODOs --- src/vs/workbench/api/node/extHostTerminalService.ts | 4 ---- .../workbench/parts/terminal/electron-browser/terminalTab.ts | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index d45b8545b09..4e993934fd2 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -149,9 +149,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { this._onDidCloseTerminal.fire(terminal); } - // TOOD: How do we set PID - // TODO: Make sure both API terminals and non-API terminals are created correctly - // TODO: Ensure the terminal that is opened when first launched gets added, I think it's set before the ext host is ready for it public $acceptTerminalOpened(id: number, name: string): void { let index = this._getTerminalIndexById(id); if (index !== null) { @@ -159,7 +156,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { this._onDidOpenTerminal.fire(this.terminals[index]); return; } - // TODO: Only create a terminal if it doesn't already exist for the ID let terminal = new ExtHostTerminal(this._proxy, name, id); this._terminals.push(terminal); this._onDidOpenTerminal.fire(terminal); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts index 30b324f6b3d..55eb0c497b3 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts @@ -402,8 +402,6 @@ export class TerminalTab extends Disposable implements ITerminalTab { shellLaunchConfig); this._terminalInstances.splice(this._activeInstanceIndex + 1, 0, instance); this._initInstanceListeners(instance); - // TODO: Ensure change event is fired - // TODO: Fire create event on service this._setActiveInstance(instance); if (this._splitPaneContainer) { From ce699ee2034919b14cb91340244e6d552ee3961a Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 11 Apr 2018 10:27:35 -0700 Subject: [PATCH 0616/1070] jsdoc --- src/vs/vscode.proposed.d.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 0647789fcf5..c519b350ef6 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -774,10 +774,16 @@ declare module 'vscode' { export namespace window { /** + * The currently active terminals or an empty array. + * * @readonly */ export let terminals: Terminal[]; + /** + * An [event](#Event) which fires when a terminal has been created, either through the + * [createTerminal](#window.createTerminal) API or commands. + */ export const onDidOpenTerminal: Event; } From 8cb7e80544e8fc637687888abbcf9cdec1f4e036 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 11 Apr 2018 11:49:02 -0700 Subject: [PATCH 0617/1070] Split out `Webview` from `WebviewEditor` in proposed API (#47370) * Split out `Webview` from `WebviewEditor` in API **Problem** The current proposed `Webview` interface has a few methods and properties that are very editor specific, such as `.reveal` and `.onDidChangeViewState`. These properies will not make sense if we ever allow webview to be displayed in other locations, such as in widgets **Proposal** Split the concepts of a `Webview` and of a `WebveiwEditor`. A webview is the html content itself. A `WebviewEditor` is an editor that displays a `Webview` This would allow us to easily add other types of `Webview` owning objects in the future without having to document that some methods only apply when a webview is used as an editor vs as a widget --- .../src/features/preview.ts | 36 ++-- .../src/features/previewManager.ts | 12 +- src/vs/vscode.proposed.d.ts | 162 ++++++++++-------- .../api/electron-browser/mainThreadWebview.ts | 2 +- src/vs/workbench/api/node/extHost.api.impl.ts | 6 +- src/vs/workbench/api/node/extHost.protocol.ts | 4 +- src/vs/workbench/api/node/extHostWebview.ts | 136 ++++++++++----- .../electron-browser/webviewEditorService.ts | 2 +- .../api/extHostWebview.test.ts | 18 +- 9 files changed, 230 insertions(+), 148 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index bdf8134fc73..9d48d782ec0 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -20,7 +20,7 @@ export class MarkdownPreview { public static viewType = 'markdown.preview'; - private readonly webview: vscode.Webview; + private readonly editor: vscode.WebviewEditor; private throttleTimer: any; private line: number | undefined = undefined; private readonly disposables: vscode.Disposable[] = []; @@ -32,7 +32,7 @@ export class MarkdownPreview { public static async revive( - webview: vscode.Webview, + webview: vscode.WebviewEditor, state: any, contentProvider: MarkdownContentProvider, previewConfigurations: MarkdownPreviewConfigurationManager, @@ -69,7 +69,7 @@ export class MarkdownPreview { topmostLineMonitor: MarkdownFileTopmostLineMonitor, contributions: MarkdownContributions ): MarkdownPreview { - const webview = vscode.window.createWebview( + const webview = vscode.window.createWebviewEditor( MarkdownPreview.viewType, MarkdownPreview.getPreviewTitle(resource, locked), previewColumn, { @@ -90,7 +90,7 @@ export class MarkdownPreview { } private constructor( - webview: vscode.Webview, + webview: vscode.WebviewEditor, private _resource: vscode.Uri, public locked: boolean, private readonly contentProvider: MarkdownContentProvider, @@ -98,17 +98,17 @@ export class MarkdownPreview { private readonly logger: Logger, topmostLineMonitor: MarkdownFileTopmostLineMonitor ) { - this.webview = webview; + this.editor = webview; - this.webview.onDidDispose(() => { + this.editor.onDidDispose(() => { this.dispose(); }, null, this.disposables); - this.webview.onDidChangeViewState(e => { + this.editor.onDidChangeViewState(e => { this._onDidChangeViewStateEmitter.fire(e); }, null, this.disposables); - this.webview.onDidReceiveMessage(e => { + this.editor.webview.onDidReceiveMessage(e => { if (e.source !== this._resource.toString()) { return; } @@ -155,7 +155,7 @@ export class MarkdownPreview { private readonly _onDisposeEmitter = new vscode.EventEmitter(); public readonly onDispose = this._onDisposeEmitter.event; - private readonly _onDidChangeViewStateEmitter = new vscode.EventEmitter(); + private readonly _onDidChangeViewStateEmitter = new vscode.EventEmitter(); public readonly onDidChangeViewState = this._onDidChangeViewStateEmitter.event; public get resource(): vscode.Uri { @@ -180,7 +180,7 @@ export class MarkdownPreview { this._onDisposeEmitter.dispose(); this._onDidChangeViewStateEmitter.dispose(); - this.webview.dispose(); + this.editor.dispose(); disposeAll(this.disposables); } @@ -224,15 +224,15 @@ export class MarkdownPreview { } public get viewColumn(): vscode.ViewColumn | undefined { - return this.webview.viewColumn; + return this.editor.viewColumn; } public isPreviewOf(resource: vscode.Uri): boolean { return this._resource.fsPath === resource.fsPath; } - public isWebviewOf(webview: vscode.Webview): boolean { - return this.webview === webview; + public isWebviewOf(webview: vscode.WebviewEditor): boolean { + return this.editor === webview; } public matchesResource( @@ -256,12 +256,12 @@ export class MarkdownPreview { } public reveal(viewColumn: vscode.ViewColumn) { - this.webview.reveal(viewColumn); + this.editor.reveal(viewColumn); } public toggleLock() { this.locked = !this.locked; - this.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); + this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); } private static getPreviewTitle(resource: vscode.Uri, locked: boolean): string { @@ -293,7 +293,7 @@ export class MarkdownPreview { private postMessage(msg: any) { if (!this._disposed) { - this.webview.postMessage(msg); + this.editor.webview.postMessage(msg); } } @@ -315,8 +315,8 @@ export class MarkdownPreview { this.currentVersion = { resource, version: document.version }; const content = await this.contentProvider.provideTextDocumentContent(document, this.previewConfigurations, this.line); if (this._resource === resource) { - this.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); - this.webview.html = content; + this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); + this.editor.webview.html = content; } } diff --git a/extensions/markdown-language-features/src/features/previewManager.ts b/extensions/markdown-language-features/src/features/previewManager.ts index 3f458a7fa91..e64a1f1b400 100644 --- a/extensions/markdown-language-features/src/features/previewManager.ts +++ b/extensions/markdown-language-features/src/features/previewManager.ts @@ -14,7 +14,7 @@ import { isMarkdownFile } from '../util/file'; import { MarkdownPreviewConfigurationManager } from './previewConfig'; import { MarkdownContributions } from '../markdownExtensions'; -export class MarkdownPreviewManager implements vscode.WebviewSerializer { +export class MarkdownPreviewManager implements vscode.WebviewEditorSerializer { private static readonly markdownPreviewActiveContextKey = 'markdownPreviewFocus'; private readonly topmostLineMonitor = new MarkdownFileTopmostLineMonitor(); @@ -36,7 +36,7 @@ export class MarkdownPreviewManager implements vscode.WebviewSerializer { } }, null, this.disposables); - this.disposables.push(vscode.window.registerWebviewSerializer(MarkdownPreview.viewType, this)); + this.disposables.push(vscode.window.registerWebviewEditorSerializer(MarkdownPreview.viewType, this)); } public dispose(): void { @@ -88,8 +88,8 @@ export class MarkdownPreviewManager implements vscode.WebviewSerializer { } } - public async deserializeWebview( - webview: vscode.Webview, + public async deserializeWebviewEditor( + webview: vscode.WebviewEditor, state: any ): Promise { const preview = await MarkdownPreview.revive( @@ -103,8 +103,8 @@ export class MarkdownPreviewManager implements vscode.WebviewSerializer { this.registerPreview(preview); } - public async serializeWebview( - webview: vscode.Webview, + public async serializeWebviewEditor( + webview: vscode.WebviewEditor, ): Promise { const preview = this.previews.find(preview => preview.isWebviewOf(webview)); return preview ? preview.state : undefined; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 392b4cf9ab9..cbf65a404c4 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -593,28 +593,6 @@ declare module 'vscode' { */ readonly enableCommandUris?: boolean; - /** - * Should the find widget be enabled in the webview? - * - * Defaults to false. - */ - readonly enableFindWidget?: boolean; - - /** - * Should the webview's context be kept around even when the webview is no longer visible? - * - * Normally a webview's context is created when the webview becomes visible - * and destroyed when the webview is hidden. Apps that have complex state - * or UI can set the `retainContextWhenHidden` to make VS Code keep the webview - * context around, even when the webview moves to a background tab. When - * the webview becomes visible again, the context is automatically restored - * in the exact same state it was in originally. - * - * `retainContextWhenHidden` has a high memory overhead and should only be used if - * your webview's context cannot be quickly saved and restored. - */ - readonly retainContextWhenHidden?: boolean; - /** * Root paths from which the webview can load local (filesystem) resources using the `vscode-resource:` scheme. * @@ -625,20 +603,10 @@ declare module 'vscode' { readonly localResourceRoots?: Uri[]; } - export interface WebviewOnDidChangeViewStateEvent { - readonly viewColumn: ViewColumn; - readonly active: boolean; - } - /** * A webview displays html content, like an iframe. */ export interface Webview { - /** - * The type of the webview, such as `'markdown.preview'` - */ - readonly viewType: string; - /** * Content settings for the webview. */ @@ -656,26 +624,11 @@ declare module 'vscode' { */ html: string; - /** - * The column in which the webview is showing. - */ - readonly viewColumn?: ViewColumn; - /** * Fired when the webview content posts a message. */ readonly onDidReceiveMessage: Event; - /** - * Fired when the webview is disposed. - */ - readonly onDidDispose: Event; - - /** - * Fired when the webview's view state changes. - */ - readonly onDidChangeViewState: Event; - /** * Post a message to the webview content. * @@ -684,9 +637,77 @@ declare module 'vscode' { * @param message Body of the message. */ postMessage(message: any): Thenable; + } + + /** + * Content settings for a webview editor. + */ + export interface WebviewEditorOptions { + /** + * Should the find widget be enabled in the editor? + * + * Defaults to false. + */ + readonly enableFindWidget?: boolean; /** - * Shows the webview in a given column. + * Should the webview editor's content (iframe) be kept around even when the editor + * is no longer visible? + * + * Normally the editor's html context is created when the editor becomes visible + * and destroyed when it is is hidden. Apps that have complex state + * or UI can set the `retainContextWhenHidden` to make VS Code keep the webview + * context around, even when the webview moves to a background tab. When + * the editor becomes visible again, the context is automatically restored + * in the exact same state it was in originally. + * + * `retainContextWhenHidden` has a high memory overhead and should only be used if + * your editor's context cannot be quickly saved and restored. + */ + readonly retainContextWhenHidden?: boolean; + } + + /** + * An editor that contains a webview. + */ + interface WebviewEditor { + /** + * The type of the webview editor, such as `'markdown.preview'`. + */ + readonly viewType: string; + + /** + * The webview belonging to the editor. + */ + readonly webview: Webview; + + /** + * Content settings for the webview editor. + */ + readonly options: WebviewEditorOptions; + + /** + * The column in which the editor is showing. + */ + readonly viewColumn?: ViewColumn; + + /** + * Fired when the editor's view state changes. + */ + readonly onDidChangeViewState: Event; + + /** + * Fired when the editor is disposed. + * + * This may be because the user closed the editor or because `.dispose()` was + * called on it. + * + * Trying to use the webview after it has been disposed throws an exception. + */ + readonly onDidDispose: Event; + + /** + * Shows the webview editor in a given column. * * A webview may only be in a single column at a time. If it is already showing, this * command moves it to a new column. @@ -694,64 +715,69 @@ declare module 'vscode' { reveal(viewColumn: ViewColumn): void; /** - * Dispose of the the webview. + * Dispose of the webview editor. * * This closes the webview if it showing and disposes of the resources owned by the webview. * Webview are also disposed when the user closes the webview editor. Both cases fire `onDispose` - * event. Trying to use the webview after it has been disposed throws an exception. + * event. */ dispose(): any; } + export interface WebviewEditorOnDidChangeViewStateEvent { + readonly viewColumn: ViewColumn; + readonly active: boolean; + } + /** - * Save and restore webviews that have been persisted when vscode shuts down. + * Save and restore webview editors that have been persisted when vscode shuts down. */ - interface WebviewSerializer { + interface WebviewEditorSerializer { /** - * Save a webview's `state`. + * Save a webview editors's `state`. * - * Called before shutdown. Webview may or may not be visible. + * Called before shutdown. Webview editor may or may not be visible. * - * @param webview Webview to serialize. + * @param webviewEditor Webview editor to serialize. * * @returns JSON serializable state blob. */ - serializeWebview(webview: Webview): Thenable; + serializeWebviewEditor(webviewEditor: WebviewEditor): Thenable; /** - * Restore a webview from its `state`. + * Restore a webview editor from its `state`. * * Called when a serialized webview first becomes active. * - * @param webview Webview to restore. The serializer should take ownership of this webview. + * @param webviewEditor Webview editor to restore. The serializer should take ownership of this editor. * @param state Persisted state. */ - deserializeWebview(webview: Webview, state: any): Thenable; + deserializeWebviewEditor(webviewEditor: WebviewEditor, state: any): Thenable; } namespace window { /** - * Create and show a new webview. + * Create and show a new webview editor. * - * @param viewType Identifies the type of the webview. + * @param viewType Identifies the type of the webview editor. * @param title Title of the webview. - * @param column Editor column to show the new webview in. - * @param options Content settings for the webview. + * @param column Editor column to show the new webview editor in. + * @param editorOptions Settings for the webview editor. */ - export function createWebview(viewType: string, title: string, column: ViewColumn, options: WebviewOptions): Webview; + export function createWebviewEditor(viewType: string, title: string, column: ViewColumn, options: WebviewEditorOptions & WebviewOptions): WebviewEditor; /** - * Registers a webview serializer. + * Registers a webview editor serializer. * * Extensions that support reviving should have an `"onView:viewType"` activation method and - * make sure that `registerWebviewSerializer` is called during activation. + * make sure that `registerWebviewEditorSerializer` is called during activation. * * Only a single serializer may be registered at a time for a given `viewType`. * - * @param viewType Type of the webview that can be serialized. + * @param viewType Type of the webview editor that can be serialized. * @param reviver Webview serializer. */ - export function registerWebviewSerializer(viewType: string, reviver: WebviewSerializer): Disposable; + export function registerWebviewEditorSerializer(viewType: string, reviver: WebviewEditorSerializer): Disposable; } //#endregion diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 0bf8ddedefa..06d13f379f8 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -129,7 +129,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._webviews.set(handle, webview); webview._events = this.createWebviewEventDelegate(handle); - return this._proxy.$deserializeWebview(handle, webview.state.viewType, webview.state.state, webview.position, webview.options) + return this._proxy.$deserializeWebview(handle, webview.state.viewType, webview.getTitle(), webview.state.state, webview.position, webview.options) .then(undefined, () => { webview.html = MainThreadWebviews.getDeserializationFailedContents(viewType); }); diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index fb844f52ef5..e25283c3f7c 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -416,11 +416,11 @@ export function createApiFactory( registerDecorationProvider: proposedApiFunction(extension, (provider: vscode.DecorationProvider) => { return extHostDecorations.registerDecorationProvider(provider, extension.id); }), - createWebview: proposedApiFunction(extension, (viewType: string, title: string, column: vscode.ViewColumn, options: vscode.WebviewOptions) => { + createWebviewEditor: proposedApiFunction(extension, (viewType: string, title: string, column: vscode.ViewColumn, options: vscode.WebviewEditorOptions & vscode.WebviewOptions) => { return extHostWebviews.createWebview(viewType, title, column, options, extension.extensionFolderPath); }), - registerWebviewSerializer: proposedApiFunction(extension, (viewType: string, serializer: vscode.WebviewSerializer) => { - return extHostWebviews.registerWebviewSerializer(viewType, serializer); + registerWebviewEditorSerializer: proposedApiFunction(extension, (viewType: string, serializer: vscode.WebviewEditorSerializer) => { + return extHostWebviews.registerWebviewEditorSerializer(viewType, serializer); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 3c4042cd144..f7a1a1d069a 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -350,7 +350,7 @@ export interface MainThreadTelemetryShape extends IDisposable { export type WebviewHandle = string; export interface MainThreadWebviewsShape extends IDisposable { - $createWebview(handle: WebviewHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewOptions, extensionFolderPath: string): void; + $createWebview(handle: WebviewHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewEditorOptions & vscode.WebviewOptions, extensionFolderPath: string): void; $disposeWebview(handle: WebviewHandle): void; $reveal(handle: WebviewHandle, column: EditorPosition): void; $setTitle(handle: WebviewHandle, value: string): void; @@ -365,7 +365,7 @@ export interface ExtHostWebviewsShape { $onMessage(handle: WebviewHandle, message: any): void; $onDidChangeWeviewViewState(handle: WebviewHandle, active: boolean, position: EditorPosition): void; $onDidDisposeWeview(handle: WebviewHandle): Thenable; - $deserializeWebview(newWebviewHandle: WebviewHandle, viewType: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable; + $deserializeWebview(newWebviewHandle: WebviewHandle, viewType: string, title: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable; $serializeWebview(webviewHandle: WebviewHandle): Thenable; } diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index f706dd2a7d7..c834a803153 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -12,58 +12,35 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { Disposable } from './extHostTypes'; export class ExtHostWebview implements vscode.Webview { - private readonly _handle: WebviewHandle; - private readonly _viewType: string; private readonly _proxy: MainThreadWebviewsShape; private _title: string; private _html: string; private _options: vscode.WebviewOptions; private _isDisposed: boolean = false; - private _viewColumn: vscode.ViewColumn; - private _active: boolean; public readonly onMessageEmitter = new Emitter(); public readonly onDidReceiveMessage: Event = this.onMessageEmitter.event; - public readonly onDisposeEmitter = new Emitter(); - public readonly onDidDispose: Event = this.onDisposeEmitter.event; - - public readonly onDidChangeViewStateEmitter = new Emitter(); - public readonly onDidChangeViewState: Event = this.onDidChangeViewStateEmitter.event; + public readonly onDidChangeViewStateEmitter = new Emitter(); + public readonly onDidChangeViewState: Event = this.onDidChangeViewStateEmitter.event; constructor( handle: WebviewHandle, proxy: MainThreadWebviewsShape, - viewType: string, - viewColumn: vscode.ViewColumn, + title: string, options: vscode.WebviewOptions ) { this._handle = handle; this._proxy = proxy; - this._viewType = viewType; - this._viewColumn = viewColumn; + this._title = title; this._options = options; } - public dispose() { - if (this._isDisposed) { - return; - } - - this._isDisposed = true; - this._proxy.$disposeWebview(this._handle); - - this.onDisposeEmitter.dispose(); - this.onMessageEmitter.dispose(); + dispose() { this.onDidChangeViewStateEmitter.dispose(); } - get viewType(): string { - this.assertNotDisposed(); - return this._viewType; - } - get title(): string { this.assertNotDisposed(); return this._title; @@ -95,6 +72,84 @@ export class ExtHostWebview implements vscode.Webview { return this._options; } + public postMessage(message: any): Thenable { + this.assertNotDisposed(); + return this._proxy.$sendMessage(this._handle, message); + } + + public reveal(viewColumn: vscode.ViewColumn): void { + this.assertNotDisposed(); + this._proxy.$reveal(this._handle, typeConverters.fromViewColumn(viewColumn)); + } + + private assertNotDisposed() { + if (this._isDisposed) { + throw new Error('Webview is disposed'); + } + } +} + +export class ExtHostWebviewEditor implements vscode.WebviewEditor { + + private readonly _handle: WebviewHandle; + private readonly _viewType: string; + private readonly _options: vscode.WebviewEditorOptions; + private readonly _proxy: MainThreadWebviewsShape; + private _isDisposed: boolean = false; + private _viewColumn: vscode.ViewColumn; + private _active: boolean; + + public readonly onDisposeEmitter = new Emitter(); + public readonly onDidDispose: Event = this.onDisposeEmitter.event; + + public readonly onDidChangeViewStateEmitter = new Emitter(); + public readonly onDidChangeViewState: Event = this.onDidChangeViewStateEmitter.event; + + private _webview: ExtHostWebview; + + constructor( + handle: WebviewHandle, + proxy: MainThreadWebviewsShape, + viewType: string, + title: string, + viewColumn: vscode.ViewColumn, + editorOptions: vscode.WebviewEditorOptions, + webviewOptions: vscode.WebviewOptions + ) { + this._handle = handle; + this._proxy = proxy; + this._viewType = viewType; + this._options = editorOptions; + this._viewColumn = viewColumn; + this._webview = new ExtHostWebview(handle, proxy, title, webviewOptions); + } + + public dispose() { + if (this._isDisposed) { + return; + } + + this._isDisposed = true; + this._proxy.$disposeWebview(this._handle); + + this.onDisposeEmitter.dispose(); + this.onDidChangeViewStateEmitter.dispose(); + } + + get webview() { + this.assertNotDisposed(); + return this._webview; + } + + get viewType(): string { + this.assertNotDisposed(); + return this._viewType; + } + + get options() { + return this._options; + } + get viewColumn(): vscode.ViewColumn { this.assertNotDisposed(); return this._viewColumn; @@ -137,8 +192,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { private readonly _proxy: MainThreadWebviewsShape; - private readonly _webviews = new Map(); - private readonly _serializers = new Map(); + private readonly _webviews = new Map(); + private readonly _serializers = new Map(); constructor( mainContext: IMainContext @@ -150,20 +205,20 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { viewType: string, title: string, viewColumn: vscode.ViewColumn, - options: vscode.WebviewOptions, + options: vscode.WebviewEditorOptions & vscode.WebviewOptions, extensionFolderPath: string - ): vscode.Webview { + ): vscode.WebviewEditor { const handle = ExtHostWebviews.webviewHandlePool++ + ''; this._proxy.$createWebview(handle, viewType, title, typeConverters.fromViewColumn(viewColumn), options, extensionFolderPath); - const webview = new ExtHostWebview(handle, this._proxy, viewType, viewColumn, options); + const webview = new ExtHostWebviewEditor(handle, this._proxy, viewType, title, viewColumn, options, options); this._webviews.set(handle, webview); return webview; } - registerWebviewSerializer( + registerWebviewEditorSerializer( viewType: string, - serializer: vscode.WebviewSerializer + serializer: vscode.WebviewEditorSerializer ): vscode.Disposable { if (this._serializers.has(viewType)) { throw new Error(`Serializer for '${viewType}' already registered`); @@ -181,7 +236,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { $onMessage(handle: WebviewHandle, message: any): void { const webview = this.getWebview(handle); if (webview) { - webview.onMessageEmitter.fire(message); + webview.webview.onMessageEmitter.fire(message); } } @@ -209,6 +264,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { $deserializeWebview( webviewHandle: WebviewHandle, viewType: string, + title: string, state: any, position: Position, options: vscode.WebviewOptions @@ -218,9 +274,9 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return TPromise.wrapError(new Error(`No serializer found for '${viewType}'`)); } - const revivedWebview = new ExtHostWebview(webviewHandle, this._proxy, viewType, typeConverters.toViewColumn(position), options); + const revivedWebview = new ExtHostWebviewEditor(webviewHandle, this._proxy, viewType, title, typeConverters.toViewColumn(position), options as vscode.WebviewEditorOptions, options as vscode.WebviewOptions); this._webviews.set(webviewHandle, revivedWebview); - return serializer.deserializeWebview(revivedWebview, state); + return serializer.deserializeWebviewEditor(revivedWebview, state); } $serializeWebview( @@ -236,10 +292,10 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return TPromise.as(undefined); } - return serialzer.serializeWebview(webview); + return serialzer.serializeWebviewEditor(webview); } - private getWebview(handle: WebviewHandle): ExtHostWebview | undefined { + private getWebview(handle: WebviewHandle): ExtHostWebviewEditor | undefined { return this._webviews.get(handle); } } \ No newline at end of file diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts index f271757a4f4..c3430389305 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts @@ -67,7 +67,7 @@ export interface WebviewEvents { onDidClickLink?(link: URI, options: vscode.WebviewOptions): void; } -export interface WebviewInputOptions extends vscode.WebviewOptions { +export interface WebviewInputOptions extends vscode.WebviewOptions, vscode.WebviewEditorOptions { tryRestoreScrollPosition?: boolean; } diff --git a/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts b/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts index d4bb00a2bc4..196fe045ae7 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts @@ -21,12 +21,12 @@ suite('ExtHostWebview', function () { const shape = createNoopMainThreadWebviews(); const extHostWebviews = new ExtHostWebviews(SingleProxyRPCProtocol(shape)); - let lastInvokedDeserializer: vscode.WebviewSerializer | undefined = undefined; + let lastInvokedDeserializer: vscode.WebviewEditorSerializer | undefined = undefined; - class NoopSerializer implements vscode.WebviewSerializer { - async serializeWebview(webview: vscode.Webview): Promise { /* noop */ } + class NoopSerializer implements vscode.WebviewEditorSerializer { + async serializeWebviewEditor(webview: vscode.WebviewEditor): Promise { /* noop */ } - async deserializeWebview(webview: vscode.Webview, state: any): Promise { + async deserializeWebviewEditor(webview: vscode.WebviewEditor, state: any): Promise { lastInvokedDeserializer = this; } } @@ -34,20 +34,20 @@ suite('ExtHostWebview', function () { const serializerA = new NoopSerializer(); const serializerB = new NoopSerializer(); - const serializerARegistration = extHostWebviews.registerWebviewSerializer(viewType, serializerA); + const serializerARegistration = extHostWebviews.registerWebviewEditorSerializer(viewType, serializerA); - await extHostWebviews.$deserializeWebview('x', viewType, {}, EditorPosition.ONE, {}); + await extHostWebviews.$deserializeWebview('x', viewType, 'title', {}, EditorPosition.ONE, {}); assert.strictEqual(lastInvokedDeserializer, serializerA); assert.throws( - () => extHostWebviews.registerWebviewSerializer(viewType, serializerB), + () => extHostWebviews.registerWebviewEditorSerializer(viewType, serializerB), 'Should throw when registering two serializers for the same view'); serializerARegistration.dispose(); - extHostWebviews.registerWebviewSerializer(viewType, serializerB); + extHostWebviews.registerWebviewEditorSerializer(viewType, serializerB); - await extHostWebviews.$deserializeWebview('x', viewType, {}, EditorPosition.ONE, {}); + await extHostWebviews.$deserializeWebview('x', viewType, 'title', {}, EditorPosition.ONE, {}); assert.strictEqual(lastInvokedDeserializer, serializerB); }); }); From 5a2a746bd97f7f0627b432ea720d2b6e22d8e8dc Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 11 Apr 2018 22:52:49 +0200 Subject: [PATCH 0618/1070] #22289 Show messages with actions --- .../markers/electron-browser/markersPanel.ts | 57 +++++++++++++------ .../electron-browser/markersPanelActions.ts | 15 ++++- .../electron-browser/media/markers.css | 7 ++- .../markers/electron-browser/messages.ts | 2 +- 4 files changed, 57 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts index 492fc1a1984..a91fc30f143 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts @@ -32,6 +32,7 @@ import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-br import { SimpleFileResourceDragAndDrop } from 'vs/workbench/browser/dnd'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { Scope } from 'vs/workbench/common/memento'; +import { localize } from 'vs/nls'; export class MarkersPanel extends Panel { @@ -51,7 +52,6 @@ export class MarkersPanel extends Panel { private treeContainer: HTMLElement; private messageBoxContainer: HTMLElement; - private messageBox: HTMLElement; private panelSettings: any; private currentResourceGotAddedToMarkersData: boolean = false; @@ -116,7 +116,7 @@ export class MarkersPanel extends Panel { this.highlightCurrentSelectedMarkerRange(); this.autoReveal(true); } else { - this.messageBox.focus(); + this.messageBoxContainer.focus(); } } @@ -188,8 +188,6 @@ export class MarkersPanel extends Panel { private createMessageBox(parent: HTMLElement): void { this.messageBoxContainer = dom.append(parent, dom.$('.message-box-container')); - this.messageBox = dom.append(this.messageBoxContainer, dom.$('span')); - this.messageBox.setAttribute('tabindex', '0'); } private createTree(parent: HTMLElement): void { @@ -231,7 +229,7 @@ export class MarkersPanel extends Panel { private createActions(): void { this.collapseAllAction = this.instantiationService.createInstance(CollapseAllAction, this.tree, true); const filterAction = this.instantiationService.createInstance(FilterAction); - this.filterInputActionItem = this.instantiationService.createInstance(FilterInputActionItem, this.panelSettings['filter'], this.panelSettings['filterHistory'] || [], filterAction); + this.filterInputActionItem = this.instantiationService.createInstance(FilterInputActionItem, this.panelSettings['filter'] || '', this.panelSettings['filterHistory'] || [], filterAction); this.filterByFilesExcludeAction = new FilterByFilesExcludeAction(this.panelSettings['useFilesExclude']); this.actions = [filterAction, this.filterByFilesExcludeAction, this.collapseAllAction]; } @@ -300,21 +298,44 @@ export class MarkersPanel extends Panel { } private renderMessage(): void { - this.messageBox.textContent = this.getMessage(); - dom.toggleClass(this.messageBoxContainer, 'hidden', this.markersWorkbenchService.markersModel.hasFilteredResources()); + const markersModel = this.markersWorkbenchService.markersModel; + const hasFilteredResources = markersModel.hasFilteredResources(); + dom.clearNode(this.messageBoxContainer); + dom.toggleClass(this.messageBoxContainer, 'hidden', hasFilteredResources); + if (!hasFilteredResources) { + if (markersModel.hasResources()) { + if (markersModel.filterOptions.filter) { + this.renderFilteredByFilterMessage(this.messageBoxContainer); + } else { + this.renderFilteredByFilesExcludeMessage(this.messageBoxContainer); + } + } else { + this.renderNoProblemsMessage(this.messageBoxContainer); + } + } } - private getMessage(): string { - if (this.markersWorkbenchService.markersModel.hasFilteredResources()) { - return ''; - } - if (this.markersWorkbenchService.markersModel.hasResources()) { - if (!this.markersWorkbenchService.markersModel.filterOptions.filter) { - return Messages.MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER; - } - return Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS; - } - return Messages.MARKERS_PANEL_NO_PROBLEMS_BUILT; + private renderFilteredByFilesExcludeMessage(container: HTMLElement) { + const span1 = dom.append(container, dom.$('span')); + span1.textContent = Messages.MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER; + const link = dom.append(container, dom.$('a.messageAction')); + link.textContent = localize('disableFilesExclude', "Disable Files Exclude."); + link.setAttribute('tabIndex', '0'); + dom.addDisposableListener(link, dom.EventType.CLICK, () => this.filterByFilesExcludeAction.checked = false); + } + + private renderFilteredByFilterMessage(container: HTMLElement) { + const span1 = dom.append(container, dom.$('span')); + span1.textContent = Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS; + const link = dom.append(container, dom.$('a.messageAction')); + link.textContent = localize('clearFilter', "Clear Filter."); + link.setAttribute('tabIndex', '0'); + dom.addDisposableListener(link, dom.EventType.CLICK, () => this.filterInputActionItem.clear()); + } + + private renderNoProblemsMessage(container: HTMLElement) { + const span = dom.append(container, dom.$('span')); + span.textContent = Messages.MARKERS_PANEL_NO_PROBLEMS_BUILT; } private autoExpand(): void { diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts index df7193c9e30..763965a94d5 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts @@ -27,7 +27,8 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { HistoryNavigator } from 'vs/base/common/history'; import { BaseActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { badgeBackground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; -import { localize } from '../../../../nls'; +import { localize } from 'vs/nls'; +import { isUndefined } from 'vs/base/common/types'; export class ToggleMarkersPanelAction extends TogglePanelAction { @@ -80,12 +81,16 @@ export class FilterByFilesExcludeAction extends Action { super(FilterByFilesExcludeAction.ID, checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE, 'markers-panel-action-files-exclude', true); this.toDispose.push(this._onDidCheck); this.checked = checked; + this.toDispose.push(this.onDidChange(e => { + if (e && !isUndefined(e.checked)) { + this._onDidCheck.fire(this.checked); + } + })); } public run(): TPromise { this.checked = !this.checked; this.tooltip = this.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE; - this._onDidCheck.fire(this.checked); return TPromise.as(null); } @@ -140,6 +145,10 @@ export class FilterInputActionItem extends BaseActionItem { this.createBadge(this.container); } + clear(): void { + this.filterInputBox.value = ''; + } + getFilterText(): string { return this.filterText; } @@ -194,7 +203,7 @@ export class FilterInputActionItem extends BaseActionItem { private updateBadge(): void { const { total, filtered } = this.markersWorkbenchService.markersModel.stats(); - DOM.toggleClass(this.filterBadge, 'hidden', total === filtered); + DOM.toggleClass(this.filterBadge, 'hidden', total === filtered || filtered === 0); this.filterBadge.textContent = localize('showing filtered problems', "Showing {0} of {1}", filtered, total); this.filterInputBox.inputElement.style.paddingRight = DOM.getTotalWidth(this.filterBadge) + 'px'; } diff --git a/src/vs/workbench/parts/markers/electron-browser/media/markers.css b/src/vs/workbench/parts/markers/electron-browser/media/markers.css index afcf024db82..e5fecf0b02e 100644 --- a/src/vs/workbench/parts/markers/electron-browser/media/markers.css +++ b/src/vs/workbench/parts/markers/electron-browser/media/markers.css @@ -36,6 +36,7 @@ right: 4px; } +.markers-panel-action-filter > .markers-panel-filter-badge.hidden, .markers-panel-action-filter > .markers-panel-filter-badge.small { display: none; } @@ -49,8 +50,10 @@ padding-left: 20px; } -.markers-panel .markers-panel-container .message-box-container span:focus { - outline: none; +.markers-panel .markers-panel-container .message-box-container .messageAction { + margin-left: 4px; + cursor: pointer; + text-decoration: underline; } .markers-panel .markers-panel-container .hidden { diff --git a/src/vs/workbench/parts/markers/electron-browser/messages.ts b/src/vs/workbench/parts/markers/electron-browser/messages.ts index 82eb776dda6..3ddba82d3e5 100644 --- a/src/vs/workbench/parts/markers/electron-browser/messages.ts +++ b/src/vs/workbench/parts/markers/electron-browser/messages.ts @@ -23,7 +23,7 @@ export default class Messages { public static MARKERS_PANEL_NO_PROBLEMS_BUILT: string = nls.localize('markers.panel.no.problems.build', "No problems have been detected in the workspace so far."); public static MARKERS_PANEL_NO_PROBLEMS_FILTERS: string = nls.localize('markers.panel.no.problems.filters', "No results found with provided filter criteria."); - public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "No results found. Review your files exclusion setting."); + public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "All problems are hidden because files exculde filter is enabled."); public static MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.useFilesExclude', "Filter using Files Exclude Setting"); public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.donotUseFilesExclude', "Do not use Files Exclude Setting"); From 93582ce6de0a0a85ce9a8f290defcf6a7bdee7c1 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 11 Apr 2018 14:32:54 -0700 Subject: [PATCH 0619/1070] Fix #47228 - Don't autofix JSON incorrectly when the user has only typed a key and colon --- extensions/configuration-editing/src/extension.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/extensions/configuration-editing/src/extension.ts b/extensions/configuration-editing/src/extension.ts index 4b7b3e678aa..5aa5ebed1eb 100644 --- a/extensions/configuration-editing/src/extension.ts +++ b/extensions/configuration-editing/src/extension.ts @@ -70,7 +70,12 @@ function autoFixSettingsJSON(willSaveEvent: vscode.TextDocumentWillSaveEvent): v onError(error: ParseErrorCode, offset: number, length: number): void { if (error === ParseErrorCode.CommaExpected && lastEndOfSomething > -1) { const fixPosition = document.positionAt(lastEndOfSomething); - edit.insert(document.uri, fixPosition, ','); + + // Don't insert a comma immediately before a : or ' :' + const colonRange = document.getWordRangeAtPosition(fixPosition, / *:/); + if (!colonRange) { + edit.insert(document.uri, fixPosition, ','); + } } } }); From c1b9138a23a6a70a507cadb047ce51a36a281c63 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 11 Apr 2018 23:39:22 +0200 Subject: [PATCH 0620/1070] #22289 Show files exclude filter inside inputbox --- .../markers/electron-browser/markersPanel.ts | 21 ++-- .../electron-browser/markersPanelActions.ts | 108 ++++++++++-------- .../electron-browser/media/markers.css | 46 ++++---- 3 files changed, 95 insertions(+), 80 deletions(-) diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts index a91fc30f143..34c5ce22c69 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts @@ -20,7 +20,7 @@ import { Marker, ResourceMarkers, RelatedInformation } from 'vs/workbench/parts/ import { Controller } from 'vs/workbench/parts/markers/electron-browser/markersTreeController'; import * as Viewer from 'vs/workbench/parts/markers/electron-browser/markersTreeViewer'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { CollapseAllAction, FilterInputActionItem, FilterByFilesExcludeAction, FilterAction } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; +import { CollapseAllAction, MarkersFilterActionItem, MarkersFilterAction } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations'; @@ -47,8 +47,7 @@ export class MarkersPanel extends Panel { private actions: IAction[]; private collapseAllAction: IAction; - private filterInputActionItem: FilterInputActionItem; - private filterByFilesExcludeAction: FilterByFilesExcludeAction; + private filterInputActionItem: MarkersFilterActionItem; private treeContainer: HTMLElement; private messageBoxContainer: HTMLElement; @@ -183,7 +182,7 @@ export class MarkersPanel extends Panel { private updateFilter() { this.autoExpanded = new Set(); - this.markersWorkbenchService.filter({ filterText: this.filterInputActionItem.getFilterText(), useFilesExclude: this.filterByFilesExcludeAction.checked }); + this.markersWorkbenchService.filter({ filterText: this.filterInputActionItem.getFilterText(), useFilesExclude: this.filterInputActionItem.useFilesExclude }); } private createMessageBox(parent: HTMLElement): void { @@ -228,10 +227,9 @@ export class MarkersPanel extends Panel { private createActions(): void { this.collapseAllAction = this.instantiationService.createInstance(CollapseAllAction, this.tree, true); - const filterAction = this.instantiationService.createInstance(FilterAction); - this.filterInputActionItem = this.instantiationService.createInstance(FilterInputActionItem, this.panelSettings['filter'] || '', this.panelSettings['filterHistory'] || [], filterAction); - this.filterByFilesExcludeAction = new FilterByFilesExcludeAction(this.panelSettings['useFilesExclude']); - this.actions = [filterAction, this.filterByFilesExcludeAction, this.collapseAllAction]; + const filterAction = this.instantiationService.createInstance(MarkersFilterAction); + this.filterInputActionItem = this.instantiationService.createInstance(MarkersFilterActionItem, { filterText: this.panelSettings['filter'] || '', filterHistory: this.panelSettings['filterHistory'] || [], useFilesExclude: !!this.panelSettings['useFilesExclude'] }, filterAction); + this.actions = [filterAction, this.collapseAllAction]; } private createListeners(): void { @@ -239,7 +237,6 @@ export class MarkersPanel extends Panel { this.toUnbind.push(this.editorGroupService.onEditorsChanged(this.onEditorsChanged, this)); this.toUnbind.push(this.tree.onDidChangeSelection(() => this.onSelected())); this.toUnbind.push(this.filterInputActionItem.onDidChange(() => this.updateFilter())); - this.toUnbind.push(this.filterByFilesExcludeAction.onDidCheck(() => this.updateFilter())); this.actions.forEach(a => this.toUnbind.push(a)); } @@ -321,7 +318,7 @@ export class MarkersPanel extends Panel { const link = dom.append(container, dom.$('a.messageAction')); link.textContent = localize('disableFilesExclude', "Disable Files Exclude."); link.setAttribute('tabIndex', '0'); - dom.addDisposableListener(link, dom.EventType.CLICK, () => this.filterByFilesExcludeAction.checked = false); + dom.addDisposableListener(link, dom.EventType.CLICK, () => this.filterInputActionItem.useFilesExclude = false); } private renderFilteredByFilterMessage(container: HTMLElement) { @@ -419,7 +416,7 @@ export class MarkersPanel extends Panel { } public getActionItem(action: IAction): IActionItem { - if (action.id === FilterAction.ID) { + if (action.id === MarkersFilterAction.ID) { return this.filterInputActionItem; } return super.getActionItem(action); @@ -429,7 +426,7 @@ export class MarkersPanel extends Panel { // store memento this.panelSettings['filter'] = this.filterInputActionItem.getFilterText(); this.panelSettings['filterHistory'] = this.filterInputActionItem.getFilterHistory(); - this.panelSettings['useFilesExclude'] = this.filterByFilesExcludeAction.checked; + this.panelSettings['useFilesExclude'] = this.filterInputActionItem.useFilesExclude; super.shutdown(); } diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts index 763965a94d5..074b2b70348 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts @@ -20,15 +20,15 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { CollapseAllAction as TreeCollapseAction } from 'vs/base/parts/tree/browser/treeDefaults'; import * as Tree from 'vs/base/parts/tree/browser/tree'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { attachInputBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; +import { attachInputBoxStyler, attachStylerCallback, attachCheckboxStyler } from 'vs/platform/theme/common/styler'; import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-browser/markers'; import { Event, Emitter } from 'vs/base/common/event'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { IDisposable } from 'vs/base/common/lifecycle'; import { HistoryNavigator } from 'vs/base/common/history'; import { BaseActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { badgeBackground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { localize } from 'vs/nls'; -import { isUndefined } from 'vs/base/common/types'; +import { Checkbox } from 'vs/base/browser/ui/checkbox/checkbox'; export class ToggleMarkersPanelAction extends TogglePanelAction { @@ -68,50 +68,24 @@ export class CollapseAllAction extends TreeCollapseAction { } } -export class FilterByFilesExcludeAction extends Action { - - public static readonly ID: string = 'workbench.actions.problems.useFilesExclude'; - - private readonly _onDidCheck: Emitter = new Emitter(); - readonly onDidCheck: Event = this._onDidCheck.event; - - private toDispose: IDisposable[] = []; - - constructor(checked: boolean) { - super(FilterByFilesExcludeAction.ID, checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE, 'markers-panel-action-files-exclude', true); - this.toDispose.push(this._onDidCheck); - this.checked = checked; - this.toDispose.push(this.onDidChange(e => { - if (e && !isUndefined(e.checked)) { - this._onDidCheck.fire(this.checked); - } - })); - } - - public run(): TPromise { - this.checked = !this.checked; - this.tooltip = this.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE; - return TPromise.as(null); - } - - dispose(): void { - this.toDispose = dispose(this.toDispose); - super.dispose(); - } -} - -export class FilterAction extends Action { +export class MarkersFilterAction extends Action { public static readonly ID: string = 'workbench.actions.problems.filter'; constructor() { - super(FilterAction.ID, Messages.MARKERS_PANEL_ACTION_TOOLTIP_FILTER, 'markers-panel-action-filter', true); + super(MarkersFilterAction.ID, Messages.MARKERS_PANEL_ACTION_TOOLTIP_FILTER, 'markers-panel-action-filter', true); } } -export class FilterInputActionItem extends BaseActionItem { +export interface IMarkersFilterActionItemOptions { + filterText: string; + filterHistory: string[]; + useFilesExclude: boolean; +} + +export class MarkersFilterActionItem extends BaseActionItem { private _toDispose: IDisposable[] = []; @@ -122,11 +96,12 @@ export class FilterInputActionItem extends BaseActionItem { private container: HTMLElement; private filterInputBox: InputBox; private filterHistory: HistoryNavigator; + private controlsContainer: HTMLInputElement; private filterBadge: HTMLInputElement; + private filesExcludeFilter: Checkbox; constructor( - private filterText: string, - filterHistory: string[], + private itemOptions: IMarkersFilterActionItemOptions, action: IAction, @IContextViewService private contextViewService: IContextViewService, @IThemeService private themeService: IThemeService, @@ -135,14 +110,15 @@ export class FilterInputActionItem extends BaseActionItem { ) { super(null, action); this.delayedFilterUpdate = new Delayer(500); - this.filterHistory = new HistoryNavigator(filterHistory); + this.filterHistory = new HistoryNavigator(itemOptions.filterHistory || []); } render(container: HTMLElement): void { this.container = container; DOM.addClass(this.container, 'markers-panel-action-filter'); this.createInput(this.container); - this.createBadge(this.container); + this.createControls(this.container); + this.adjustInputBox(); } clear(): void { @@ -150,13 +126,26 @@ export class FilterInputActionItem extends BaseActionItem { } getFilterText(): string { - return this.filterText; + return this.filterInputBox ? this.filterInputBox.value : this.itemOptions.filterText; } getFilterHistory(): string[] { return this.filterHistory.getHistory(); } + get useFilesExclude(): boolean { + return this.filesExcludeFilter ? this.filesExcludeFilter.checked : this.itemOptions.useFilesExclude; + } + + set useFilesExclude(useFilesExclude: boolean) { + if (this.filesExcludeFilter) { + if (this.filesExcludeFilter.checked !== useFilesExclude) { + this.filesExcludeFilter.checked = useFilesExclude; + this._onDidChange.fire(); + } + } + } + toggleLayout(small: boolean) { if (this.container) { DOM.toggleClass(this.container, 'small', small); @@ -170,13 +159,19 @@ export class FilterInputActionItem extends BaseActionItem { ariaLabel: Messages.MARKERS_PANEL_FILTER_ARIA_LABEL }); this._register(attachInputBoxStyler(this.filterInputBox, this.themeService)); - this.filterInputBox.value = this.filterText; + this.filterInputBox.value = this.itemOptions.filterText; this._register(this.filterInputBox.onDidChange(filter => this.delayedFilterUpdate.trigger(() => this.onDidInputChange()))); this._register(DOM.addStandardDisposableListener(this.filterInputBox.inputElement, 'keydown', (keyboardEvent) => this.onInputKeyDown(keyboardEvent, this.filterInputBox))); this._register(DOM.addStandardDisposableListener(container, 'keydown', this.handleKeyboardEvent)); this._register(DOM.addStandardDisposableListener(container, 'keyup', this.handleKeyboardEvent)); } + private createControls(container: HTMLElement): void { + this.controlsContainer = DOM.append(container, DOM.$('.markers-panel-filter-controls')); + this.createBadge(this.controlsContainer); + this.createFilesExcludeCheckbox(this.controlsContainer); + } + private createBadge(container: HTMLElement): void { this.filterBadge = DOM.append(container, DOM.$('.markers-panel-filter-badge')); this._register(attachStylerCallback(this.themeService, { badgeBackground, contrastBorder }, colors => { @@ -189,12 +184,27 @@ export class FilterInputActionItem extends BaseActionItem { this.filterBadge.style.borderStyle = border ? 'solid' : null; this.filterBadge.style.borderColor = border; })); + this.updateBadge(); this._register(this.markersWorkbenchService.onDidChange(() => this.updateBadge())); } + private createFilesExcludeCheckbox(container: HTMLElement): void { + this.filesExcludeFilter = new Checkbox({ + actionClassName: 'markers-panel-filter-filesExclude', + title: this.itemOptions.useFilesExclude ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE, + isChecked: this.itemOptions.useFilesExclude, + onChange: () => { + this.filesExcludeFilter.domNode.title = this.filesExcludeFilter.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE; + this._onDidChange.fire(); + } + }); + this._register(attachCheckboxStyler(this.filesExcludeFilter, this.themeService)); + container.appendChild(this.filesExcludeFilter.domNode); + } + private onDidInputChange() { - this.filterText = this.filterInputBox.value; - if (this.filterText && this.filterText !== this.filterHistory.current()) { + const filterText = this.filterInputBox.value; + if (filterText && filterText !== this.filterHistory.current()) { this.filterHistory.add(this.getFilterText()); } this._onDidChange.fire(); @@ -205,7 +215,11 @@ export class FilterInputActionItem extends BaseActionItem { const { total, filtered } = this.markersWorkbenchService.markersModel.stats(); DOM.toggleClass(this.filterBadge, 'hidden', total === filtered || filtered === 0); this.filterBadge.textContent = localize('showing filtered problems', "Showing {0} of {1}", filtered, total); - this.filterInputBox.inputElement.style.paddingRight = DOM.getTotalWidth(this.filterBadge) + 'px'; + this.adjustInputBox(); + } + + private adjustInputBox(): void { + this.filterInputBox.inputElement.style.paddingRight = (DOM.getTotalWidth(this.controlsContainer) || 20) + 'px'; } // Action toolbar is swallowing some keys for action items which should not be for an input box diff --git a/src/vs/workbench/parts/markers/electron-browser/media/markers.css b/src/vs/workbench/parts/markers/electron-browser/media/markers.css index e5fecf0b02e..5e5a917d3de 100644 --- a/src/vs/workbench/parts/markers/electron-browser/media/markers.css +++ b/src/vs/workbench/parts/markers/electron-browser/media/markers.css @@ -7,7 +7,7 @@ cursor: default; margin: 4px 10px 0 0; min-width: 150px; - max-width: 800px; + max-width: 1000px; } .monaco-action-bar .action-item.markers-panel-action-filter { @@ -27,20 +27,37 @@ border: 1px solid #ddd; } -.markers-panel-action-filter > .markers-panel-filter-badge { - margin: 4px 0px; - padding: 0px 8px; - border-radius: 2px; +.markers-panel-action-filter > .markers-panel-filter-controls { position: absolute; top: 0px; right: 4px; + display: flex; } -.markers-panel-action-filter > .markers-panel-filter-badge.hidden, -.markers-panel-action-filter > .markers-panel-filter-badge.small { +.markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-badge { + margin: 4px 0px; + padding: 0px 8px; + border-radius: 2px; +} + +.markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-badge.hidden, +.markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-badge.small { display: none; } +.markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-filesExclude { + margin: 3px 0 0 3px; +} + +.vs .markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-filesExclude { + background: url('excludeSettings.svg') center center no-repeat; +} + +.vs-dark .markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-filesExclude, +.hc-black .markers-panel-action-filter > .markers-panel-filter-controls > .markers-panel-filter-filesExclude { + background: url('excludeSettings-dark.svg') center center no-repeat; +} + .markers-panel .markers-panel-container { height: 100%; } @@ -141,17 +158,4 @@ .vs-dark .markers-panel .icon.info { background: url('status-info-inverse.svg') center center no-repeat; -} - -.vs .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude { - background: url('excludeSettings.svg') center center no-repeat; -} - -.vs-dark .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude, -.hc-black .monaco-action-bar .action-item .icon.markers-panel-action-files-exclude { - background: url('excludeSettings-dark.svg') center center no-repeat; -} - -.monaco-action-bar .action-item .icon.markers-panel-action-files-exclude:not(.checked) { - opacity: 0.5; -} +} \ No newline at end of file From c17fb0ebffeb68ed8ff54d874c35f3866ac610fe Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 10 Apr 2018 12:38:40 -0700 Subject: [PATCH 0621/1070] temp --- .../css-language-features/.vscode/launch.json | 4 +- .../server/src/cssServerMain.ts | 2 +- .../server/src/pathCompletion.ts | 145 +++++++++++------- .../server/src/modes/pathCompletion.ts | 7 +- 4 files changed, 92 insertions(+), 66 deletions(-) diff --git a/extensions/css-language-features/.vscode/launch.json b/extensions/css-language-features/.vscode/launch.json index 68f7c70e450..43e9880333e 100644 --- a/extensions/css-language-features/.vscode/launch.json +++ b/extensions/css-language-features/.vscode/launch.json @@ -17,8 +17,8 @@ ], "stopOnEntry": false, "sourceMaps": true, - "outFiles": ["${workspaceFolder}/client/out/**/*.js"], - "preLaunchTask": "npm" + "outFiles": ["${workspaceFolder}/client/out/**/*.js"] + // "preLaunchTask": "npm" }, { "name": "Launch Tests", diff --git a/extensions/css-language-features/server/src/cssServerMain.ts b/extensions/css-language-features/server/src/cssServerMain.ts index aba96f5ff6a..77eedcb624d 100644 --- a/extensions/css-language-features/server/src/cssServerMain.ts +++ b/extensions/css-language-features/server/src/cssServerMain.ts @@ -49,7 +49,7 @@ connection.onShutdown(() => { }); let scopedSettingsSupport = false; -let workspaceFolders: WorkspaceFolder[] | undefined; +let workspaceFolders: WorkspaceFolder[]; // After the server has started the client sends an initilize request. The server receives // in the passed params the rootPath of the workspace plus the client capabilities. diff --git a/extensions/css-language-features/server/src/pathCompletion.ts b/extensions/css-language-features/server/src/pathCompletion.ts index 1f8ddfc2df1..9bf9df83e5e 100644 --- a/extensions/css-language-features/server/src/pathCompletion.ts +++ b/extensions/css-language-features/server/src/pathCompletion.ts @@ -10,75 +10,67 @@ import URI from 'vscode-uri'; import { TextDocument, CompletionList, CompletionItemKind, CompletionItem, TextEdit, Range, Position } from 'vscode-languageserver-types'; import { WorkspaceFolder } from 'vscode-languageserver'; -import { ICompletionParticipant, URILiteralCompletionContext } from 'vscode-css-languageservice'; +import { ICompletionParticipant } from 'vscode-css-languageservice'; import { startsWith } from './utils/strings'; export function getPathCompletionParticipant( document: TextDocument, - workspaceFolders: WorkspaceFolder[] | undefined, + workspaceFolders: WorkspaceFolder[], result: CompletionList ): ICompletionParticipant { return { - onURILiteralValue: (context: URILiteralCompletionContext) => { - if (!workspaceFolders || workspaceFolders.length === 0) { - return; - } - const workspaceRoot = resolveWorkspaceRoot(document, workspaceFolders); + onURILiteralValue: ({ position, range, uriValue }) => { + const fullValue = stripQuotes(uriValue); - // Handle quoted values - let uriValue = context.uriValue; - let range = context.range; - if (startsWith(uriValue, `'`) || startsWith(uriValue, `"`)) { - uriValue = uriValue.slice(1, -1); - range = getRangeWithoutQuotes(range); - } + if (shouldDoPathCompletion(fullValue)) { + if (!workspaceFolders || workspaceFolders.length === 0) { + return; + } + const workspaceRoot = resolveWorkspaceRoot(document, workspaceFolders); - const suggestions = providePathSuggestions(uriValue, range, URI.parse(document.uri).fsPath, workspaceRoot); - result.items = [...suggestions, ...result.items]; + const paths = providePaths(fullValue, URI.parse(document.uri).fsPath, workspaceRoot); + result.items = [...paths.map(p => pathToSuggestion(p, fullValue, fullValue, range)), ...result.items]; + } } }; } -export function providePathSuggestions(value: string, range: Range, activeDocFsPath: string, root?: string): CompletionItem[] { - if (startsWith(value, '/') && !root) { +function stripQuotes(fullValue: string) { + if (startsWith(fullValue, `'`) || startsWith(fullValue, `"`)) { + return fullValue.slice(1, -1); + } else { + return fullValue; + } +} + +function shouldDoPathCompletion(fullValue: string) { + if (fullValue === '.') { + return false; + } + return true; +} + +/** + * Get a list of path suggestions. Folder suggestions are suffixed with a slash. + */ +function providePaths(valueBeforeCursor: string, activeDocFsPath: string, root?: string): string[] { + if (startsWith(valueBeforeCursor, '/') && !root) { return []; } - let replaceRange: Range; - const lastIndexOfSlash = value.lastIndexOf('/'); - if (lastIndexOfSlash === -1) { - replaceRange = getFullReplaceRange(range); - } else { - const valueAfterLastSlash = value.slice(lastIndexOfSlash + 1); - replaceRange = getReplaceRange(range, valueAfterLastSlash); - } + const lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/'); + const valueBeforeLastSlash = valueBeforeCursor.slice(0, lastIndexOfSlash + 1); - const valueBeforeLastSlash = value.slice(0, lastIndexOfSlash + 1); - - const parentDir = startsWith(value, '/') + const parentDir = startsWith(valueBeforeCursor, '/') ? path.resolve(root, '.' + valueBeforeLastSlash) : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); try { return fs.readdirSync(parentDir).map(f => { - if (isDir(path.resolve(parentDir, f))) { - return { - label: f + '/', - kind: CompletionItemKind.Folder, - textEdit: TextEdit.replace(replaceRange, f + '/'), - command: { - title: 'Suggest', - command: 'editor.action.triggerSuggest' - } - }; - } else { - return { - label: f, - kind: CompletionItemKind.File, - textEdit: TextEdit.replace(replaceRange, f) - }; - } + return isDir(path.resolve(parentDir, f)) + ? f + '/' + : f; }); } catch (e) { return []; @@ -93,6 +85,48 @@ const isDir = (p: string) => { } }; +function pathToSuggestion(p: string, valueBeforeCursor: string, fullValue: string, range: Range): CompletionItem { + const isDir = p[p.length - 1] === '/'; + + let replaceRange: Range; + const lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/'); + if (lastIndexOfSlash === -1) { + replaceRange = shiftRange(range, 1, -1); + } else { + // For cases where cursor is in the middle of attribute value, like ', { items: [ { label: 'location', resultText: '' }, diff --git a/extensions/html-language-features/server/src/test/folding.test.ts b/extensions/html-language-features/server/src/test/folding.test.ts index 801344428a1..c64621a9e07 100644 --- a/extensions/html-language-features/server/src/test/folding.test.ts +++ b/extensions/html-language-features/server/src/test/folding.test.ts @@ -88,7 +88,7 @@ suite('HTML Folding', () => { assertRanges(input, [r(0, 7), r(5, 6)]); }); - test('Fold commment', () => { + test('Fold comment', () => { let input = [ /*0*/'', - /*3*/'', - ]; - assertRanges(input, [r(0, 2, 'comment'), r(3, 4, 'comment')]); - }); - - test('Fold regions', () => { - let input = [ - /*0*/'', - /*1*/'', - /*2*/'', - /*3*/'', - ]; - assertRanges(input, [r(0, 3, 'region'), r(1, 2, 'region')]); - }); test('Embedded JavaScript', () => { let input = [ @@ -177,6 +108,61 @@ suite('HTML Folding', () => { assertRanges(input, [r(0, 9), r(1, 8), r(2, 7), r(3, 7, 'region'), r(4, 6, 'region')]); }); + test('Embedded CSS', () => { + let input = [ + /* 0*/'', + /* 1*/'', + /* 2*/'', + /* 8*/'', + /* 9*/'', + ]; + assertRanges(input, [r(0, 8), r(1, 7), r(2, 6), r(3, 5)]); + }); + + test('Embedded CSS - multiple areas', () => { + let input = [ + /* 0*/'', + /* 1*/'', + /* 2*/'', + /* 8*/'', + /*13*/'', + /*14*/'', + ]; + assertRanges(input, [r(0, 13), r(1, 12), r(2, 6), r(3, 6, 'comment'), r(8, 11), r(9, 10)]); + }); + + test('Embedded CSS - regions', () => { + let input = [ + /* 0*/'', + /* 1*/'', + /* 2*/'', + /* 9*/'', + /*10*/'', + ]; + assertRanges(input, [r(0, 9), r(1, 8), r(2, 7), r(3, 7, 'region'), r(4, 6, 'region')]); + }); + + // test('Embedded JavaScript - multi line comment', () => { // let input = [ // /* 0*/'', @@ -192,50 +178,6 @@ suite('HTML Folding', () => { // assertRanges(input, [r(0, 7), r(1, 6), r(2, 5), r(3, 5, 'comment')]); // }); - test('Fold incomplete', () => { - let input = [ - /*0*/'', - /*1*/'

', - /*2*/'Hello', - /*3*/'
', - /*4*/'', - ]; - assertRanges(input, [r(0, 3)]); - }); - - test('Fold incomplete 2', () => { - let input = [ - /*0*/'
', - /*1*/'', - /*2*/'
', - ]; - assertRanges(input, [r(0, 1)]); - }); - - test('Fold intersecting region', () => { - let input = [ - /*0*/'', - /*1*/'', - /*2*/'Hello', - /*3*/'
', - /*4*/'', - /*5*/'', - ]; - assertRanges(input, [r(0, 3)]); - }); - - test('Fold intersecting region 2', () => { - let input = [ - /*0*/'', - /*1*/'', - /*2*/'Hello', - /*3*/'', - /*4*/'
', - /*5*/'', - ]; - assertRanges(input, [r(0, 3, 'region')]); - }); - test('Test limit', () => { let input = [ /* 0*/'
', diff --git a/extensions/html-language-features/server/yarn.lock b/extensions/html-language-features/server/yarn.lock index 5452722642d..1c58a8ba9ff 100644 --- a/extensions/html-language-features/server/yarn.lock +++ b/extensions/html-language-features/server/yarn.lock @@ -18,9 +18,9 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-css-languageservice@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.8.tgz#dc27a2f6eefd191bc603be6b9c0a59232a4c2b9f" +vscode-css-languageservice@^3.0.9-next.6: + version "3.0.9-next.6" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.6.tgz#4da4d25eabb101713f21e8eb60b6042e504fbd97" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" @@ -33,9 +33,9 @@ vscode-emmet-helper@1.2.5: jsonc-parser "^1.0.0" vscode-languageserver-types "^3.6.0-next.1" -vscode-html-languageservice@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-2.1.2.tgz#a492d4d3baaa88ce015179f1e985d91eddba9904" +vscode-html-languageservice@^2.1.3-next.1: + version "2.1.3-next.1" + resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-2.1.3-next.1.tgz#bf8a36fc87d10b833211ff7adeb142a06fd18c61" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" From 948897cd130a5b9c401f70c1ed2fe5549cb5f95e Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 16 Apr 2018 14:32:51 -0700 Subject: [PATCH 0806/1070] Start of allowing terminal process to live on extension host --- .../mainThreadTerminalService.ts | 6 +++ src/vs/workbench/api/node/extHost.protocol.ts | 9 +++++ .../api/node/extHostTerminalService.ts | 6 ++- .../parts/terminal/common/terminal.ts | 31 ++++++++++----- .../parts/terminal/common/terminalService.ts | 39 ++++++++----------- .../electron-browser/terminalInstance.ts | 33 ++++++++++------ .../terminalProcessManager.ts | 14 +++++-- .../workbench/parts/terminal/node/terminal.ts | 29 ++++++++++++++ .../node/terminalProcessExtHostBridge.ts | 29 ++++++++++++++ 9 files changed, 149 insertions(+), 47 deletions(-) create mode 100644 src/vs/workbench/parts/terminal/node/terminal.ts create mode 100644 src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 8e974b94935..5f574cedd71 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -30,6 +30,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape })); this._toDispose.push(terminalService.onInstanceDisposed((terminalInstance) => this._onTerminalDisposed(terminalInstance))); this._toDispose.push(terminalService.onInstanceProcessIdReady((terminalInstance) => this._onTerminalProcessIdReady(terminalInstance))); + this._toDispose.push(terminalService.onInstanceRequestExtHostProcess((terminalInstance) => this._onTerminalRequestExtHostProcess(terminalInstance))); // Set initial ext host state this.terminalService.terminalInstances.forEach(t => { @@ -97,4 +98,9 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape private _onTerminalProcessIdReady(terminalInstance: ITerminalInstance): void { this._proxy.$acceptTerminalProcessId(terminalInstance.id, terminalInstance.processId); } + + private _onTerminalRequestExtHostProcess(terminalInstance: ITerminalInstance): void { + console.log('mainThreadTerminalService#_onTerminalRequestExtHostProcess', arguments); + this._proxy.$createProcess(null, 0, 0); + } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 4d160267c77..324697c269a 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -727,10 +727,19 @@ export interface ExtHostQuickOpenShape { $validateInput(input: string): TPromise; } +export interface ShellLaunchConfigDto { + name?: string; + executable?: string; + args?: string[] | string; + cwd?: string; + env?: { [key: string]: string }; +} + export interface ExtHostTerminalServiceShape { $acceptTerminalClosed(id: number): void; $acceptTerminalOpened(id: number, name: string): void; $acceptTerminalProcessId(id: number, processId: number): void; + $createProcess(shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void; } export interface ExtHostSCMShape { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 4e993934fd2..c1632fc7629 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { Event, Emitter } from 'vs/base/common/event'; -import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IMainContext } from './extHost.protocol'; +import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IMainContext, ShellLaunchConfigDto } from 'vs/workbench/api/node/extHost.protocol'; export class ExtHostTerminal implements vscode.Terminal { @@ -168,6 +168,10 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } } + public $createProcess(shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void { + console.log('$createProcess'); + } + private _getTerminalById(id: number): ExtHostTerminal { let index = this._getTerminalIndexById(id); return index !== null ? this._terminals[index] : null; diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 299cf7327ed..ef1de21977d 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -103,26 +103,35 @@ export interface ITerminalFont { } export interface IShellLaunchConfig { - /** The name of the terminal, if this is not set the name of the process will be used. */ + /** + * The name of the terminal, if this is not set the name of the process will be used. + */ name?: string; - /** The shell executable (bash, cmd, etc.). */ + + /** + * The shell executable (bash, cmd, etc.). + */ executable?: string; + /** * The CLI arguments to use with executable, a string[] is in argv format and will be escaped, * a string is in "CommandLine" pre-escaped format and will be used as is. The string option is * only supported on Windows and will throw an exception if used on macOS or Linux. */ args?: string[] | string; + /** * The current working directory of the terminal, this overrides the `terminal.integrated.cwd` * settings key. */ cwd?: string; + /** * A custom environment for the terminal, if this is not set the environment will be inherited * from the VS Code process. */ env?: { [key: string]: string }; + /** * Whether to ignore a custom cwd from the `terminal.integrated.cwd` settings key (eg. if the * shell is being launched by an extension). @@ -139,6 +148,11 @@ export interface IShellLaunchConfig { * of the terminal. Use \x1b over \033 or \e for the escape control character. */ initialText?: string; + + /** + * Whether the process should live on the extension host, not the renderer process. + */ + extensionHostOwned?: boolean; } export interface ITerminalService { @@ -151,6 +165,7 @@ export interface ITerminalService { onInstanceCreated: Event; onInstanceDisposed: Event; onInstanceProcessIdReady: Event; + onInstanceRequestExtHostProcess: Event; onInstancesChanged: Event; onInstanceTitleChanged: Event; terminalInstances: ITerminalInstance[]; @@ -226,9 +241,10 @@ export interface ITerminalInstance { id: number; /** - * The process ID of the shell process. + * The process ID of the shell process, this is undefined when there is no process associated + * with this terminal. */ - processId: number; + processId: number | undefined; /** * An event that fires when the terminal instance's title changes. @@ -244,6 +260,8 @@ export interface ITerminalInstance { onProcessIdReady: Event; + onRequestExtHostProcess: Event; + processReady: TPromise; /** @@ -466,11 +484,6 @@ export interface ITerminalCommandTracker { selectToNextCommand(): void; } -export interface ITerminalProcessMessage { - type: 'pid' | 'data' | 'title'; - content: number | string; -} - export interface ITerminalProcessManager extends IDisposable { readonly processState: ProcessState; readonly ptyProcessReady: TPromise; diff --git a/src/vs/workbench/parts/terminal/common/terminalService.ts b/src/vs/workbench/parts/terminal/common/terminalService.ts index 69fcd5c98f4..08ff3e7ddea 100644 --- a/src/vs/workbench/parts/terminal/common/terminalService.ts +++ b/src/vs/workbench/parts/terminal/common/terminalService.ts @@ -22,29 +22,32 @@ export abstract class TerminalService implements ITerminalService { protected _terminalFocusContextKey: IContextKey; protected _findWidgetVisible: IContextKey; protected _terminalContainer: HTMLElement; - protected _onInstancesChanged: Emitter; - protected _onTabDisposed: Emitter; - protected _onInstanceCreated: Emitter; - protected _onInstanceDisposed: Emitter; - protected _onInstanceProcessIdReady: Emitter; - protected _onInstanceTitleChanged: Emitter; protected _terminalTabs: ITerminalTab[]; protected abstract _terminalInstances: ITerminalInstance[]; private _activeTabIndex: number; - private readonly _onActiveTabChanged: Emitter; public get activeTabIndex(): number { return this._activeTabIndex; } - public get onActiveTabChanged(): Event { return this._onActiveTabChanged.event; } - public get onTabDisposed(): Event { return this._onTabDisposed.event; } - public get onInstanceCreated(): Event { return this._onInstanceCreated.event; } - public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } - public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } - public get onInstanceTitleChanged(): Event { return this._onInstanceTitleChanged.event; } - public get onInstancesChanged(): Event { return this._onInstancesChanged.event; } public get terminalInstances(): ITerminalInstance[] { return this._terminalInstances; } public get terminalTabs(): ITerminalTab[] { return this._terminalTabs; } + private readonly _onActiveTabChanged: Emitter = new Emitter(); + public get onActiveTabChanged(): Event { return this._onActiveTabChanged.event; } + protected readonly _onInstanceCreated: Emitter = new Emitter(); + public get onInstanceCreated(): Event { return this._onInstanceCreated.event; } + protected readonly _onInstanceDisposed: Emitter = new Emitter(); + public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } + protected readonly _onInstanceProcessIdReady: Emitter = new Emitter(); + public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } + protected readonly _onInstanceRequestExtHostProcess: Emitter = new Emitter(); + public get onInstanceRequestExtHostProcess(): Event { return this._onInstanceRequestExtHostProcess.event; } + protected readonly _onInstancesChanged: Emitter = new Emitter(); + public get onInstancesChanged(): Event { return this._onInstancesChanged.event; } + protected readonly _onInstanceTitleChanged: Emitter = new Emitter(); + public get onInstanceTitleChanged(): Event { return this._onInstanceTitleChanged.event; } + protected readonly _onTabDisposed: Emitter = new Emitter(); + public get onTabDisposed(): Event { return this._onTabDisposed.event; } + public abstract get configHelper(): ITerminalConfigHelper; constructor( @@ -57,14 +60,6 @@ export abstract class TerminalService implements ITerminalService { this._activeTabIndex = 0; this._isShuttingDown = false; - this._onActiveTabChanged = new Emitter(); - this._onTabDisposed = new Emitter(); - this._onInstanceCreated = new Emitter(); - this._onInstanceDisposed = new Emitter(); - this._onInstanceProcessIdReady = new Emitter(); - this._onInstanceTitleChanged = new Emitter(); - this._onInstancesChanged = new Emitter(); - lifecycleService.onWillShutdown(event => event.veto(this._onWillShutdown())); lifecycleService.onShutdown(() => this._onShutdown()); this._terminalFocusContextKey = KEYBINDING_CONTEXT_TERMINAL_FOCUS.bindTo(this._contextKeyService); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 9db5b91c7d3..245ab95e82f 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -71,24 +71,27 @@ export class TerminalInstance implements ITerminalInstance { public disableLayout: boolean; public get id(): number { return this._id; } // TODO: Ideally processId would be merged into processReady - public get processId(): number { return this._processManager.shellProcessId; } + public get processId(): number | undefined { return this._processManager ? this._processManager.shellProcessId : undefined; } + // TODO: How does this work with detached processes? // TODO: Should this be an event as it can fire twice? - public get processReady(): TPromise { return this._processManager.ptyProcessReady; } + public get processReady(): TPromise { return this._processManager ? this._processManager.ptyProcessReady : TPromise.as(void 0); } public get title(): string { return this._title; } public get hadFocusOnExit(): boolean { return this._hadFocusOnExit; } public get isTitleSetByProcess(): boolean { return !!this._messageTitleDisposable; } public get shellLaunchConfig(): IShellLaunchConfig { return Object.freeze(this._shellLaunchConfig); } public get commandTracker(): TerminalCommandTracker { return this._commandTracker; } - private readonly _onDisposed: Emitter = new Emitter(); - private readonly _onFocused: Emitter = new Emitter(); - private readonly _onProcessIdReady: Emitter = new Emitter(); - private readonly _onTitleChanged: Emitter = new Emitter(); + private readonly _onDisposed: Emitter = new Emitter(); public get onDisposed(): Event { return this._onDisposed.event; } + private readonly _onFocused: Emitter = new Emitter(); public get onFocused(): Event { return this._onFocused.event; } + private readonly _onProcessIdReady: Emitter = new Emitter(); public get onProcessIdReady(): Event { return this._onProcessIdReady.event; } + private readonly _onTitleChanged: Emitter = new Emitter(); public get onTitleChanged(): Event { return this._onTitleChanged.event; } + private readonly _onRequestExtHostProcess: Emitter = new Emitter(); + public get onRequestExtHostProcess(): Event { return this._onRequestExtHostProcess.event; } public constructor( private _terminalFocusContextKey: IContextKey, @@ -106,6 +109,9 @@ export class TerminalInstance implements ITerminalInstance { @IConfigurationService private readonly _configurationService: IConfigurationService, @ILogService private _logService: ILogService ) { + this._shellLaunchConfig.extensionHostOwned = true; + this._shellLaunchConfig.name = 'Test terminal renderer'; + this._disposables = []; this._skipTerminalCommands = []; this._onLineDataListeners = []; @@ -267,8 +273,9 @@ export class TerminalInstance implements ITerminalInstance { if (this._processManager) { this._processManager.onProcessData(data => this._sendPtyDataToXterm(data)); this._xterm.on('data', data => this._processManager.write(data)); + // TODO: How does the cwd work on detached processes? + this._linkHandler = this._instantiationService.createInstance(TerminalLinkHandler, this._xterm, platform.platform, this._processManager.initialCwd); } - this._linkHandler = this._instantiationService.createInstance(TerminalLinkHandler, this._xterm, platform.platform, this._processManager.initialCwd); this._commandTracker = new TerminalCommandTracker(this._xterm); this._disposables.push(this._themeService.onThemeChange(theme => this._updateTheme(theme))); } @@ -394,10 +401,13 @@ export class TerminalInstance implements ITerminalInstance { })); this._wrapperElement.appendChild(this._xtermElement); - this._widgetManager = new TerminalWidgetManager(this._wrapperElement); - this._linkHandler.setWidgetManager(this._widgetManager); this._container.appendChild(this._wrapperElement); + if (this._processManager) { + this._widgetManager = new TerminalWidgetManager(this._wrapperElement); + this._linkHandler.setWidgetManager(this._widgetManager); + } + const computedStyle = window.getComputedStyle(this._container); const width = parseInt(computedStyle.getPropertyValue('width').replace('px', ''), 10); const height = parseInt(computedStyle.getPropertyValue('height').replace('px', ''), 10); @@ -578,7 +588,6 @@ export class TerminalInstance implements ITerminalInstance { } protected _createProcess(): void { - // TODO: This should be injected in to the terminal instance (from service?) this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._configHelper); this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); @@ -862,7 +871,9 @@ export class TerminalInstance implements ITerminalInstance { } } - this._processManager.ptyProcessReady.then(() => this._processManager.setDimensions(this._cols, this._rows)); + if (this._processManager) { + this._processManager.ptyProcessReady.then(() => this._processManager.setDimensions(this._cols, this._rows)); + } } public setTitle(title: string, eventFromProcess: boolean): void { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index b98130fa468..88defa05bbb 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -9,13 +9,15 @@ import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import Uri from 'vs/base/common/uri'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { ProcessState, ITerminalProcessManager, ITerminalProcessMessage, IShellLaunchConfig, ITerminalConfigHelper } from 'vs/workbench/parts/terminal/common/terminal'; +import { ProcessState, ITerminalProcessManager, IShellLaunchConfig, ITerminalConfigHelper } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; import { ILogService } from 'vs/platform/log/common/log'; import { Emitter, Event } from 'vs/base/common/event'; import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; +import { ITerminalChildProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; +import { TerminalProcessExtHostBridge } from 'vs/workbench/parts/terminal/node/terminalProcessExtHostBridge'; /** The amount of time to consider terminal errors to be related to the launch */ const LAUNCHING_DURATION = 500; @@ -34,7 +36,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { public shellProcessId: number; public initialCwd: string; - private _process: cp.ChildProcess; + private _process: ITerminalChildProcess; private _preLaunchInputQueue: string[] = []; private _disposables: IDisposable[] = []; @@ -112,7 +114,11 @@ export class TerminalProcessManager implements ITerminalProcessManager { const cwd = Uri.parse(path.dirname(require.toUrl('../node/terminalProcess'))).fsPath; const options = { env, cwd }; this._logService.debug(`Terminal process launching`, options); - this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); + if (shellLaunchConfig.extensionHostOwned) { + this._process = new TerminalProcessExtHostBridge(); + } else { + this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); + } this.processState = ProcessState.LAUNCHING; this._process.on('message', message => this._onMessage(message)); @@ -152,7 +158,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { } } - private _onMessage(message: ITerminalProcessMessage): void { + private _onMessage(message: IMessageFromTerminalProcess): void { this._logService.trace(`terminalProcessManager#_onMessage (shellProcessId: ${this.shellProcessId}`, message); switch (message.type) { case 'data': diff --git a/src/vs/workbench/parts/terminal/node/terminal.ts b/src/vs/workbench/parts/terminal/node/terminal.ts new file mode 100644 index 00000000000..2abad57488d --- /dev/null +++ b/src/vs/workbench/parts/terminal/node/terminal.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export interface IMessageFromTerminalProcess { + type: 'pid' | 'data' | 'title'; + content: number | string; +} + +export interface IMessageToTerminalProcess { + event: 'resize' | 'input' | 'shutdown'; + data?: string; + cols?: number; + rows?: number; +} + +/** + * An interface representing a raw terminal child process, this is a subset of the + * child_process.ChildProcess node.js interface. + */ +export interface ITerminalChildProcess { + readonly connected: boolean; + + send(message: IMessageToTerminalProcess): boolean; + + on(event: 'exit', listener: (code: number) => void): this; + on(event: 'message', listener: (message: IMessageFromTerminalProcess) => void): this; +} diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts new file mode 100644 index 00000000000..76f6bd169d3 --- /dev/null +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ITerminalChildProcess, IMessageToTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; +import { EventEmitter } from 'events'; + +export class TerminalProcessExtHostBridge extends EventEmitter implements ITerminalChildProcess { + public connected: boolean; + + constructor() { + super(); + + let i = 0; + setTimeout(() => { + this.emit('message', { type: 'pid', content: -1 }); + this.emit('message', { type: 'data', content: `test ${i++}\r\n` }); + }, 0); + setInterval(() => { + this.emit('message', { type: 'data', content: `test ${i++}\r\n` }); + }, 1000); + } + + public send(message: IMessageToTerminalProcess): boolean { + console.log('TerminalProcessExtHostBridge#send', arguments); + return true; + } +} \ No newline at end of file From 28ab61469c74a806b4a79c7f42aa2eebb1d61459 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 16 Apr 2018 14:42:03 -0700 Subject: [PATCH 0807/1070] Type messages emitted from terminal ext host bridge --- .../parts/terminal/node/terminalProcessExtHostBridge.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts index 76f6bd169d3..08cd5e2d2a6 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ITerminalChildProcess, IMessageToTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; +import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; export class TerminalProcessExtHostBridge extends EventEmitter implements ITerminalChildProcess { @@ -14,11 +14,11 @@ export class TerminalProcessExtHostBridge extends EventEmitter implements ITermi let i = 0; setTimeout(() => { - this.emit('message', { type: 'pid', content: -1 }); - this.emit('message', { type: 'data', content: `test ${i++}\r\n` }); + this.emit('message', { type: 'pid', content: -1 } as IMessageFromTerminalProcess); + this.emit('message', { type: 'data', content: `test ${i++}\r\n` } as IMessageFromTerminalProcess); }, 0); setInterval(() => { - this.emit('message', { type: 'data', content: `test ${i++}\r\n` }); + this.emit('message', { type: 'data', content: `test ${i++}\r\n` } as IMessageFromTerminalProcess); }, 1000); } From 76403b07c9d679d02a1ee849294a8d10b5169c39 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 16 Apr 2018 14:45:25 -0700 Subject: [PATCH 0808/1070] More types! --- .../node/terminalProcessExtHostBridge.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts index 08cd5e2d2a6..9b3107576b4 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts @@ -14,14 +14,25 @@ export class TerminalProcessExtHostBridge extends EventEmitter implements ITermi let i = 0; setTimeout(() => { - this.emit('message', { type: 'pid', content: -1 } as IMessageFromTerminalProcess); - this.emit('message', { type: 'data', content: `test ${i++}\r\n` } as IMessageFromTerminalProcess); + this._emitPid(-1); + this._emitTitle('test title'); + this._emitData(`test ${i++}\r\n`); }, 0); setInterval(() => { - this.emit('message', { type: 'data', content: `test ${i++}\r\n` } as IMessageFromTerminalProcess); + this._emitData(`test ${i++}\r\n`); }, 1000); } + private _emitData(data: string): void { + this.emit('message', { type: 'data', content: data } as IMessageFromTerminalProcess); + } + private _emitTitle(title: string): void { + this.emit('message', { type: 'data', content: title } as IMessageFromTerminalProcess); + } + private _emitPid(pid: number): void { + this.emit('message', { type: 'data', content: pid } as IMessageFromTerminalProcess); + } + public send(message: IMessageToTerminalProcess): boolean { console.log('TerminalProcessExtHostBridge#send', arguments); return true; From c66b54a1bad0d910b11c59ea93e78cff45095a78 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 16 Apr 2018 14:46:59 -0700 Subject: [PATCH 0809/1070] translation reminder typo --- build/lib/tslint/translationRemindRule.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/lib/tslint/translationRemindRule.ts b/build/lib/tslint/translationRemindRule.ts index 6bc2a191619..2c5adcc4c49 100644 --- a/build/lib/tslint/translationRemindRule.ts +++ b/build/lib/tslint/translationRemindRule.ts @@ -67,7 +67,7 @@ class TranslationRemindRuleWalker extends Lint.RuleWalker { }); if (!resourceDefined) { - this.addFailureAtNode(node, `Please add '${resource}' to ./builds/lib/i18n.resources.json file to use translations here.`); + this.addFailureAtNode(node, `Please add '${resource}' to ./build/lib/i18n.resources.json file to use translations here.`); } } } From 7fc439997de39f680b29067b3d42a52eaf03b1ac Mon Sep 17 00:00:00 2001 From: Niklas Mollenhauer Date: Tue, 17 Apr 2018 00:04:54 +0200 Subject: [PATCH 0810/1070] Change Hover#range to be optional The docs of `Hover#range` state: > When missing, the editor will use the range at the current position or the current position itself. This implies that the `range` field should be optional as it can be missing. --- src/vs/editor/common/modes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 7d9701574ec..5c09c49af21 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -230,7 +230,7 @@ export interface Hover { * editor will use the range at the current position or the * current position itself. */ - range: IRange; + range?: IRange; } /** From 2840741d5e2b3a9b6478f7ae74edb31388022d01 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 16 Apr 2018 13:48:16 -0700 Subject: [PATCH 0811/1070] Update js/ts grammar --- .../syntaxes/JavaScript.tmLanguage.json | 123 +++++++++++++++--- .../syntaxes/JavaScriptReact.tmLanguage.json | 123 +++++++++++++++--- .../syntaxes/TypeScript.tmLanguage.json | 115 +++++++++++++--- .../syntaxes/TypeScriptReact.tmLanguage.json | 123 +++++++++++++++--- 4 files changed, 404 insertions(+), 80 deletions(-) diff --git a/extensions/javascript/syntaxes/JavaScript.tmLanguage.json b/extensions/javascript/syntaxes/JavaScript.tmLanguage.json index d425b739890..7b306b3f963 100644 --- a/extensions/javascript/syntaxes/JavaScript.tmLanguage.json +++ b/extensions/javascript/syntaxes/JavaScript.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/5c237f767c5cff27910946a3ba65261cc3b6f4bf", + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/929ee616cc9c299c5ed09d6051277a9c34e2d6e9", "name": "JavaScript (with React support)", "scopeName": "source.js", "patterns": [ @@ -291,7 +291,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.js", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "beginCaptures": { "1": { "name": "meta.definition.variable.js entity.name.function.js" @@ -525,7 +525,7 @@ } }, { - "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "storage.modifier.js" @@ -751,7 +751,7 @@ "include": "#comment" }, { - "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "meta.definition.property.js entity.name.function.js" @@ -1036,7 +1036,7 @@ }, { "name": "meta.arrow.js", - "begin": "(?x) (?:\n (? is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", + "begin": "(?x) (?:\n (? is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", "beginCaptures": { "1": { "name": "storage.modifier.async.js" @@ -1875,18 +1875,44 @@ "name": "keyword.control.switch.js" } }, - "end": ":", - "endCaptures": { - "0": { - "name": "punctuation.definition.section.case-statement.js" - } - }, + "end": "(?=:)", "patterns": [ { "include": "#expression" } ] }, + { + "begin": "(:)\\s*(\\{)", + "beginCaptures": { + "1": { + "name": "case-clause.expr.js punctuation.definition.section.case-statement.js" + }, + "2": { + "name": "meta.block.js punctuation.definition.block.js" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "meta.block.js punctuation.definition.block.js" + } + }, + "contentName": "meta.block.js", + "patterns": [ + { + "include": "#statements" + } + ] + }, + { + "match": "(:)", + "captures": { + "0": { + "name": "case-clause.expr.js punctuation.definition.section.case-statement.js" + } + } + }, { "include": "#statements" } @@ -1959,7 +1985,7 @@ }, "after-operator-block-as-object-literal": { "name": "meta.objectliteral.js", - "begin": "(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "0": { "name": "meta.object-literal.key.js" @@ -2112,6 +2138,61 @@ }, "end": "(?=,|\\})", "patterns": [ + { + "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)\\(\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.js" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.js" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.js" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.js" + }, + "2": { + "name": "meta.brace.round.js" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.js" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, { "include": "#expression" } @@ -2142,13 +2223,13 @@ ] }, "function-call": { - "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", - "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "name": "meta.function-call.js", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", - "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "include": "#literal" @@ -2798,7 +2879,7 @@ "include": "#object-identifiers" }, { - "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", + "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", "captures": { "1": { "name": "punctuation.accessor.js" @@ -4365,8 +4446,8 @@ ] }, "jsx-tag-in-expression": { - "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", - "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "patterns": [ { "include": "#jsx-tag" @@ -4375,7 +4456,7 @@ }, "jsx-tag": { "name": "meta.tag.js", - "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "end": "(/>)|(?:())", "endCaptures": { "1": { @@ -4402,7 +4483,7 @@ }, "patterns": [ { - "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", + "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.js" diff --git a/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage.json b/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage.json index 1501020eeb4..a92b07303c2 100644 --- a/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage.json +++ b/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/5c237f767c5cff27910946a3ba65261cc3b6f4bf", + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/929ee616cc9c299c5ed09d6051277a9c34e2d6e9", "name": "JavaScript (with React support)", "scopeName": "source.js.jsx", "patterns": [ @@ -291,7 +291,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.js.jsx", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "beginCaptures": { "1": { "name": "meta.definition.variable.js.jsx entity.name.function.js.jsx" @@ -525,7 +525,7 @@ } }, { - "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "storage.modifier.js.jsx" @@ -751,7 +751,7 @@ "include": "#comment" }, { - "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "meta.definition.property.js.jsx entity.name.function.js.jsx" @@ -1036,7 +1036,7 @@ }, { "name": "meta.arrow.js.jsx", - "begin": "(?x) (?:\n (? is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", + "begin": "(?x) (?:\n (? is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", "beginCaptures": { "1": { "name": "storage.modifier.async.js.jsx" @@ -1875,18 +1875,44 @@ "name": "keyword.control.switch.js.jsx" } }, - "end": ":", - "endCaptures": { - "0": { - "name": "punctuation.definition.section.case-statement.js.jsx" - } - }, + "end": "(?=:)", "patterns": [ { "include": "#expression" } ] }, + { + "begin": "(:)\\s*(\\{)", + "beginCaptures": { + "1": { + "name": "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx" + }, + "2": { + "name": "meta.block.js.jsx punctuation.definition.block.js.jsx" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "meta.block.js.jsx punctuation.definition.block.js.jsx" + } + }, + "contentName": "meta.block.js.jsx", + "patterns": [ + { + "include": "#statements" + } + ] + }, + { + "match": "(:)", + "captures": { + "0": { + "name": "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx" + } + } + }, { "include": "#statements" } @@ -1959,7 +1985,7 @@ }, "after-operator-block-as-object-literal": { "name": "meta.objectliteral.js.jsx", - "begin": "(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "0": { "name": "meta.object-literal.key.js.jsx" @@ -2112,6 +2138,61 @@ }, "end": "(?=,|\\})", "patterns": [ + { + "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)\\(\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.js.jsx" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.js.jsx" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.js.jsx" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.js.jsx" + }, + "2": { + "name": "meta.brace.round.js.jsx" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.js.jsx" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, { "include": "#expression" } @@ -2142,13 +2223,13 @@ ] }, "function-call": { - "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", - "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "name": "meta.function-call.js.jsx", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", - "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "include": "#literal" @@ -2798,7 +2879,7 @@ "include": "#object-identifiers" }, { - "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", + "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", "captures": { "1": { "name": "punctuation.accessor.js.jsx" @@ -4365,8 +4446,8 @@ ] }, "jsx-tag-in-expression": { - "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", - "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "patterns": [ { "include": "#jsx-tag" @@ -4375,7 +4456,7 @@ }, "jsx-tag": { "name": "meta.tag.js.jsx", - "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "end": "(/>)|(?:())", "endCaptures": { "1": { @@ -4402,7 +4483,7 @@ }, "patterns": [ { - "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", + "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.js.jsx" diff --git a/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json b/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json index 10e0aacba78..2856d4ed0e9 100644 --- a/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json +++ b/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/5c237f767c5cff27910946a3ba65261cc3b6f4bf", + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/929ee616cc9c299c5ed09d6051277a9c34e2d6e9", "name": "TypeScript", "scopeName": "source.ts", "patterns": [ @@ -288,7 +288,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.ts", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "beginCaptures": { "1": { "name": "meta.definition.variable.ts entity.name.function.ts" @@ -522,7 +522,7 @@ } }, { - "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "storage.modifier.ts" @@ -748,7 +748,7 @@ "include": "#comment" }, { - "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "meta.definition.property.ts entity.name.function.ts" @@ -1033,7 +1033,7 @@ }, { "name": "meta.arrow.ts", - "begin": "(?x) (?:\n (? is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", + "begin": "(?x) (?:\n (? is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", "beginCaptures": { "1": { "name": "storage.modifier.async.ts" @@ -1872,18 +1872,44 @@ "name": "keyword.control.switch.ts" } }, - "end": ":", - "endCaptures": { - "0": { - "name": "punctuation.definition.section.case-statement.ts" - } - }, + "end": "(?=:)", "patterns": [ { "include": "#expression" } ] }, + { + "begin": "(:)\\s*(\\{)", + "beginCaptures": { + "1": { + "name": "case-clause.expr.ts punctuation.definition.section.case-statement.ts" + }, + "2": { + "name": "meta.block.ts punctuation.definition.block.ts" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "meta.block.ts punctuation.definition.block.ts" + } + }, + "contentName": "meta.block.ts", + "patterns": [ + { + "include": "#statements" + } + ] + }, + { + "match": "(:)", + "captures": { + "0": { + "name": "case-clause.expr.ts punctuation.definition.section.case-statement.ts" + } + } + }, { "include": "#statements" } @@ -1956,7 +1982,7 @@ }, "after-operator-block-as-object-literal": { "name": "meta.objectliteral.ts", - "begin": "(?)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "0": { "name": "meta.object-literal.key.ts" @@ -2109,6 +2135,61 @@ }, "end": "(?=,|\\})", "patterns": [ + { + "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)\\(\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + }, + "2": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, { "include": "#expression" } @@ -2139,13 +2220,13 @@ ] }, "function-call": { - "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", - "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "name": "meta.function-call.ts", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", - "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "include": "#literal" @@ -2832,7 +2913,7 @@ "include": "#object-identifiers" }, { - "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", + "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?[\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", "captures": { "1": { "name": "punctuation.accessor.ts" diff --git a/extensions/typescript-basics/syntaxes/TypeScriptReact.tmLanguage.json b/extensions/typescript-basics/syntaxes/TypeScriptReact.tmLanguage.json index 97e76452d41..4c68fdc923c 100644 --- a/extensions/typescript-basics/syntaxes/TypeScriptReact.tmLanguage.json +++ b/extensions/typescript-basics/syntaxes/TypeScriptReact.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/5c237f767c5cff27910946a3ba65261cc3b6f4bf", + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/929ee616cc9c299c5ed09d6051277a9c34e2d6e9", "name": "TypeScriptReact", "scopeName": "source.tsx", "patterns": [ @@ -291,7 +291,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.tsx", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "beginCaptures": { "1": { "name": "meta.definition.variable.tsx entity.name.function.tsx" @@ -525,7 +525,7 @@ } }, { - "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "storage.modifier.tsx" @@ -751,7 +751,7 @@ "include": "#comment" }, { - "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\?)?(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "1": { "name": "meta.definition.property.tsx entity.name.function.tsx" @@ -1036,7 +1036,7 @@ }, { "name": "meta.arrow.tsx", - "begin": "(?x) (?:\n (? is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", + "begin": "(?x) (?:\n (? is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", "beginCaptures": { "1": { "name": "storage.modifier.async.tsx" @@ -1875,18 +1875,44 @@ "name": "keyword.control.switch.tsx" } }, - "end": ":", - "endCaptures": { - "0": { - "name": "punctuation.definition.section.case-statement.tsx" - } - }, + "end": "(?=:)", "patterns": [ { "include": "#expression" } ] }, + { + "begin": "(:)\\s*(\\{)", + "beginCaptures": { + "1": { + "name": "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx" + }, + "2": { + "name": "meta.block.tsx punctuation.definition.block.tsx" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "meta.block.tsx punctuation.definition.block.tsx" + } + }, + "contentName": "meta.block.tsx", + "patterns": [ + { + "include": "#statements" + } + ] + }, + { + "match": "(:)", + "captures": { + "0": { + "name": "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx" + } + } + }, { "include": "#statements" } @@ -1959,7 +1985,7 @@ }, "after-operator-block-as-object-literal": { "name": "meta.objectliteral.tsx", - "begin": "(?)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", "captures": { "0": { "name": "meta.object-literal.key.tsx" @@ -2112,6 +2138,61 @@ }, "end": "(?=,|\\})", "patterns": [ + { + "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)\\(\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.tsx" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.tsx" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.tsx" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.tsx" + }, + "2": { + "name": "meta.brace.round.tsx" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.tsx" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, { "include": "#expression" } @@ -2142,13 +2223,13 @@ ] }, "function-call": { - "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", - "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "name": "meta.function-call.tsx", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", - "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", + "end": "(?=\\s*(\\?\\.\\s*)?(<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>\\s*)?\\()", "patterns": [ { "include": "#literal" @@ -2798,7 +2879,7 @@ "include": "#object-identifiers" }, { - "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", + "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([\\(]\\s*$) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)?\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^=<>]|=[^<])*\\>)*>\\s*)? # typeparameters\n \\(\\s*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\]))([^()]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\)))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)]|\\<[^<>]+\\>|\\([^\\(\\)]+\\))+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", "captures": { "1": { "name": "punctuation.accessor.tsx" @@ -4365,8 +4446,8 @@ ] }, "jsx-tag-in-expression": { - "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", - "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?x)\n (?:*]|&&|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "end": "(?!(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "patterns": [ { "include": "#jsx-tag" @@ -4375,7 +4456,7 @@ }, "jsx-tag": { "name": "meta.tag.tsx", - "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", + "begin": "(?=(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>))", "end": "(/>)|(?:())", "endCaptures": { "1": { @@ -4402,7 +4483,7 @@ }, "patterns": [ { - "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", + "begin": "(<)\\s*(?:([_$a-zA-Z][-$\\w.]*)(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{[^\\{\\}]*\\}))*\\})|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(\\[([^\\[\\]]|(\\[[^\\[\\]]*\\]))*\\])|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\([^\\(\\)]*\\)))*\\))|(?<==)\\>)*(?!=)\\>)*(?!=)>)?\\s+(?!\\?)|\\/?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.tsx" From bc6a2d52acfb5ffaa9ffb5f7176b4e728071bd20 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 16 Apr 2018 15:12:52 -0700 Subject: [PATCH 0812/1070] Move onDidChangeActiveTextEditor into Preview --- .../src/features/preview.ts | 40 ++++++++++++------- .../src/features/previewManager.ts | 17 ++------ 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index 003872372e5..a6e37d28d82 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -14,12 +14,16 @@ import * as nls from 'vscode-nls'; import { getVisibleLine, MarkdownFileTopmostLineMonitor } from '../util/topmostLineMonitor'; import { MarkdownPreviewConfigurationManager } from './previewConfig'; import { MarkdownContributions } from '../markdownExtensions'; +import { isMarkdownFile } from '../util/file'; const localize = nls.loadMessageBundle(); export class MarkdownPreview { public static viewType = 'markdown.preview'; + private _resource: vscode.Uri; + private _locked: boolean; + private readonly editor: vscode.WebviewPanel; private throttleTimer: any; private line: number | undefined = undefined; @@ -91,13 +95,15 @@ export class MarkdownPreview { private constructor( webview: vscode.WebviewPanel, - private _resource: vscode.Uri, - public locked: boolean, - private readonly contentProvider: MarkdownContentProvider, - private readonly previewConfigurations: MarkdownPreviewConfigurationManager, - private readonly logger: Logger, + resource: vscode.Uri, + locked: boolean, + private readonly _contentProvider: MarkdownContentProvider, + private readonly _previewConfigurations: MarkdownPreviewConfigurationManager, + private readonly _logger: Logger, topmostLineMonitor: MarkdownFileTopmostLineMonitor ) { + this._resource = resource; + this._locked = locked; this.editor = webview; this.editor.onDidDispose(() => { @@ -150,6 +156,12 @@ export class MarkdownPreview { }); } }, null, this.disposables); + + vscode.window.onDidChangeActiveTextEditor(editor => { + if (editor && isMarkdownFile(editor.document) && !this._locked) { + this.update(editor.document.uri); + } + }, null, this.disposables); } private readonly _onDisposeEmitter = new vscode.EventEmitter(); @@ -165,7 +177,7 @@ export class MarkdownPreview { public get state() { return { resource: this.resource.toString(), - locked: this.locked, + locked: this._locked, line: this.line }; } @@ -218,7 +230,7 @@ export class MarkdownPreview { } public updateConfiguration() { - if (this.previewConfigurations.hasConfigurationChanged(this._resource)) { + if (this._previewConfigurations.hasConfigurationChanged(this._resource)) { this.refresh(); } } @@ -244,7 +256,7 @@ export class MarkdownPreview { return false; } - if (this.locked) { + if (this._locked) { return otherLocked && this.isPreviewOf(otherResource); } else { return !otherLocked; @@ -252,7 +264,7 @@ export class MarkdownPreview { } public matches(otherPreview: MarkdownPreview): boolean { - return this.matchesResource(otherPreview._resource, otherPreview.position, otherPreview.locked); + return this.matchesResource(otherPreview._resource, otherPreview.position, otherPreview._locked); } public reveal(viewColumn: vscode.ViewColumn) { @@ -260,8 +272,8 @@ export class MarkdownPreview { } public toggleLock() { - this.locked = !this.locked; - this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); + this._locked = !this._locked; + this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); } private static getPreviewTitle(resource: vscode.Uri, locked: boolean): string { @@ -281,7 +293,7 @@ export class MarkdownPreview { } if (typeof topLine === 'number') { - this.logger.log('updateForView', { markdownFile: resource }); + this._logger.log('updateForView', { markdownFile: resource }); this.line = topLine; this.postMessage({ type: 'updateView', @@ -313,9 +325,9 @@ export class MarkdownPreview { this.forceUpdate = false; this.currentVersion = { resource, version: document.version }; - const content = await this.contentProvider.provideTextDocumentContent(document, this.previewConfigurations, this.line); + const content = await this._contentProvider.provideTextDocumentContent(document, this._previewConfigurations, this.line); if (this._resource === resource) { - this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this.locked); + this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); this.editor.webview.html = content; } } diff --git a/extensions/markdown-language-features/src/features/previewManager.ts b/extensions/markdown-language-features/src/features/previewManager.ts index bffab3ac74b..ec59ba12f3b 100644 --- a/extensions/markdown-language-features/src/features/previewManager.ts +++ b/extensions/markdown-language-features/src/features/previewManager.ts @@ -4,15 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; - import { Logger } from '../logger'; -import { MarkdownContentProvider } from './previewContentProvider'; -import { MarkdownPreview, PreviewSettings } from './preview'; +import { MarkdownContributions } from '../markdownExtensions'; import { disposeAll } from '../util/dispose'; import { MarkdownFileTopmostLineMonitor } from '../util/topmostLineMonitor'; -import { isMarkdownFile } from '../util/file'; +import { MarkdownPreview, PreviewSettings } from './preview'; import { MarkdownPreviewConfigurationManager } from './previewConfig'; -import { MarkdownContributions } from '../markdownExtensions'; +import { MarkdownContentProvider } from './previewContentProvider'; + export class MarkdownPreviewManager implements vscode.WebviewPanelSerializer { private static readonly markdownPreviewActiveContextKey = 'markdownPreviewFocus'; @@ -28,14 +27,6 @@ export class MarkdownPreviewManager implements vscode.WebviewPanelSerializer { private readonly logger: Logger, private readonly contributions: MarkdownContributions ) { - vscode.window.onDidChangeActiveTextEditor(editor => { - if (editor && isMarkdownFile(editor.document)) { - for (const preview of this.previews.filter(preview => !preview.locked)) { - preview.update(editor.document.uri); - } - } - }, null, this.disposables); - this.disposables.push(vscode.window.registerWebviewPanelSerializer(MarkdownPreview.viewType, this)); } From 3a14fde91d1fd0b3060b9eefb0780dd8d8b80e18 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 16 Apr 2018 15:21:24 -0700 Subject: [PATCH 0813/1070] Fix double click md preview when source document is not showing Fixes #47188 --- .../markdown-language-features/src/features/preview.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index a6e37d28d82..a1c2cf45a13 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -239,10 +239,6 @@ export class MarkdownPreview { return this.editor.position; } - public isPreviewOf(resource: vscode.Uri): boolean { - return this._resource.fsPath === resource.fsPath; - } - public isWebviewOf(webview: vscode.WebviewPanel): boolean { return this.editor === webview; } @@ -276,6 +272,10 @@ export class MarkdownPreview { this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); } + private isPreviewOf(resource: vscode.Uri): boolean { + return this._resource.fsPath === resource.fsPath; + } + private static getPreviewTitle(resource: vscode.Uri, locked: boolean): string { return locked ? localize('lockedPreviewTitle', '[Preview] {0}', path.basename(resource.fsPath)) @@ -377,6 +377,8 @@ export class MarkdownPreview { return; } } + + vscode.workspace.openTextDocument(this._resource).then(vscode.window.showTextDocument); } } From ab56a0952b9c2ff7add6404f80ebf9398cf8ae51 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 16 Apr 2018 17:08:33 -0700 Subject: [PATCH 0814/1070] Fix #47733. when check char code we need to validate if it is at the end of a node. --- .../pieceTreeTextBuffer/pieceTreeBase.ts | 24 +++++++++++++------ .../pieceTreeTextBuffer.test.ts | 22 +++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts index 3e7787756a2..360bbb4fa59 100644 --- a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts +++ b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts @@ -536,14 +536,24 @@ export class PieceTreeBase { } public getLineCharCode(lineNumber: number, index: number): number { - return this.getLineContent(lineNumber).charCodeAt(index); - // TODO@peng: optimize the implementation to not allocate a string - // let nodePos = this.nodeAt2(lineNumber, index + 1); - // let buffer = this._buffers[nodePos.node.piece.bufferIndex]; - // let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start); - // let targetOffset = startOffset + nodePos.remainder; + let nodePos = this.nodeAt2(lineNumber, index + 1); + if (nodePos.remainder === nodePos.node.piece.length) { + // the char we want to fetch is at the head of next node. + let matchingNode = nodePos.node.next(); + if (!matchingNode) { + return 0; + } - // return buffer.buffer.charCodeAt(targetOffset); + let buffer = this._buffers[matchingNode.piece.bufferIndex]; + let startOffset = this.offsetInBuffer(matchingNode.piece.bufferIndex, matchingNode.piece.start); + return buffer.buffer.charCodeAt(startOffset); + } else { + let buffer = this._buffers[nodePos.node.piece.bufferIndex]; + let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start); + let targetOffset = startOffset + nodePos.remainder; + + return buffer.buffer.charCodeAt(targetOffset); + } } public getLineLength(lineNumber: number): number { diff --git a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts index 717870f0b59..089c17be083 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1613,6 +1613,28 @@ suite('buffer api', () => { test('getLineCharCode - issue #45735', () => { let pieceTable = createTextBuffer(['LINE1\nline2']); + assert.equal(pieceTable.getLineCharCode(1, 0), 'L'.charCodeAt(0), 'L'); + assert.equal(pieceTable.getLineCharCode(1, 1), 'I'.charCodeAt(0), 'I'); + assert.equal(pieceTable.getLineCharCode(1, 2), 'N'.charCodeAt(0), 'N'); + assert.equal(pieceTable.getLineCharCode(1, 3), 'E'.charCodeAt(0), 'E'); + assert.equal(pieceTable.getLineCharCode(1, 4), '1'.charCodeAt(0), '1'); + assert.equal(pieceTable.getLineCharCode(1, 5), '\n'.charCodeAt(0), '\\n'); + assert.equal(pieceTable.getLineCharCode(2, 0), 'l'.charCodeAt(0), 'l'); + assert.equal(pieceTable.getLineCharCode(2, 1), 'i'.charCodeAt(0), 'i'); + assert.equal(pieceTable.getLineCharCode(2, 2), 'n'.charCodeAt(0), 'n'); + assert.equal(pieceTable.getLineCharCode(2, 3), 'e'.charCodeAt(0), 'e'); + assert.equal(pieceTable.getLineCharCode(2, 4), '2'.charCodeAt(0), '2'); + }); + + + test('getLineCharCode - issue #47733', () => { + let pieceTable = createTextBuffer(['', 'LINE1\n', 'line2']); + assert.equal(pieceTable.getLineCharCode(1, 0), 'L'.charCodeAt(0), 'L'); + assert.equal(pieceTable.getLineCharCode(1, 1), 'I'.charCodeAt(0), 'I'); + assert.equal(pieceTable.getLineCharCode(1, 2), 'N'.charCodeAt(0), 'N'); + assert.equal(pieceTable.getLineCharCode(1, 3), 'E'.charCodeAt(0), 'E'); + assert.equal(pieceTable.getLineCharCode(1, 4), '1'.charCodeAt(0), '1'); + assert.equal(pieceTable.getLineCharCode(1, 5), '\n'.charCodeAt(0), '\\n'); assert.equal(pieceTable.getLineCharCode(2, 0), 'l'.charCodeAt(0), 'l'); assert.equal(pieceTable.getLineCharCode(2, 1), 'i'.charCodeAt(0), 'i'); assert.equal(pieceTable.getLineCharCode(2, 2), 'n'.charCodeAt(0), 'n'); From 0a60dbc4a85bad5491196e674b9094d1c0202470 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 09:18:13 +0200 Subject: [PATCH 0815/1070] run smoketest in continuous build --- build/tfs/continuous-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 72d1e573fc2..511c37476e1 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -18,6 +18,7 @@ phases: - powershell: | .\scripts\test.bat --tfs .\scripts\test-integration.bat + yarn smoketest name: test - task: PublishTestResults@2 inputs: @@ -77,6 +78,7 @@ phases: - script: | ./scripts/test.sh --tfs ./scripts/test-integration.sh + yarn smoketest name: test - task: PublishTestResults@2 inputs: From 7287c6d1fb4248b6ff0e4ff4832275335657613a Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 09:20:07 +0200 Subject: [PATCH 0816/1070] empty From 3e7d870627dec135d7c2c6be33d9e1422b9d8650 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Tue, 17 Apr 2018 09:20:37 +0200 Subject: [PATCH 0817/1070] refactoring --- .../files/electron-browser/fileActions.ts | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 8cc50654caf..3927971926e 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1364,9 +1364,9 @@ export function validateFileName(parent: ExplorerItem, name: string, allowOverwr return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); } - // a file must always be a leaf - if (pathMapping.last.isFile) { - return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", pathMapping.last.name); + // A file must always be a leaf + if (pathMapping.lastExistingPathSegment.isFile) { + return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", pathMapping.lastExistingPathSegment.name); } // Invalid File name @@ -1388,32 +1388,27 @@ export function validateFileName(parent: ExplorerItem, name: string, allowOverwr interface IMappedPath { fullPathAlreadyExists: boolean; - last: { + lastExistingPathSegment: { isFile: boolean; name: string; }; } function mapPathsToExistingFolders(parent: ExplorerItem, pathNames: string[]): IMappedPath { - let fullPathAlreadyExists = true; - let lastPath = { isFile: false, name: '' }; + let lastExistingPathSegment = { isFile: false, name: '' }; for (const name of pathNames) { const { exists, child } = alreadyExists(parent, name); - if (!exists) { - fullPathAlreadyExists = false; - break; + if (exists) { + lastExistingPathSegment = { isFile: !child.isDirectory, name }; + parent = child; + } else { + return { fullPathAlreadyExists: false, lastExistingPathSegment }; } - - const isFile: boolean = !child.isDirectory; - lastPath.isFile = isFile; - lastPath.name = name; - - parent = child; } - return { fullPathAlreadyExists, last: lastPath }; + return { fullPathAlreadyExists: true, lastExistingPathSegment }; } From f373a15de059b7ed4918797172eeea224a7a939c Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Tue, 17 Apr 2018 09:57:07 +0200 Subject: [PATCH 0818/1070] Committing new JS file --- build/lib/tslint/translationRemindRule.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/lib/tslint/translationRemindRule.js b/build/lib/tslint/translationRemindRule.js index 1409dc54951..ec56aff1535 100644 --- a/build/lib/tslint/translationRemindRule.js +++ b/build/lib/tslint/translationRemindRule.js @@ -71,7 +71,7 @@ var TranslationRemindRuleWalker = /** @class */ (function (_super) { } }); if (!resourceDefined) { - this.addFailureAtNode(node, "Please add '" + resource + "' to ./builds/lib/i18n.resources.json file to use translations here."); + this.addFailureAtNode(node, "Please add '" + resource + "' to ./build/lib/i18n.resources.json file to use translations here."); } }; TranslationRemindRuleWalker.NLS_MODULE = 'vs/nls'; From 403511b55cfff0fe2e063eb9610d6aaf8b92f428 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 10:02:50 +0200 Subject: [PATCH 0819/1070] missing compile --- build/lib/tslint/translationRemindRule.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/lib/tslint/translationRemindRule.js b/build/lib/tslint/translationRemindRule.js index 1409dc54951..ec56aff1535 100644 --- a/build/lib/tslint/translationRemindRule.js +++ b/build/lib/tslint/translationRemindRule.js @@ -71,7 +71,7 @@ var TranslationRemindRuleWalker = /** @class */ (function (_super) { } }); if (!resourceDefined) { - this.addFailureAtNode(node, "Please add '" + resource + "' to ./builds/lib/i18n.resources.json file to use translations here."); + this.addFailureAtNode(node, "Please add '" + resource + "' to ./build/lib/i18n.resources.json file to use translations here."); } }; TranslationRemindRuleWalker.NLS_MODULE = 'vs/nls'; From c22eeb001ece79b23cc555d2566f327d6c7ae01d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 10:04:18 +0200 Subject: [PATCH 0820/1070] download builtin extensions in continuous build --- build/tfs/continuous-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 511c37476e1..009250e7ac0 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -14,6 +14,7 @@ phases: npm run gulp -- hygiene .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile + node build/lib/builtInExtensions.js name: build - powershell: | .\scripts\test.bat --tfs @@ -49,6 +50,7 @@ phases: npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit npm run compile + node build/lib/builtInExtensions.js name: build - script: | DISPLAY=:10 ./scripts/test.sh --tfs @@ -74,6 +76,7 @@ phases: npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit npm run compile + node build/lib/builtInExtensions.js name: build - script: | ./scripts/test.sh --tfs From fffc6c3b1c22abf926ad0e5f6fdc63add677bc85 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 10:33:13 +0200 Subject: [PATCH 0821/1070] fix bad reload call --- src/vs/platform/driver/electron-main/driver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 1f055e46285..858618480d1 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -68,7 +68,7 @@ export class Driver implements IDriver, IWindowDriverRegistry { const window = this.windowsService.getWindowById(windowId); this.reloadingWindowIds.add(windowId); - window.reload(); + this.windowsService.reload(window); } async dispatchKeybinding(windowId: number, keybinding: string): TPromise { From f60e0f914896925287b2ed347d57e8655ab68618 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 10:43:33 +0200 Subject: [PATCH 0822/1070] - Add to composite bar when new composite is added - Sequential order for in-built viewlets --- src/vs/workbench/browser/composite.ts | 5 +++++ .../workbench/browser/parts/activitybar/activitybarPart.ts | 4 +++- src/vs/workbench/browser/parts/compositePart.ts | 2 +- src/vs/workbench/browser/parts/compositebar/compositeBar.ts | 6 ++++-- src/vs/workbench/browser/parts/panel/panelPart.ts | 4 +++- .../parts/debug/electron-browser/debug.contribution.ts | 2 +- .../extensions/electron-browser/extensions.contribution.ts | 2 +- .../parts/scm/electron-browser/scm.contribution.ts | 2 +- .../parts/search/electron-browser/search.contribution.ts | 2 +- src/vs/workbench/services/viewlet/browser/viewlet.ts | 1 + src/vs/workbench/services/viewlet/browser/viewletService.ts | 1 + 11 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/browser/composite.ts b/src/vs/workbench/browser/composite.ts index 04e72f4dfa8..545f12395cf 100644 --- a/src/vs/workbench/browser/composite.ts +++ b/src/vs/workbench/browser/composite.ts @@ -242,6 +242,10 @@ export abstract class CompositeDescriptor { } export abstract class CompositeRegistry { + + private readonly _onDidRegister: Emitter> = new Emitter>(); + readonly onDidRegister: Event> = this._onDidRegister.event; + private composites: CompositeDescriptor[]; constructor() { @@ -254,6 +258,7 @@ export abstract class CompositeRegistry { } this.composites.push(descriptor); + this._onDidRegister.fire(descriptor); } public getComposite(id: string): CompositeDescriptor { diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 298b44a0160..0fc2fd42342 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -87,6 +87,8 @@ export class ActivitybarPart extends Part { private registerListeners(): void { + this.toUnbind.push(this.viewletService.onDidViewletRegister(viewletDescriptor => this.compositeBar.addComposite(viewletDescriptor, false))); + // Activate viewlet action on opening of a viewlet this.toUnbind.push(this.viewletService.onDidViewletOpen(viewlet => this.compositeBar.activateComposite(viewlet.getId()))); @@ -95,7 +97,7 @@ export class ActivitybarPart extends Part { this.toUnbind.push(this.compositeBar.onDidContextMenu(e => this.showContextMenu(e))); this.toUnbind.push(this.viewletService.onDidViewletEnablementChange(({ id, enabled }) => { if (enabled) { - this.compositeBar.addComposite(this.viewletService.getViewlet(id)); + this.compositeBar.addComposite(this.viewletService.getViewlet(id), true); } else { this.compositeBar.removeComposite(id); } diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index e9b89555eea..5e919a5668c 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -77,7 +77,7 @@ export abstract class CompositePart extends Part { private keybindingService: IKeybindingService, protected instantiationService: IInstantiationService, themeService: IThemeService, - private registry: CompositeRegistry, + protected readonly registry: CompositeRegistry, private activeCompositeSettingsKey: string, private defaultCompositeId: string, private nameForTelemetry: string, diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 6b6e3cd458d..682931b6b8f 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -80,7 +80,7 @@ export class CompositeBar implements ICompositeBar { return this._onDidContextMenu.event; } - public addComposite(compositeData: { id: string; name: string, order: number }): void { + public addComposite(compositeData: { id: string; name: string, order: number }, pin: boolean): void { if (this.options.composites.filter(c => c.id === compositeData.id).length) { return; } @@ -89,7 +89,9 @@ export class CompositeBar implements ICompositeBar { i++; } this.options.composites.push(compositeData); - this.pin(compositeData.id, true, i); + if (pin) { + this.pin(compositeData.id, true, i); + } } public removeComposite(id: string): void { diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index d2972c69150..747f4c56d68 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -100,6 +100,8 @@ export class PanelPart extends CompositePart implements IPanelService { private registerListeners(): void { + this.toUnbind.push(this.registry.onDidRegister(panelDescriptor => this.compositeBar.addComposite(panelDescriptor, false))); + // Activate panel action on opening of a panel this.toUnbind.push(this.onDidPanelOpen(panel => { this.compositeBar.activateComposite(panel.getId()); @@ -180,7 +182,7 @@ export class PanelPart extends CompositePart implements IPanelService { if (descriptor && descriptor.enabled !== enabled) { descriptor.enabled = enabled; if (enabled) { - this.compositeBar.addComposite(descriptor); + this.compositeBar.addComposite(descriptor, true); } else { this.compositeBar.removeComposite(id); } diff --git a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts index 2b6f3550af8..c3f0e87d3df 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts @@ -86,7 +86,7 @@ Registry.as(ViewletExtensions.Viewlets).registerViewlet(new Vie VIEWLET_ID, nls.localize('debug', "Debug"), 'debug', - 40 + 3 )); const openViewletKb: IKeybindings = { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts index 17911ae1a23..c884bb1d179 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts @@ -120,7 +120,7 @@ const viewletDescriptor = new ViewletDescriptor( VIEWLET_ID, localize('extensions', "Extensions"), 'extensions', - 100 + 4 ); Registry.as(ViewletExtensions.Viewlets) diff --git a/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts b/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts index 9b3b978ffcf..95bc4991d0f 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts @@ -39,7 +39,7 @@ const viewletDescriptor = new ViewletDescriptor( VIEWLET_ID, localize('source control', "Source Control"), 'scm', - 36 + 2 ); Registry.as(ViewletExtensions.Viewlets) diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 5b65ba18480..90b31f579d5 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -420,7 +420,7 @@ Registry.as(ViewletExtensions.Viewlets).registerViewlet(new Vie VIEW_ID, nls.localize('name', "Search"), 'search', - 10 + 1 )); Registry.as(PanelExtensions.Panels).registerPanel(new PanelDescriptor( diff --git a/src/vs/workbench/services/viewlet/browser/viewlet.ts b/src/vs/workbench/services/viewlet/browser/viewlet.ts index ba1f9f17a5f..02006a2397a 100644 --- a/src/vs/workbench/services/viewlet/browser/viewlet.ts +++ b/src/vs/workbench/services/viewlet/browser/viewlet.ts @@ -16,6 +16,7 @@ export const IViewletService = createDecorator('viewletService' export interface IViewletService { _serviceBrand: ServiceIdentifier; + onDidViewletRegister: Event; onDidViewletOpen: Event; onDidViewletClose: Event; onDidViewletEnablementChange: Event<{ id: string, enabled: boolean }>; diff --git a/src/vs/workbench/services/viewlet/browser/viewletService.ts b/src/vs/workbench/services/viewlet/browser/viewletService.ts index a54cd61ec89..0a5271c8081 100644 --- a/src/vs/workbench/services/viewlet/browser/viewletService.ts +++ b/src/vs/workbench/services/viewlet/browser/viewletService.ts @@ -33,6 +33,7 @@ export class ViewletService implements IViewletService { private _onDidViewletEnable = new Emitter<{ id: string, enabled: boolean }>(); private disposables: IDisposable[] = []; + public get onDidViewletRegister(): Event { return >this.viewletRegistry.onDidRegister; } public get onDidViewletOpen(): Event { return this.sidebarPart.onDidViewletOpen; } public get onDidViewletClose(): Event { return this.sidebarPart.onDidViewletClose; } public get onDidViewletEnablementChange(): Event<{ id: string, enabled: boolean }> { return this._onDidViewletEnable.event; } From 2bd7803ed4e4587161a270fd82708d6d921e5c60 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 10:54:00 +0200 Subject: [PATCH 0823/1070] smoketest --- build/tfs/continuous-build.yml | 9 --------- build/tfs/product-build.yml | 9 +++++++++ package.json | 1 - test/electron/index.js | 6 ------ yarn.lock | 34 ---------------------------------- 5 files changed, 9 insertions(+), 50 deletions(-) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 009250e7ac0..7e75b568ede 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -21,9 +21,6 @@ phases: .\scripts\test-integration.bat yarn smoketest name: test - - task: PublishTestResults@2 - inputs: - testResultsFiles: '.build\tests\unit-test-results.xml' - phase: Linux queue: Hosted Linux Preview @@ -56,9 +53,6 @@ phases: DISPLAY=:10 ./scripts/test.sh --tfs # DISPLAY=:10 ./scripts/test-integration.sh name: test - - task: PublishTestResults@2 - inputs: - testResultsFiles: '.build/tests/unit-test-results.xml' - phase: macOS queue: Hosted macOS Preview @@ -83,6 +77,3 @@ phases: ./scripts/test-integration.sh yarn smoketest name: test - - task: PublishTestResults@2 - inputs: - testResultsFiles: '.build/tests/unit-test-results.xml' diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 3b67df7dcf4..2727f5eed1c 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -29,6 +29,7 @@ phases: $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js + node build/lib/builtInExtensions.js - powershell: | $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" @@ -39,6 +40,7 @@ phases: - powershell: | npm run gulp -- "electron-$(VSCODE_ARCH)" .\scripts\test.bat --build --tfs + yarn smoketest -- --build "$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)" name: test - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 @@ -253,6 +255,7 @@ phases: npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js + node build/lib/builtInExtensions.js - script: | VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min @@ -261,6 +264,7 @@ phases: - script: | npm run gulp -- "electron-$(VSCODE_ARCH)" DISPLAY=:10 ./scripts/test.sh --build --tfs + # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)" name: test - script: | @@ -303,6 +307,7 @@ phases: npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js + node build/lib/builtInExtensions.js - script: | VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min @@ -311,6 +316,7 @@ phases: - script: | npm run gulp -- "electron-$(VSCODE_ARCH)" DISPLAY=:10 ./scripts/test.sh --build --tfs + # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)" name: test - script: | @@ -345,6 +351,7 @@ phases: npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js + node build/lib/builtInExtensions.js - script: | VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" \ @@ -354,6 +361,8 @@ phases: - script: | ./scripts/test.sh --build --tfs + APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`" + yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME" name: test - script: | diff --git a/package.json b/package.json index 1e15784e1b8..5714b70e29c 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,6 @@ "minimatch": "^2.0.10", "mkdirp": "^0.5.0", "mocha": "^2.2.5", - "mocha-junit-reporter": "^1.17.0", "object-assign": "^4.0.1", "optimist": "0.3.5", "p-all": "^1.0.0", diff --git a/test/electron/index.js b/test/electron/index.js index 770bb853d4c..ee98b8f8ea3 100644 --- a/test/electron/index.js +++ b/test/electron/index.js @@ -8,7 +8,6 @@ const { tmpdir } = require('os'); const { join } = require('path'); const path = require('path'); const mocha = require('mocha'); -const JUnitReporter = require('mocha-junit-reporter'); const events = require('events'); const defaultReporterName = process.platform === 'win32' ? 'list' : 'spec'; @@ -143,11 +142,6 @@ app.on('ready', () => { if (argv.tfs) { new TFSReporter(runner); - new JUnitReporter(runner, { - reporterOptions: { - mochaFile: '.build/tests/unit-test-results.xml' - } - }); } else { const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter); let Reporter; diff --git a/yarn.lock b/yarn.lock index 38c1ea2a301..139077c5c6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -602,10 +602,6 @@ chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -charenc@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - cheerio@^1.0.0-rc.1: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -885,10 +881,6 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -crypt@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - cryptiles@0.2.x: version "0.2.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" @@ -2753,10 +2745,6 @@ is-buffer@^1.0.2: version "1.1.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" -is-buffer@~1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -3510,14 +3498,6 @@ math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" -md5@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" - mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -3671,16 +3651,6 @@ mksnapshot@^0.3.0: fs-extra "0.26.7" request "^2.79.0" -mocha-junit-reporter@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.17.0.tgz#2e5149ed40fc5d2e3ca71e42db5ab1fec9c6d85c" - dependencies: - debug "^2.2.0" - md5 "^2.1.0" - mkdirp "~0.5.1" - strip-ansi "^4.0.0" - xml "^1.0.0" - mocha@^2.0.1, mocha@^2.2.5: version "2.5.3" resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" @@ -6029,10 +5999,6 @@ xml2js@^0.4.19: sax ">=0.6.0" xmlbuilder "~9.0.1" -xml@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - xmlbuilder@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-0.4.3.tgz#c4614ba74e0ad196e609c9272cd9e1ddb28a8a58" From 4f5e60649757f1c66c2dd6a9047784b34b960f28 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Tue, 17 Apr 2018 11:04:47 +0200 Subject: [PATCH 0824/1070] fixes #46744: inputbox hides again if all slashes are removed --- .../parts/files/electron-browser/views/explorerViewer.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 05492a17ba5..a2dc9890670 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -356,6 +356,9 @@ export class FileRenderer implements IRenderer { formatContent: true }); } + else { // fixes #46744: inputbox hides again if all slashes are removed + inputBox.hideMessage(); + } } } } From 98c8026784b976f879a794858bcce3691f45bf2d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 11:07:53 +0200 Subject: [PATCH 0825/1070] just have `createDirectory`, #47475 --- src/vs/vscode.proposed.d.ts | 13 +++++++++---- src/vs/workbench/api/node/extHostFileSystem.ts | 16 +++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b28b3f0c0ef..1a9db25a0f5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -232,7 +232,7 @@ declare module 'vscode' { // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 5; + _version: 6; /** * An event to signal that a resource has been created, changed, or deleted. @@ -258,6 +258,14 @@ declare module 'vscode' { */ readDirectory(uri: Uri, token: CancellationToken): [string, FileStat2][] | Thenable<[string, FileStat2][]>; + /** + * Create a new directory. *Note* that new files are created via `write`-calls. + * + * @param uri The uri of the *new* folder. + * @param token A cancellation token. + */ + createDirectory(uri: Uri, token: CancellationToken): FileStat2 | Thenable; + /** * Read the entire contents of a file. * @@ -292,9 +300,6 @@ declare module 'vscode' { // todo@remote // ? useTrash, expose trash delete(uri: Uri, token: CancellationToken): void | Thenable; - - // todo@remote - create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): FileStat2 | Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 23c778ef52c..965c01793e6 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -59,7 +59,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 5; + _version: 6; onDidChange: vscode.Event; @@ -131,14 +131,8 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { } }); } - create(resource: vscode.Uri, options: { type: vscode.FileType2; }): Thenable { - if (options.type === FileType2.Directory) { - return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); - } else { - return this._delegate.write(resource, Buffer.from([])) - .then(() => this._delegate.stat(resource)) - .then(stat => FileSystemProviderShim._modernizeFileStat(stat)); - } + createDirectory(resource: vscode.Uri): Thenable { + return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } // --- read/write @@ -174,7 +168,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 5) { + if (newProvider && newProvider._version === 6) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); @@ -257,7 +251,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType2.Directory }, token)); + return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); } $provideFileSearchResults(handle: number, session: number, query: string): TPromise { From a54b4e57c8778dfd129ab7d639b6ca4112e17fe0 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 11:14:06 +0200 Subject: [PATCH 0826/1070] backslash --- build/tfs/product-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index 2727f5eed1c..e8ff8a943b8 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -40,7 +40,7 @@ phases: - powershell: | npm run gulp -- "electron-$(VSCODE_ARCH)" .\scripts\test.bat --build --tfs - yarn smoketest -- --build "$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)" + yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" name: test - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 From 46737fb68db3327ed0393dadf9d1d4515f8e86f0 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 11:27:44 +0200 Subject: [PATCH 0827/1070] Check in missing monaco.d.ts --- src/vs/monaco.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index c690f0d6e17..b6a73b5120e 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -4556,7 +4556,7 @@ declare namespace monaco.languages { * editor will use the range at the current position or the * current position itself. */ - range: IRange; + range?: IRange; } /** From 523abdc0c922bb8b87643ecc9635ee9ab61ae600 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 11:32:11 +0200 Subject: [PATCH 0828/1070] Fix #47748 --- src/vs/editor/common/services/resourceConfigurationImpl.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/common/services/resourceConfigurationImpl.ts b/src/vs/editor/common/services/resourceConfigurationImpl.ts index a407bf1c698..6b75152e474 100644 --- a/src/vs/editor/common/services/resourceConfigurationImpl.ts +++ b/src/vs/editor/common/services/resourceConfigurationImpl.ts @@ -11,6 +11,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { IPosition, Position } from 'vs/editor/common/core/position'; import { IModeService } from 'vs/editor/common/services/modeService'; import { IModelService } from 'vs/editor/common/services/modelService'; +import { basename } from 'vs/base/common/paths'; export class TextResourceConfigurationService extends Disposable implements ITextResourceConfigurationService { @@ -42,6 +43,6 @@ export class TextResourceConfigurationService extends Disposable implements ITex if (model) { return position ? this.modeService.getLanguageIdentifier(model.getLanguageIdAtPosition(position.lineNumber, position.column)).language : model.getLanguageIdentifier().language; } - return this.modeService.getModeIdByFilenameOrFirstLine(resource.fsPath); + return this.modeService.getModeIdByFilenameOrFirstLine(basename(resource.path)); } } \ No newline at end of file From 5b7d632f60cf6da7c65060c8a6ce6d01fb48146a Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 11:34:34 +0200 Subject: [PATCH 0829/1070] scm viewlet: persist view states --- .../browser/parts/views/contributableViews.ts | 59 ++++++++++++++++++- .../parts/scm/electron-browser/scmViewlet.ts | 12 +++- 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/contributableViews.ts b/src/vs/workbench/browser/parts/views/contributableViews.ts index cb97555cfa2..bcad61e4d88 100644 --- a/src/vs/workbench/browser/parts/views/contributableViews.ts +++ b/src/vs/workbench/browser/parts/views/contributableViews.ts @@ -3,11 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IDisposable } from 'vs/base/common/lifecycle'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { ViewsRegistry, IViewDescriptor, ViewLocation } from 'vs/workbench/common/views'; import { IContextKeyService, IContextKeyChangeEvent, IReadableSet } from 'vs/platform/contextkey/common/contextkey'; import { Event, chain, filterEvent, Emitter } from 'vs/base/common/event'; import { sortedDiff, firstIndex, move } from 'vs/base/common/arrays'; +import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; function filterViewEvent(location: ViewLocation, event: Event): Event { return chain(event) @@ -161,6 +163,10 @@ class ViewDescriptorCollection { private isViewDescriptorActive(viewDescriptor: IViewDescriptor): boolean { return !viewDescriptor.when || this.contextKeyService.contextMatchesRules(viewDescriptor.when); } + + dispose(): void { + this.disposables = dispose(this.disposables); + } } export interface IView { @@ -180,7 +186,7 @@ export interface IViewDescriptorRef { export class ContributableViewsModel { - private viewStates = new Map(); + protected viewStates = new Map(); readonly viewDescriptors: IViewDescriptor[] = []; get visibleViewDescriptors(): IViewDescriptor[] { @@ -203,6 +209,7 @@ export class ContributableViewsModel { @IContextKeyService contextKeyService: IContextKeyService ) { const viewDescriptorCollection = new ViewDescriptorCollection(location, contextKeyService); + this.disposables.push(viewDescriptorCollection); viewDescriptorCollection.onDidChange(() => this.onDidChangeViewDescriptors(viewDescriptorCollection.viewDescriptors), this, this.disposables); this.onDidChangeViewDescriptors(viewDescriptorCollection.viewDescriptors); @@ -346,4 +353,52 @@ export class ContributableViewsModel { this.viewDescriptors.splice(0, this.viewDescriptors.length, ...viewDescriptors); } + + dispose(): void { + this.disposables = dispose(this.disposables); + } +} + +interface ISerializedViewState { + id: string; + state: IViewState; +} + +export class PersistentContributableViewsModel extends ContributableViewsModel { + + constructor( + location: ViewLocation, + private readonly viewletStateStorageId: string, + @IContextKeyService contextKeyService: IContextKeyService, + @IStorageService private storageService: IStorageService, + @IWorkspaceContextService private contextService: IWorkspaceContextService + ) { + super(location, contextKeyService); + this.loadViewsStates(); + } + + saveViewsStates(): void { + const serializedViewStates: ISerializedViewState[] = []; + this.viewStates.forEach((state, id) => serializedViewStates.push({ id, state })); + const raw = JSON.stringify(serializedViewStates); + + const scope = this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY ? StorageScope.WORKSPACE : StorageScope.GLOBAL; + this.storageService.store(this.viewletStateStorageId, raw, scope); + } + + private loadViewsStates(): void { + const scope = this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY ? StorageScope.WORKSPACE : StorageScope.GLOBAL; + const raw = this.storageService.get(this.viewletStateStorageId, scope, '[]'); + const serializedViewsStates = JSON.parse(raw) as ISerializedViewState[]; + console.log(serializedViewsStates); + + for (const { id, state } of serializedViewsStates) { + this.viewStates.set(id, state); + } + } + + dispose(): void { + this.saveViewsStates(); + super.dispose(); + } } \ No newline at end of file diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 3c08d19d5ce..035623c0973 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -57,7 +57,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ThrottledDelayer } from 'vs/base/common/async'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { ContributableViewsModel, IViewDescriptorRef } from 'vs/workbench/browser/parts/views/contributableViews'; +import { IViewDescriptorRef, PersistentContributableViewsModel } from 'vs/workbench/browser/parts/views/contributableViews'; import { ViewLocation, IViewDescriptor } from 'vs/workbench/common/views'; import { ViewsViewletPanel } from 'vs/workbench/browser/parts/views/viewsViewlet'; @@ -1050,7 +1050,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { get repositories(): ISCMRepository[] { return this._repositories; } get selectedRepositories(): ISCMRepository[] { return this.repositoryPanels.map(p => p.repository); } - private contributedViews: ContributableViewsModel; + private contributedViews: PersistentContributableViewsModel; private contextMenuDisposables: IDisposable[] = []; constructor( @@ -1077,7 +1077,8 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.menus = instantiationService.createInstance(SCMMenus, undefined); this.menus.onDidChangeTitle(this.updateTitleArea, this, this.disposables); - this.contributedViews = new ContributableViewsModel(ViewLocation.SCM, contextKeyService); + this.contributedViews = new PersistentContributableViewsModel(ViewLocation.SCM, 'scm.views', contextKeyService, storageService, contextService); + this.disposables.push(this.contributedViews); } async create(parent: HTMLElement): TPromise { @@ -1393,6 +1394,11 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.mainPanel.hide(repository); } + shutdown(): void { + this.contributedViews.saveViewsStates(); + super.shutdown(); + } + dispose(): void { this.disposables = dispose(this.disposables); this.contextMenuDisposables = dispose(this.contextMenuDisposables); From 829f62a7df830506a36ec290ea571f6da43fb2af Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 11:36:04 +0200 Subject: [PATCH 0830/1070] remove console.log --- src/vs/workbench/browser/parts/views/contributableViews.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/views/contributableViews.ts b/src/vs/workbench/browser/parts/views/contributableViews.ts index bcad61e4d88..dfcb0227897 100644 --- a/src/vs/workbench/browser/parts/views/contributableViews.ts +++ b/src/vs/workbench/browser/parts/views/contributableViews.ts @@ -390,7 +390,6 @@ export class PersistentContributableViewsModel extends ContributableViewsModel { const scope = this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY ? StorageScope.WORKSPACE : StorageScope.GLOBAL; const raw = this.storageService.get(this.viewletStateStorageId, scope, '[]'); const serializedViewsStates = JSON.parse(raw) as ISerializedViewState[]; - console.log(serializedViewsStates); for (const { id, state } of serializedViewsStates) { this.viewStates.set(id, state); From 8c1e3a7b3cf2ada5671ff5e804b351342e52e5a2 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 11:40:05 +0200 Subject: [PATCH 0831/1070] allow to return range or range and placeholder, #7340 --- src/vs/editor/common/modes.ts | 7 +++- src/vs/editor/contrib/rename/rename.ts | 40 ++++++++++--------- .../editor/contrib/rename/renameInputField.ts | 4 +- src/vs/monaco.d.ts | 7 +++- src/vs/vscode.proposed.d.ts | 2 +- .../mainThreadLanguageFeatures.ts | 4 +- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- .../api/node/extHostLanguageFeatures.ts | 26 +++++++++--- src/vs/workbench/api/node/extHostTypes.ts | 2 +- 9 files changed, 60 insertions(+), 34 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 5c09c49af21..46e81803edc 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -929,9 +929,14 @@ export interface WorkspaceEdit { rejectReason?: string; // TODO@joh, move to rename } +export interface RenameLocation { + range: IRange; + text: string; +} + export interface RenameProvider { provideRenameEdits(model: model.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable; - resolveRenameLocation?(model: model.ITextModel, position: Position, token: CancellationToken): IRange | Thenable; + resolveRenameLocation?(model: model.ITextModel, position: Position, token: CancellationToken): RenameLocation | Thenable; } diff --git a/src/vs/editor/contrib/rename/rename.ts b/src/vs/editor/contrib/rename/rename.ts index 8c1b35360ea..803d4ac0b8c 100644 --- a/src/vs/editor/contrib/rename/rename.ts +++ b/src/vs/editor/contrib/rename/rename.ts @@ -23,10 +23,10 @@ import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { optional } from 'vs/platform/instantiation/common/instantiation'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { asWinJsPromise } from 'vs/base/common/async'; -import { WorkspaceEdit, RenameProviderRegistry, RenameProvider } from 'vs/editor/common/modes'; +import { WorkspaceEdit, RenameProviderRegistry, RenameProvider, RenameLocation } from 'vs/editor/common/modes'; import { Position } from 'vs/editor/common/core/position'; import { alert } from 'vs/base/browser/ui/aria/aria'; -import { Range, IRange } from 'vs/editor/common/core/range'; +import { Range } from 'vs/editor/common/core/range'; import { MessageController } from 'vs/editor/contrib/message/messageController'; import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; @@ -47,23 +47,26 @@ class RenameSkeleton { return this._provider.length > 0; } - async resolveRenameLocation(): TPromise { + async resolveRenameLocation(): TPromise { let [provider] = this._provider; - let range: IRange; + let res: RenameLocation; if (provider.resolveRenameLocation) { - range = await asWinJsPromise(token => provider.resolveRenameLocation(this.model, this.position, token)); + res = await asWinJsPromise(token => provider.resolveRenameLocation(this.model, this.position, token)); } - if (!range) { + if (!res) { let word = this.model.getWordAtPosition(this.position); if (word) { - range = new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn); + res = { + range: new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn), + text: word.word + }; } } - return range; + return res; } async provideRenameEdits(newName: string, i: number = 0, rejects: string[] = [], position: Position = this.position): TPromise { @@ -131,30 +134,29 @@ class RenameController implements IEditorContribution { const position = this.editor.getPosition(); const skeleton = new RenameSkeleton(this.editor.getModel(), position); - let range: IRange; + let loc: RenameLocation; try { - range = await skeleton.resolveRenameLocation(); + loc = await skeleton.resolveRenameLocation(); } catch (e) { MessageController.get(this.editor).showMessage(e, position); return undefined; } - if (!range) { + if (!loc) { return undefined; } - let text = this.editor.getModel().getValueInRange(range); let selection = this.editor.getSelection(); let selectionStart = 0; - let selectionEnd = text.length; + let selectionEnd = loc.text.length; - if (!selection.isEmpty() && selection.startLineNumber === selection.endLineNumber) { - selectionStart = Math.max(0, selection.startColumn - range.startColumn); - selectionEnd = Math.min(range.endColumn, selection.endColumn) - range.startColumn; + if (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(loc.range, selection)) { + selectionStart = Math.max(0, selection.startColumn - loc.range.startColumn); + selectionEnd = Math.min(loc.range.endColumn, selection.endColumn) - loc.range.startColumn; } this._renameInputVisible.set(true); - return this._renameInputField.getInput(Range.lift(range), text, selectionStart, selectionEnd).then(newNameOrFocusFlag => { + return this._renameInputField.getInput(loc.range, loc.text, selectionStart, selectionEnd).then(newNameOrFocusFlag => { this._renameInputVisible.reset(); if (typeof newNameOrFocusFlag === 'boolean') { @@ -169,7 +171,7 @@ class RenameController implements IEditorContribution { const edit = new BulkEdit(this.editor, null, this._textModelResolverService, this._fileService); const state = new EditorState(this.editor, CodeEditorStateFlag.Position | CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection | CodeEditorStateFlag.Scroll); - const renameOperation = skeleton.provideRenameEdits(newNameOrFocusFlag, 0, [], Range.lift(range).getStartPosition()).then(result => { + const renameOperation = skeleton.provideRenameEdits(newNameOrFocusFlag, 0, [], Range.lift(loc.range).getStartPosition()).then(result => { if (result.rejectReason) { if (state.validate(this.editor)) { MessageController.get(this.editor).showMessage(result.rejectReason, this.editor.getPosition()); @@ -185,7 +187,7 @@ class RenameController implements IEditorContribution { this.editor.setSelection(selection); } // alert - alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", text, newNameOrFocusFlag, edit.ariaMessage())); + alert(nls.localize('aria', "Successfully renamed '{0}' to '{1}'. Summary: {2}", loc.text, newNameOrFocusFlag, edit.ariaMessage())); }); }, err => { diff --git a/src/vs/editor/contrib/rename/renameInputField.ts b/src/vs/editor/contrib/rename/renameInputField.ts index 4eb6d89148d..e7f6c7df33a 100644 --- a/src/vs/editor/contrib/rename/renameInputField.ts +++ b/src/vs/editor/contrib/rename/renameInputField.ts @@ -9,7 +9,7 @@ import 'vs/css!./renameInputField'; import { localize } from 'vs/nls'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; -import { Range } from 'vs/editor/common/core/range'; +import { Range, IRange } from 'vs/editor/common/core/range'; import { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser'; import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService'; import { inputBackground, inputBorder, inputForeground, widgetShadow } from 'vs/platform/theme/common/colorRegistry'; @@ -123,7 +123,7 @@ export default class RenameInputField implements IContentWidget, IDisposable { } } - public getInput(where: Range, value: string, selectionStart: number, selectionEnd: number): TPromise { + public getInput(where: IRange, value: string, selectionStart: number, selectionEnd: number): TPromise { this._position = new Position(where.startLineNumber, where.startColumn); this._inputField.value = value; diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index b6a73b5120e..d7164a77c2e 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -5016,9 +5016,14 @@ declare namespace monaco.languages { rejectReason?: string; } + export interface RenameLocation { + range: IRange; + text: string; + } + export interface RenameProvider { provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable; - resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): IRange | Thenable; + resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): RenameLocation | Thenable; } export interface Command { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 1a9db25a0f5..01ee496996d 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -503,7 +503,7 @@ declare module 'vscode' { * @param token A cancellation token. * @return The range of the identifier that is to be renamed. The lack of a result can signaled by returning `undefined` or `null`. */ - resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; } diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index d9057794eab..edebb1a5bd2 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -13,7 +13,7 @@ import { WorkspaceSymbolProviderRegistry, IWorkspaceSymbolProvider } from 'vs/wo import { wireCancellationToken } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Position as EditorPosition } from 'vs/editor/common/core/position'; -import { Range as EditorRange, IRange } from 'vs/editor/common/core/range'; +import { Range as EditorRange } from 'vs/editor/common/core/range'; import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ISerializedLanguageConfiguration, ISerializedRegExp, ISerializedIndentationRule, ISerializedOnEnterRule, LocationDto, SymbolInformationDto, CodeActionDto, reviveWorkspaceEditDto, ISerializedDocumentFilter } from '../node/extHost.protocol'; import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration'; @@ -258,7 +258,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha return wireCancellationToken(token, this._proxy.$provideRenameEdits(handle, model.uri, position, newName)).then(reviveWorkspaceEditDto); }, resolveRenameLocation: supportResolveLocation - ? (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => wireCancellationToken(token, this._proxy.$resolveRenameLocation(handle, model.uri, position)) + ? (model: ITextModel, position: EditorPosition, token: CancellationToken): Thenable => wireCancellationToken(token, this._proxy.$resolveRenameLocation(handle, model.uri, position)) : undefined }); } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 4d160267c77..2301dee43bc 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -710,7 +710,7 @@ export interface ExtHostLanguageFeaturesShape { $resolveWorkspaceSymbol(handle: number, symbol: SymbolInformationDto): TPromise; $releaseWorkspaceSymbols(handle: number, id: number): void; $provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string): TPromise; - $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise; + $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise; $provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext): TPromise; $resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion): TPromise; $releaseCompletionItems(handle: number, id: number): void; diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 0d4825c77bd..2c5b7c4eb7d 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -22,6 +22,7 @@ import { regExpLeadsToEndlessLoop } from 'vs/base/common/strings'; import { IPosition } from 'vs/editor/common/core/position'; import { IRange } from 'vs/editor/common/core/range'; import { isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { isObject } from 'vs/base/common/types'; // --- adapter @@ -506,7 +507,7 @@ class RenameAdapter { }); } - resolveRenameLocation(resource: URI, position: IPosition): TPromise { + resolveRenameLocation(resource: URI, position: IPosition): TPromise { if (typeof this._provider.resolveRenameLocation !== 'function') { return TPromise.as(undefined); } @@ -514,15 +515,28 @@ class RenameAdapter { let doc = this._documents.getDocumentData(resource).document; let pos = TypeConverters.toPosition(position); - return asWinJsPromise(token => this._provider.resolveRenameLocation(doc, pos, token)).then(range => { + return asWinJsPromise(token => this._provider.resolveRenameLocation(doc, pos, token)).then(rangeOrLocation => { + + let range: vscode.Range; + let text: string; + if (Range.isRange(rangeOrLocation)) { + range = rangeOrLocation; + text = doc.getText(rangeOrLocation); + + } else if (isObject(rangeOrLocation)) { + range = rangeOrLocation.range; + text = rangeOrLocation.placeholder; + } + if (!range) { return undefined; } - if (range && (!range.isSingleLine || range.start.line !== pos.line)) { - console.warn('INVALID rename context, range must be single line and on the same line'); + + if (!range.contains(pos)) { + console.warn('INVALID rename location: range must contain position'); return undefined; } - return TypeConverters.fromRange(range); + return { range: TypeConverters.fromRange(range), text }; }); } } @@ -1088,7 +1102,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._withAdapter(handle, RenameAdapter, adapter => adapter.provideRenameEdits(URI.revive(resource), position, newName)); } - $resolveRenameLocation(handle: number, resource: URI, position: IPosition): TPromise { + $resolveRenameLocation(handle: number, resource: URI, position: IPosition): TPromise { return this._withAdapter(handle, RenameAdapter, adapter => adapter.resolveRenameLocation(resource, position)); } diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index 1423c277882..d988a15447d 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -208,7 +208,7 @@ export class Position { export class Range { - static isRange(thing: any): thing is Range { + static isRange(thing: any): thing is vscode.Range { if (thing instanceof Range) { return true; } From 6428c00286eadee204eea5d746ddd1a70dc0b857 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 11:54:45 +0200 Subject: [PATCH 0832/1070] move api to stable, #7340 --- src/vs/vscode.d.ts | 12 ++++++++++++ src/vs/vscode.proposed.d.ts | 19 ------------------- .../api/node/extHostLanguageFeatures.ts | 6 +++--- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index f637aad8448..9ce91242cb1 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -2746,6 +2746,18 @@ declare module 'vscode' { * signaled by returning `undefined` or `null`. */ provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): ProviderResult; + + /** + * Optional function for resolving and validating a position *before* running rename. The result can + * be a range or a range and a placeholder text. The placeholder text should be the identifier of the symbol + * which is being renamed - when omitted the text in the returned range is used. + * + * @param document The document in which rename will be invoked. + * @param position The position at which rename will be invoked. + * @param token A cancellation token. + * @return The range or range and placeholder text of the identifier that is to be renamed. The lack of a result can signaled by returning `undefined` or `null`. + */ + resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; } /** diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 01ee496996d..454722f40c5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -490,25 +490,6 @@ declare module 'vscode' { //#endregion - //#region Joh: rename context - - export interface RenameProvider2 extends RenameProvider { - - /** - * Optional function for resolving and validating a position at which rename is - * being carried out. - * - * @param document The document in which rename will be invoked. - * @param position The position at which rename will be invoked. - * @param token A cancellation token. - * @return The range of the identifier that is to be renamed. The lack of a result can signaled by returning `undefined` or `null`. - */ - resolveRenameLocation?(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; - - } - - //#endregion - //#region Joao: SCM validation /** diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 2c5b7c4eb7d..5e99422f862 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -467,14 +467,14 @@ class NavigateTypeAdapter { class RenameAdapter { - static supportsResolving(provider: vscode.RenameProvider2): boolean { + static supportsResolving(provider: vscode.RenameProvider): boolean { return typeof provider.resolveRenameLocation === 'function'; } private _documents: ExtHostDocuments; - private _provider: vscode.RenameProvider2; + private _provider: vscode.RenameProvider; - constructor(documents: ExtHostDocuments, provider: vscode.RenameProvider2) { + constructor(documents: ExtHostDocuments, provider: vscode.RenameProvider) { this._documents = documents; this._provider = provider; } From 9396ee524821f98a03d545e02203e499cdf13e6e Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 12:22:30 +0200 Subject: [PATCH 0833/1070] Fixes #12887 --- .../common/controller/cursorWordOperations.ts | 15 +++++++++------ .../editor/test/browser/controller/cursor.test.ts | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/common/controller/cursorWordOperations.ts b/src/vs/editor/common/controller/cursorWordOperations.ts index 24bbcac19c3..e14d715fbbf 100644 --- a/src/vs/editor/common/controller/cursorWordOperations.ts +++ b/src/vs/editor/common/controller/cursorWordOperations.ts @@ -384,20 +384,20 @@ export class WordOperations { public static word(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean, position: Position): SingleCursorState { const wordSeparators = getMapForWordSeparators(config.wordSeparators); let prevWord = WordOperations._findPreviousWordOnLine(wordSeparators, model, position); - let isInPrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start < position.column - 1 && position.column - 1 <= prevWord.end); let nextWord = WordOperations._findNextWordOnLine(wordSeparators, model, position); - let isInNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start < position.column - 1 && position.column - 1 <= nextWord.end); if (!inSelectionMode) { // Entering word selection for the first time + const isTouchingPrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start <= position.column - 1 && position.column - 1 <= prevWord.end); + const isTouchingNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start <= position.column - 1 && position.column - 1 <= nextWord.end); let startColumn: number; let endColumn: number; - if (isInPrevWord) { + if (isTouchingPrevWord) { startColumn = prevWord.start + 1; endColumn = prevWord.end + 1; - } else if (isInNextWord) { + } else if (isTouchingNextWord) { startColumn = nextWord.start + 1; endColumn = nextWord.end + 1; } else { @@ -419,13 +419,16 @@ export class WordOperations { ); } + const isInsidePrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start < position.column - 1 && position.column - 1 < prevWord.end); + const isInsideNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start < position.column - 1 && position.column - 1 < nextWord.end); + let startColumn: number; let endColumn: number; - if (isInPrevWord) { + if (isInsidePrevWord) { startColumn = prevWord.start + 1; endColumn = prevWord.end + 1; - } else if (isInNextWord) { + } else if (isInsideNextWord) { startColumn = nextWord.start + 1; endColumn = nextWord.end + 1; } else { diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index 288be626ea3..b33aeef085a 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -1802,6 +1802,21 @@ suite('Editor Controller - Regression tests', () => { model.dispose(); }); + test('issue #12887: Double-click highlighting separating white space', () => { + let model = createTextModel( + [ + 'abc def' + ].join('\n') + ); + + withTestCodeEditor(null, { model: model }, (editor, cursor) => { + CoreNavigationCommands.WordSelect.runCoreEditorCommand(cursor, { position: new Position(1, 5) }); + assert.deepEqual(cursor.getSelection(), new Selection(1, 5, 1, 8)); + }); + + model.dispose(); + }); + test('issue #9675: Undo/Redo adds a stop in between CHN Characters', () => { usingCursor({ text: [ From 3bc224fb0d0c92efba67f0ed4a8b2ac0a01dcdb1 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 12:49:44 +0200 Subject: [PATCH 0834/1070] Fixes #15761 --- src/vs/editor/common/commonCodeEditor.ts | 2 +- .../test/browser/controller/cursor.test.ts | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index 7424170f20c..9f4fcd3c175 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -797,7 +797,7 @@ export abstract class CommonCodeEditor extends Disposable { } this.model.pushEditOperations(this.cursor.getSelections(), edits, () => { - return endCursorState ? endCursorState : this.cursor.getSelections(); + return endCursorState ? endCursorState : null; }); if (endCursorState) { diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index b33aeef085a..59d193db530 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -2090,6 +2090,41 @@ suite('Editor Controller - Regression tests', () => { model.dispose(); }); + + test('issue #15761: Cursor doesn\'t move in a redo operation', () => { + let model = createTextModel( + [ + 'hello' + ].join('\n') + ); + + withTestCodeEditor(null, { model: model }, (editor, cursor) => { + editor.setSelections([ + new Selection(1, 4, 1, 4) + ]); + + editor.executeEdits('test', [{ + range: new Range(1, 1, 1, 1), + text: '*', + forceMoveMarkers: true + }]); + assertCursor(cursor, [ + new Selection(1, 5, 1, 5), + ]); + + cursorCommand(cursor, H.Undo, null, 'keyboard'); + assertCursor(cursor, [ + new Selection(1, 4, 1, 4), + ]); + + cursorCommand(cursor, H.Redo, null, 'keyboard'); + assertCursor(cursor, [ + new Selection(1, 5, 1, 5), + ]); + }); + + model.dispose(); + }); }); suite('Editor Controller - Cursor Configuration', () => { From c3b31c0446ab13690e0e51a4e704c82409eb53d4 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 13:05:31 +0200 Subject: [PATCH 0835/1070] debug: remove type and label from IDebuggerContribution fixes #46550 --- src/vs/workbench/parts/debug/common/debug.ts | 7 +- .../parts/debug/node/debugAdapter.ts | 78 +++++++++---------- 2 files changed, 41 insertions(+), 44 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 5f43b0a3c1a..bc9a8c933fb 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -404,8 +404,6 @@ export interface IAdapterExecutable { } export interface IPlatformSpecificAdapterContribution { - type?: string; // TODO: doesn't belong here - label?: string; // TODO: doesn't belong here program?: string; args?: string[]; runtime?: string; @@ -413,9 +411,8 @@ export interface IPlatformSpecificAdapterContribution { } export interface IDebuggerContribution extends IPlatformSpecificAdapterContribution { - // type: string; // TODO: host from IPlatformSpecificAdapterContribution - // label?: string; // TODO: host from IPlatformSpecificAdapterContribution - + type?: string; + label?: string; // debug adapter executable adapterExecutableCommand?: string; win?: IPlatformSpecificAdapterContribution; diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index 381b7def6f0..f09c6fadc0e 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -16,14 +16,14 @@ import { Emitter, Event } from 'vs/base/common/event'; import { TPromise } from 'vs/base/common/winjs.base'; import { ExtensionsChannelId } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; -import * as debug from 'vs/workbench/parts/debug/common/debug'; import { IOutputService } from 'vs/workbench/parts/output/common/output'; +import { IDebugAdapter, IAdapterExecutable, IDebuggerContribution, IPlatformSpecificAdapterContribution } from 'vs/workbench/parts/debug/common/debug'; /** * Abstract implementation of the low level API for a debug adapter. * Missing is how this API communicates with the debug adapter. */ -export abstract class AbstractDebugAdapter implements debug.IDebugAdapter { +export abstract class AbstractDebugAdapter implements IDebugAdapter { private sequence: number; private pendingRequests: Map void>; @@ -57,14 +57,14 @@ export abstract class AbstractDebugAdapter implements debug.IDebugAdapter { return this._onExit.event; } - public onEvent(callback: (event: DebugProtocol.Event) => void) { + public onEvent(callback: (event: DebugProtocol.Event) => void): void { if (this.eventCallback) { this._onError.fire(new Error(`attempt to set more than one 'Event' callback`)); } this.eventCallback = callback; } - public onRequest(callback: (request: DebugProtocol.Request) => void) { + public onRequest(callback: (request: DebugProtocol.Request) => void): void { if (this.requestCallback) { this._onError.fire(new Error(`attempt to set more than one 'Request' callback`)); } @@ -96,7 +96,7 @@ export abstract class AbstractDebugAdapter implements debug.IDebugAdapter { } } - public acceptMessage(message: DebugProtocol.ProtocolMessage) { + public acceptMessage(message: DebugProtocol.ProtocolMessage): void { switch (message.type) { case 'event': if (this.eventCallback) { @@ -219,7 +219,7 @@ export class DebugAdapter extends StreamDebugAdapter { private _serverProcess: cp.ChildProcess; - constructor(private _debugType: string, private _adapterExecutable: debug.IAdapterExecutable | null, extensionDescriptions: IExtensionDescription[], private _outputService?: IOutputService) { + constructor(private _debugType: string, private _adapterExecutable: IAdapterExecutable | null, extensionDescriptions: IExtensionDescription[], private _outputService?: IOutputService) { super(); if (!this._adapterExecutable) { @@ -306,61 +306,61 @@ export class DebugAdapter extends StreamDebugAdapter { } } - private static extract(dbg: debug.IDebuggerContribution, extensionFolderPath: string) { - if (!dbg) { + private static extract(contribution: IDebuggerContribution, extensionFolderPath: string): IDebuggerContribution { + if (!contribution) { return undefined; } - let x: debug.IDebuggerContribution = {}; + let result: IDebuggerContribution = {}; - if (dbg.runtime) { - if (dbg.runtime.indexOf('./') === 0) { // TODO - x.runtime = paths.join(extensionFolderPath, dbg.runtime); + if (contribution.runtime) { + if (contribution.runtime.indexOf('./') === 0) { // TODO + result.runtime = paths.join(extensionFolderPath, contribution.runtime); } else { - x.runtime = dbg.runtime; + result.runtime = contribution.runtime; } } - if (dbg.runtimeArgs) { - x.runtimeArgs = dbg.runtimeArgs; + if (contribution.runtimeArgs) { + result.runtimeArgs = contribution.runtimeArgs; } - if (dbg.program) { - if (!paths.isAbsolute(dbg.program)) { - x.program = paths.join(extensionFolderPath, dbg.program); + if (contribution.program) { + if (!paths.isAbsolute(contribution.program)) { + result.program = paths.join(extensionFolderPath, contribution.program); } else { - x.program = dbg.program; + result.program = contribution.program; } } - if (dbg.args) { - x.args = dbg.args; + if (contribution.args) { + result.args = contribution.args; } - if (dbg.win) { - x.win = DebugAdapter.extract(dbg.win, extensionFolderPath); + if (contribution.win) { + result.win = DebugAdapter.extract(contribution.win, extensionFolderPath); } - if (dbg.winx86) { - x.winx86 = DebugAdapter.extract(dbg.winx86, extensionFolderPath); + if (contribution.winx86) { + result.winx86 = DebugAdapter.extract(contribution.winx86, extensionFolderPath); } - if (dbg.windows) { - x.windows = DebugAdapter.extract(dbg.windows, extensionFolderPath); + if (contribution.windows) { + result.windows = DebugAdapter.extract(contribution.windows, extensionFolderPath); } - if (dbg.osx) { - x.osx = DebugAdapter.extract(dbg.osx, extensionFolderPath); + if (contribution.osx) { + result.osx = DebugAdapter.extract(contribution.osx, extensionFolderPath); } - if (dbg.linux) { - x.linux = DebugAdapter.extract(dbg.linux, extensionFolderPath); + if (contribution.linux) { + result.linux = DebugAdapter.extract(contribution.linux, extensionFolderPath); } - return x; + return result; } - static platformAdapterExecutable(extensionDescriptions: IExtensionDescription[], debugType: string): debug.IAdapterExecutable { + static platformAdapterExecutable(extensionDescriptions: IExtensionDescription[], debugType: string): IAdapterExecutable { - let result: debug.IDebuggerContribution = {}; + let result: IDebuggerContribution = {}; debugType = debugType.toLowerCase(); // merge all contributions into one for (const ed of extensionDescriptions) { if (ed.contributes) { - const debuggers = ed.contributes['debuggers']; + const debuggers = ed.contributes['debuggers']; if (debuggers && debuggers.length > 0) { const dbgs = debuggers.filter(d => strings.equalsIgnoreCase(d.type, debugType)); for (const dbg of dbgs) { @@ -376,7 +376,7 @@ export class DebugAdapter extends StreamDebugAdapter { } // select the right platform - let platformInfo: debug.IPlatformSpecificAdapterContribution; + let platformInfo: IPlatformSpecificAdapterContribution; if (platform.isWindows && !process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) { platformInfo = result.winx86 || result.win || result.windows; } else if (platform.isWindows) { @@ -410,7 +410,7 @@ export class DebugAdapter extends StreamDebugAdapter { // path hooks helpers -export function convertToDAPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (source: DebugProtocol.Source) => void) { +export function convertToDAPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (source: DebugProtocol.Source) => void): void { convertPaths(msg, (toDA: boolean, source: DebugProtocol.Source | undefined) => { if (toDA && source) { fixSourcePaths(source); @@ -418,7 +418,7 @@ export function convertToDAPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePa }); } -export function convertToVSCPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (source: DebugProtocol.Source) => void) { +export function convertToVSCPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (source: DebugProtocol.Source) => void): void { convertPaths(msg, (toDA: boolean, source: DebugProtocol.Source | undefined) => { if (!toDA && source) { fixSourcePaths(source); @@ -426,7 +426,7 @@ export function convertToVSCPaths(msg: DebugProtocol.ProtocolMessage, fixSourceP }); } -function convertPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (toDA: boolean, source: DebugProtocol.Source | undefined) => void) { +function convertPaths(msg: DebugProtocol.ProtocolMessage, fixSourcePaths: (toDA: boolean, source: DebugProtocol.Source | undefined) => void): void { switch (msg.type) { case 'event': const event = msg; From f31add9188b8116efc0d341dd5017c95658b501c Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Tue, 17 Apr 2018 13:14:29 +0200 Subject: [PATCH 0836/1070] add comments --- .../api/electron-browser/mainThreadDebugService.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index 84b6d6bf048..90cfc0c9ca2 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -239,6 +239,9 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape { } } +/** + * DebugAdapter that communicates via extension protocol with another debug adapter. + */ class ExtensionHostDebugAdapter extends AbstractDebugAdapter { constructor(private _handle: number, private _proxy: ExtHostDebugServiceShape, private _debugType: string, private _adapterExecutable: IAdapterExecutable | null) { @@ -275,6 +278,9 @@ class ExtensionHostDebugAdapter extends AbstractDebugAdapter { } } +/** + * Interim abstraction for managing debug funtionality in EH. + */ class ExtensionHostDebugAdapterProvider { private _debugAdapters: Map; From e7b8bd21db19b239c0f56defa0595656b6ba35d3 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Tue, 17 Apr 2018 13:17:06 +0200 Subject: [PATCH 0837/1070] drop column attribute if value is 0; see #46784 --- src/vs/workbench/api/electron-browser/mainThreadDebugService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index 90cfc0c9ca2..aa94358afa5 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -109,7 +109,7 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape { id: l.id, enabled: l.enabled, lineNumber: l.line + 1, - column: l.character > 0 ? l.character + 1 : 0, + column: l.character > 0 ? l.character + 1 : undefined, // a column value of 0 results in an omitted column attribute; see #46784 condition: l.condition, hitCondition: l.hitCondition, logMessage: l.logMessage From 66581ee33848e60a3526eba268d9bcc69b3012e3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 17 Apr 2018 14:13:14 +0200 Subject: [PATCH 0838/1070] smoketest: configure git user name and email --- test/smoke/src/areas/git/git.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/smoke/src/areas/git/git.test.ts b/test/smoke/src/areas/git/git.test.ts index e5c2669b722..498bfd7780e 100644 --- a/test/smoke/src/areas/git/git.test.ts +++ b/test/smoke/src/areas/git/git.test.ts @@ -11,6 +11,13 @@ const SYNC_STATUSBAR = 'div[id="workbench.parts.statusbar"] .statusbar-entry a[t export function setup() { describe('Git', () => { + before(async function () { + const app = this.app as Application; + + cp.execSync('git config user.name testuser', { cwd: app.workspacePath }); + cp.execSync('git config user.email monacotools@microsoft.com', { cwd: app.workspacePath }); + }); + it('reflects working tree changes', async function () { const app = this.app as Application; From 7ba3b0cd2f09422e08de3cdaab9554ebc2eaca49 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 14:23:49 +0200 Subject: [PATCH 0839/1070] add fwd link to doc-page, #21886 --- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index dc3145effd1..ee9475f99b7 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -145,7 +145,7 @@ export function createApiFactory( let checkSelector = (function () { let done = initData.environment.extensionDevelopmentPath !== extension.extensionFolderPath; function inform(selector: vscode.DocumentSelector) { - console.info(`Extension '${extension.id}' uses a document selector that applies to all schemes.}`); + console.info(`Extension '${extension.id}' uses a document selector without scheme. Learn more about this: https://go.microsoft.com/fwlink/?linkid=872305`); done = true; } return function perform(selector: vscode.DocumentSelector): vscode.DocumentSelector { From 446b5551f9a6c08e53b7d5df952eaac12b3841e0 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 14:27:46 +0200 Subject: [PATCH 0840/1070] Improve code style --- .../editor/contrib/multicursor/multicursor.ts | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/vs/editor/contrib/multicursor/multicursor.ts b/src/vs/editor/contrib/multicursor/multicursor.ts index 931c4f02404..42ba791f862 100644 --- a/src/vs/editor/contrib/multicursor/multicursor.ts +++ b/src/vs/editor/contrib/multicursor/multicursor.ts @@ -113,31 +113,28 @@ class InsertCursorAtEndOfEachLineSelected extends EditorAction { }); } - private getCursorsForSelection(selection: Selection, editor: ICodeEditor): Selection[] { + private getCursorsForSelection(selection: Selection, model: ITextModel, result: Selection[]): void { if (selection.isEmpty()) { - return []; + return; } - let model = editor.getModel(); - let newSelections: Selection[] = []; for (let i = selection.startLineNumber; i < selection.endLineNumber; i++) { let currentLineMaxColumn = model.getLineMaxColumn(i); - newSelections.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn)); + result.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn)); } if (selection.endColumn > 1) { - newSelections.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn)); + result.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn)); } - - return newSelections; } public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - let selections = editor.getSelections(); - let newSelections = selections - .map((selection) => this.getCursorsForSelection(selection, editor)) - .reduce((prev, curr) => { return prev.concat(curr); }); + const model = editor.getModel(); + const selections = editor.getSelections(); + let newSelections: Selection[] = []; + selections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections)); if (newSelections.length > 0) { + console.log(`calling setSelections with ${newSelections.length}`); editor.setSelections(newSelections); } } From 25ecfcf145f2f9728803411896f78b91ae5a3c26 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Tue, 17 Apr 2018 14:33:27 +0200 Subject: [PATCH 0841/1070] fold ExtensionHostDebugAdapterProvider into MainThreadDebugService --- .../mainThreadDebugService.ts | 66 ++++++------------- 1 file changed, 21 insertions(+), 45 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index aa94358afa5..b7a7c7017d0 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -6,7 +6,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import uri from 'vs/base/common/uri'; -import { IDebugService, IConfig, IDebugConfigurationProvider, IBreakpoint, IFunctionBreakpoint, IBreakpointData, IAdapterExecutable, ITerminalSettings, IDebugAdapter } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugService, IConfig, IDebugConfigurationProvider, IBreakpoint, IFunctionBreakpoint, IBreakpointData, IAdapterExecutable, ITerminalSettings, IDebugAdapter, IDebugAdapterProvider } from 'vs/workbench/parts/debug/common/debug'; import { TPromise } from 'vs/base/common/winjs.base'; import { ExtHostContext, ExtHostDebugServiceShape, MainThreadDebugServiceShape, DebugSessionUUID, MainContext, @@ -19,12 +19,14 @@ import * as paths from 'vs/base/common/paths'; @extHostNamedCustomer(MainContext.MainThreadDebugService) -export class MainThreadDebugService implements MainThreadDebugServiceShape { +export class MainThreadDebugService implements MainThreadDebugServiceShape, IDebugAdapterProvider { private _proxy: ExtHostDebugServiceShape; private _toDispose: IDisposable[]; private _breakpointEventsActive: boolean; - private _extensionHostDebugAdapterProvider: ExtensionHostDebugAdapterProvider; + private _debugAdapters: Map; + private _debugAdaptersHandleCounter = 1; + constructor( extHostContext: IExtHostContext, @@ -50,12 +52,22 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape { } } })); - - this._extensionHostDebugAdapterProvider = new ExtensionHostDebugAdapterProvider(this._proxy); + this._debugAdapters = new Map(); } public $registerDebugTypes(debugTypes: string[]) { - this._toDispose.push(this.debugService.getConfigurationManager().registerDebugAdapterProvider(debugTypes, this._extensionHostDebugAdapterProvider)); + this._toDispose.push(this.debugService.getConfigurationManager().registerDebugAdapterProvider(debugTypes, this)); + } + + createDebugAdapter(debugType: string, adapterInfo): IDebugAdapter { + const handle = this._debugAdaptersHandleCounter++; + const da = new ExtensionHostDebugAdapter(handle, this._proxy, debugType, adapterInfo); + this._debugAdapters.set(handle, da); + return da; + } + + runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise { + return this._proxy.$runInTerminal(args, config); } public dispose(): void { @@ -227,15 +239,15 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape { } }); - this._extensionHostDebugAdapterProvider.acceptMessage(handle, message); + this._debugAdapters.get(handle).acceptMessage(message); } public $acceptDAError(handle: number, name: string, message: string, stack: string) { - this._extensionHostDebugAdapterProvider.acceptDAError(handle, new Error(`${name}: ${message}\n${stack}`)); + this._debugAdapters.get(handle).fireError(handle, new Error(`${name}: ${message}\n${stack}`)); } public $acceptDAExit(handle: number, code: number, signal: string) { - this._extensionHostDebugAdapterProvider.acceptDAExit(handle, code, signal); + this._debugAdapters.get(handle).fireExit(handle, code, signal); } } @@ -277,39 +289,3 @@ class ExtensionHostDebugAdapter extends AbstractDebugAdapter { return this._proxy.$stopDASession(this._handle); } } - -/** - * Interim abstraction for managing debug funtionality in EH. - */ -class ExtensionHostDebugAdapterProvider { - - private _debugAdapters: Map; - private _debugAdaptersHandleCounter = 1; - - constructor(private _proxy: ExtHostDebugServiceShape) { - this._debugAdapters = new Map(); - } - - acceptMessage(handle: number, message: DebugProtocol.ProtocolMessage) { - this._debugAdapters.get(handle).acceptMessage(message); - } - - acceptDAError(handle: number, error: Error) { - this._debugAdapters.get(handle).fireError(handle, error); - } - - acceptDAExit(handle: number, code: number, signal: string) { - this._debugAdapters.get(handle).fireExit(handle, code, signal); - } - - createDebugAdapter(debugType: string, adapterInfo): IDebugAdapter { - const handle = this._debugAdaptersHandleCounter++; - const da = new ExtensionHostDebugAdapter(handle, this._proxy, debugType, adapterInfo); - this._debugAdapters.set(handle, da); - return da; - } - - runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise { - return this._proxy.$runInTerminal(args, config); - } -} From 11f8cd3cbe0441342dc2de278cae4ba9c978ed41 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 14:40:42 +0200 Subject: [PATCH 0842/1070] Move TestNotificationService down to /platform/ --- .../test/common/testNotificationService.ts | 34 +++++++++++++++++++ .../extensionsTipsService.test.ts | 3 +- .../backupFileService.test.ts | 3 +- .../configurationEditingService.test.ts | 3 +- .../configurationService.test.ts | 3 +- .../test/electron-browser/fileService.test.ts | 3 +- .../keybindingEditing.test.ts | 3 +- .../workbench/test/workbenchTestServices.ts | 30 ++-------------- 8 files changed, 48 insertions(+), 34 deletions(-) create mode 100644 src/vs/platform/notification/test/common/testNotificationService.ts diff --git a/src/vs/platform/notification/test/common/testNotificationService.ts b/src/vs/platform/notification/test/common/testNotificationService.ts new file mode 100644 index 00000000000..d2d4021d653 --- /dev/null +++ b/src/vs/platform/notification/test/common/testNotificationService.ts @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import { INotificationService, INotificationHandle, NoOpNotification, Severity, INotification, IPromptChoice } from 'vs/platform/notification/common/notification'; + +export class TestNotificationService implements INotificationService { + + public _serviceBrand: any; + + private static readonly NO_OP: INotificationHandle = new NoOpNotification(); + + public info(message: string): INotificationHandle { + return this.notify({ severity: Severity.Info, message }); + } + + public warn(message: string): INotificationHandle { + return this.notify({ severity: Severity.Warning, message }); + } + + public error(error: string | Error): INotificationHandle { + return this.notify({ severity: Severity.Error, message: error }); + } + + public notify(notification: INotification): INotificationHandle { + return TestNotificationService.NO_OP; + } + + public prompt(severity: Severity, message: string, choices: IPromptChoice[], onCancel?: () => void): INotificationHandle { + return TestNotificationService.NO_OP; + } +} \ No newline at end of file diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index 3d75afd31e8..e99f9a52370 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -23,7 +23,8 @@ import { Emitter } from 'vs/base/common/event'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import URI from 'vs/base/common/uri'; import { testWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; diff --git a/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts b/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts index fc79fe68eeb..3af98297733 100644 --- a/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts +++ b/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts @@ -16,7 +16,8 @@ import Uri from 'vs/base/common/uri'; import { BackupFileService, BackupFilesModel } from 'vs/workbench/services/backup/node/backupFileService'; import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { TextModel, createTextBufferFactory } from 'vs/editor/common/model/textModel'; -import { TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestEnvironmentService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestEnvironmentService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { DefaultEndOfLine } from 'vs/editor/common/model'; diff --git a/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts index 4aa21047fda..0e42aaccf0c 100644 --- a/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts @@ -18,7 +18,8 @@ import { parseArgs } from 'vs/platform/environment/node/argv'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; import * as extfs from 'vs/base/node/extfs'; -import { TestTextFileService, TestTextResourceConfigurationService, workbenchInstantiationService, TestLifecycleService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextFileService, TestTextResourceConfigurationService, workbenchInstantiationService, TestLifecycleService, TestEnvironmentService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import * as uuid from 'vs/base/common/uuid'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService'; diff --git a/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts index 42eb0daf902..a04189f3079 100644 --- a/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts @@ -24,7 +24,8 @@ import { ConfigurationEditingErrorCode } from 'vs/workbench/services/configurati import { IFileService } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, WorkbenchState, IWorkspaceFoldersChangeEvent } from 'vs/platform/workspace/common/workspace'; import { ConfigurationTarget, IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; -import { workbenchInstantiationService, TestTextResourceConfigurationService, TestTextFileService, TestLifecycleService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; +import { workbenchInstantiationService, TestTextResourceConfigurationService, TestTextFileService, TestLifecycleService, TestEnvironmentService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; diff --git a/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts b/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts index a9ebd0e8c95..822b9dc356d 100644 --- a/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts +++ b/src/vs/workbench/services/files/test/electron-browser/fileService.test.ts @@ -18,7 +18,8 @@ import * as uuid from 'vs/base/common/uuid'; import * as pfs from 'vs/base/node/pfs'; import * as encodingLib from 'vs/base/node/encoding'; import * as utils from 'vs/workbench/services/files/test/electron-browser/utils'; -import { TestEnvironmentService, TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestNotificationService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestEnvironmentService, TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TextModel } from 'vs/editor/common/model/textModel'; diff --git a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts index 5d78d2c0752..80766a0ed14 100644 --- a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts @@ -16,7 +16,8 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { KeyCode, SimpleKeybinding, ChordKeybinding } from 'vs/base/common/keyCodes'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import * as extfs from 'vs/base/node/extfs'; -import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService, TestTextResourceConfigurationService, TestHashService, TestEnvironmentService, TestStorageService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService, TestTextResourceConfigurationService, TestHashService, TestEnvironmentService, TestStorageService } from 'vs/workbench/test/workbenchTestServices'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { IWorkspaceContextService, Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import * as uuid from 'vs/base/common/uuid'; import { ConfigurationService } from 'vs/platform/configuration/node/configurationService'; diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 3994a0ca72b..18b929cfb78 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -63,7 +63,8 @@ import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKe import { ITextBufferFactory, DefaultEndOfLine, EndOfLinePreference } from 'vs/editor/common/model'; import { Range } from 'vs/editor/common/core/range'; import { IConfirmation, IConfirmationResult, IDialogService, IDialogOptions } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService, INotificationHandle, INotification, NoOpNotification, IPromptChoice } from 'vs/platform/notification/common/notification'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput { return instantiationService.createInstance(FileEditorInput, resource, void 0); @@ -306,33 +307,6 @@ export class TestHistoryService implements IHistoryService { } } -export class TestNotificationService implements INotificationService { - - public _serviceBrand: any; - - private static readonly NO_OP: INotificationHandle = new NoOpNotification(); - - public info(message: string): INotificationHandle { - return this.notify({ severity: Severity.Info, message }); - } - - public warn(message: string): INotificationHandle { - return this.notify({ severity: Severity.Warning, message }); - } - - public error(error: string | Error): INotificationHandle { - return this.notify({ severity: Severity.Error, message: error }); - } - - public notify(notification: INotification): INotificationHandle { - return TestNotificationService.NO_OP; - } - - public prompt(severity: Severity, message: string, choices: IPromptChoice[], onCancel?: () => void): INotificationHandle { - return TestNotificationService.NO_OP; - } -} - export class TestDialogService implements IDialogService { public _serviceBrand: any; From 605ed530daeb9bfc148e58fa4edf4b35112332b1 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 14:49:49 +0200 Subject: [PATCH 0843/1070] Fixes #28121: Enforce a maximum cursor count limit --- src/vs/editor/browser/codeEditor.ts | 6 ++++-- src/vs/editor/browser/widget/codeEditorWidget.ts | 6 ++++-- .../editor/browser/widget/embeddedCodeEditorWidget.ts | 5 +++-- src/vs/editor/common/commonCodeEditor.ts | 11 ++++++++++- src/vs/editor/common/controller/cursor.ts | 10 ++++++++++ src/vs/editor/contrib/multicursor/multicursor.ts | 1 - .../editor/contrib/suggest/test/suggestModel.test.ts | 8 ++++++-- .../editor/standalone/browser/standaloneCodeEditor.ts | 10 ++++++---- src/vs/editor/standalone/browser/standaloneEditor.ts | 3 ++- src/vs/editor/test/browser/testCodeEditor.ts | 6 +++++- .../parts/debug/electron-browser/simpleDebugEditor.ts | 6 ++++-- .../walkThrough/electron-browser/walkThroughPart.ts | 5 +++-- 12 files changed, 57 insertions(+), 20 deletions(-) diff --git a/src/vs/editor/browser/codeEditor.ts b/src/vs/editor/browser/codeEditor.ts index 1c5ed6d9b6b..160eac3591e 100644 --- a/src/vs/editor/browser/codeEditor.ts +++ b/src/vs/editor/browser/codeEditor.ts @@ -12,6 +12,7 @@ import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget'; import { EditorAction, EditorExtensionsRegistry, IEditorContributionCtor } from 'vs/editor/browser/editorExtensions'; import { IEditorOptions } from 'vs/editor/common/config/editorOptions'; import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { INotificationService } from 'vs/platform/notification/common/notification'; export class CodeEditor extends CodeEditorWidget { @@ -22,9 +23,10 @@ export class CodeEditor extends CodeEditorWidget { @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService ) { - super(domElement, options, false, instantiationService, codeEditorService, commandService, contextKeyService, themeService); + super(domElement, options, false, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService); } protected _getContributions(): IEditorContributionCtor[] { diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 7192a5a2c99..7103fb97b39 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -34,6 +34,7 @@ import { IMouseEvent } from 'vs/base/browser/mouseEvent'; import { ClassName } from 'vs/editor/common/model/intervalTree'; import { ITextModel, IModelDecorationOptions } from 'vs/editor/common/model'; import { ICommandDelegate } from 'vs/editor/browser/view/viewController'; +import { INotificationService } from 'vs/platform/notification/common/notification'; export abstract class CodeEditorWidget extends CommonCodeEditor implements editorBrowser.ICodeEditor { @@ -92,9 +93,10 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService ) { - super(domElement, options, isSimpleWidget, instantiationService, contextKeyService); + super(domElement, options, isSimpleWidget, instantiationService, contextKeyService, notificationService); this._codeEditorService = codeEditorService; this._commandService = commandService; this._themeService = themeService; diff --git a/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts b/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts index 68a61cec024..b24d4a9b62d 100644 --- a/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts +++ b/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts @@ -30,9 +30,10 @@ export class EmbeddedCodeEditorWidget extends CodeEditor { @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService ) { - super(domElement, parentEditor.getRawConfiguration(), instantiationService, codeEditorService, commandService, contextKeyService, themeService); + super(domElement, parentEditor.getRawConfiguration(), instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService); this._parentEditor = parentEditor; this._overwriteOptions = options; diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index 9f4fcd3c175..c37585f2df6 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; +import * as nls from 'vs/nls'; import { onUnexpectedError } from 'vs/base/common/errors'; import { Event, Emitter } from 'vs/base/common/event'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; @@ -30,6 +31,7 @@ import { IEditorWhitespace } from 'vs/editor/common/viewLayout/whitespaceCompute import * as modes from 'vs/editor/common/modes'; import { Schemas } from 'vs/base/common/network'; import { ITextModel, EndOfLinePreference, IIdentifiedSingleEditOperation, IModelDecorationsChangeAccessor, IModelDecoration, IModelDeltaDecoration, IModelDecorationOptions } from 'vs/editor/common/model'; +import { INotificationService } from 'vs/platform/notification/common/notification'; let EDITOR_ID = 0; @@ -104,6 +106,7 @@ export abstract class CommonCodeEditor extends Disposable { protected readonly _instantiationService: IInstantiationService; protected readonly _contextKeyService: IContextKeyService; + protected readonly _notificationService: INotificationService; /** * map from "parent" decoration type to live decoration ids. @@ -117,7 +120,8 @@ export abstract class CommonCodeEditor extends Disposable { options: editorOptions.IEditorOptions, isSimpleWidget: boolean, instantiationService: IInstantiationService, - contextKeyService: IContextKeyService + contextKeyService: IContextKeyService, + notificationService: INotificationService, ) { super(); this.domElement = domElement; @@ -137,6 +141,7 @@ export abstract class CommonCodeEditor extends Disposable { })); this._contextKeyService = this._register(contextKeyService.createScoped(this.domElement)); + this._notificationService = notificationService; this._register(new EditorContextKeysManager(this, this._contextKeyService)); this._register(new EditorModeContext(this, this._contextKeyService)); @@ -966,6 +971,10 @@ export abstract class CommonCodeEditor extends Disposable { this._createView(); + this.listenersToRemove.push(this.cursor.onDidReachMaxCursorCount(() => { + this._notificationService.warn(nls.localize('cursors.maximum', "The number of cursors has been limited to {0}.", Cursor.MAX_CURSOR_COUNT)); + })); + this.listenersToRemove.push(this.cursor.onDidChange((e: CursorStateChangedEvent) => { let positions: Position[] = []; diff --git a/src/vs/editor/common/controller/cursor.ts b/src/vs/editor/common/controller/cursor.ts index 25a0704c6f2..60219208a56 100644 --- a/src/vs/editor/common/controller/cursor.ts +++ b/src/vs/editor/common/controller/cursor.ts @@ -87,6 +87,11 @@ export class CursorModelState { export class Cursor extends viewEvents.ViewEventEmitter implements ICursors { + public static MAX_CURSOR_COUNT = 10000; + + private readonly _onDidReachMaxCursorCount: Emitter = this._register(new Emitter()); + public readonly onDidReachMaxCursorCount: Event = this._onDidReachMaxCursorCount.event; + private readonly _onDidChange: Emitter = this._register(new Emitter()); public readonly onDidChange: Event = this._onDidChange.event; @@ -185,6 +190,11 @@ export class Cursor extends viewEvents.ViewEventEmitter implements ICursors { } public setStates(source: string, reason: CursorChangeReason, states: CursorState[]): void { + if (states.length > Cursor.MAX_CURSOR_COUNT) { + states = states.slice(0, Cursor.MAX_CURSOR_COUNT); + this._onDidReachMaxCursorCount.fire(void 0); + } + const oldState = new CursorModelState(this._model, this); this._cursors.setStates(states); diff --git a/src/vs/editor/contrib/multicursor/multicursor.ts b/src/vs/editor/contrib/multicursor/multicursor.ts index 42ba791f862..f13b5d6167f 100644 --- a/src/vs/editor/contrib/multicursor/multicursor.ts +++ b/src/vs/editor/contrib/multicursor/multicursor.ts @@ -134,7 +134,6 @@ class InsertCursorAtEndOfEachLineSelected extends EditorAction { selections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections)); if (newSelections.length > 0) { - console.log(`calling setSelections with ${newSelections.length}`); editor.setSelections(newSelections); } } diff --git a/src/vs/editor/contrib/suggest/test/suggestModel.test.ts b/src/vs/editor/contrib/suggest/test/suggestModel.test.ts index efaf16b11a9..c6e4aa184b2 100644 --- a/src/vs/editor/contrib/suggest/test/suggestModel.test.ts +++ b/src/vs/editor/contrib/suggest/test/suggestModel.test.ts @@ -31,17 +31,21 @@ import { MockMode } from 'vs/editor/test/common/mocks/mockMode'; import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { TokenizationResult2 } from 'vs/editor/common/core/token'; import { NULL_STATE } from 'vs/editor/common/modes/nullMode'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; +import { INotificationService } from 'vs/platform/notification/common/notification'; function createMockEditor(model: TextModel): TestCodeEditor { const contextKeyService = new MockContextKeyService(); const telemetryService = NullTelemetryService; + const notificationService = new TestNotificationService(); const instantiationService = new InstantiationService(new ServiceCollection( [IContextKeyService, contextKeyService], [ITelemetryService, telemetryService], - [IStorageService, NullStorageService] + [IStorageService, NullStorageService], + [INotificationService, TestNotificationService] )); - const editor = new TestCodeEditor(new MockScopeLocation(), {}, false, instantiationService, contextKeyService); + const editor = new TestCodeEditor(new MockScopeLocation(), {}, false, instantiationService, contextKeyService, notificationService); editor.setModel(model); return editor; } diff --git a/src/vs/editor/standalone/browser/standaloneCodeEditor.ts b/src/vs/editor/standalone/browser/standaloneCodeEditor.ts index 14e25fa01f9..53a9a83ed47 100644 --- a/src/vs/editor/standalone/browser/standaloneCodeEditor.ts +++ b/src/vs/editor/standalone/browser/standaloneCodeEditor.ts @@ -164,7 +164,8 @@ export class StandaloneCodeEditor extends CodeEditor implements IStandaloneCodeE @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, @IKeybindingService keybindingService: IKeybindingService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService ) { options = options || {}; options.ariaLabel = options.ariaLabel || nls.localize('editorViewAccessibleLabel', "Editor content"); @@ -173,7 +174,7 @@ export class StandaloneCodeEditor extends CodeEditor implements IStandaloneCodeE ? nls.localize('accessibilityHelpMessageIE', "Press Ctrl+F1 for Accessibility Options.") : nls.localize('accessibilityHelpMessage', "Press Alt+F1 for Accessibility Options.") ); - super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, themeService); + super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService); if (keybindingService instanceof StandaloneKeybindingService) { this._standaloneKeybindingService = keybindingService; @@ -295,7 +296,8 @@ export class StandaloneEditor extends StandaloneCodeEditor implements IStandalon @IContextKeyService contextKeyService: IContextKeyService, @IKeybindingService keybindingService: IKeybindingService, @IContextViewService contextViewService: IContextViewService, - @IStandaloneThemeService themeService: IStandaloneThemeService + @IStandaloneThemeService themeService: IStandaloneThemeService, + @INotificationService notificationService: INotificationService, ) { options = options || {}; if (typeof options.theme === 'string') { @@ -303,7 +305,7 @@ export class StandaloneEditor extends StandaloneCodeEditor implements IStandalon } let model: ITextModel = options.model; delete options.model; - super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService); + super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService); this._contextViewService = contextViewService; this._register(toDispose); diff --git a/src/vs/editor/standalone/browser/standaloneEditor.ts b/src/vs/editor/standalone/browser/standaloneEditor.ts index 53493117eb5..f6fbf6ba71d 100644 --- a/src/vs/editor/standalone/browser/standaloneEditor.ts +++ b/src/vs/editor/standalone/browser/standaloneEditor.ts @@ -89,7 +89,8 @@ export function create(domElement: HTMLElement, options?: IEditorConstructionOpt services.get(IContextKeyService), services.get(IKeybindingService), services.get(IContextViewService), - services.get(IStandaloneThemeService) + services.get(IStandaloneThemeService), + services.get(INotificationService) ); }); } diff --git a/src/vs/editor/test/browser/testCodeEditor.ts b/src/vs/editor/test/browser/testCodeEditor.ts index 675277aed4d..0c0759e7a08 100644 --- a/src/vs/editor/test/browser/testCodeEditor.ts +++ b/src/vs/editor/test/browser/testCodeEditor.ts @@ -24,6 +24,8 @@ import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions'; import { TPromise } from 'vs/base/common/winjs.base'; import { onUnexpectedError } from 'vs/base/common/errors'; import { IModelDecorationOptions, ITextModel } from 'vs/editor/common/model'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; +import { INotificationService } from 'vs/platform/notification/common/notification'; export class TestCodeEditor extends CommonCodeEditor implements editorBrowser.ICodeEditor { @@ -168,12 +170,14 @@ export function createTestCodeEditor(model: ITextModel): TestCodeEditor { function _createTestCodeEditor(options: TestCodeEditorCreationOptions): TestCodeEditor { let contextKeyService = new MockContextKeyService(); + let notificationService = new TestNotificationService(); let services = options.serviceCollection || new ServiceCollection(); services.set(IContextKeyService, contextKeyService); + services.set(INotificationService, notificationService); let instantiationService = new InstantiationService(services); - let editor = new TestCodeEditor(new MockScopeLocation(), options, false, instantiationService, contextKeyService); + let editor = new TestCodeEditor(new MockScopeLocation(), options, false, instantiationService, contextKeyService, notificationService); editor.setModel(options.model); return editor; } diff --git a/src/vs/workbench/parts/debug/electron-browser/simpleDebugEditor.ts b/src/vs/workbench/parts/debug/electron-browser/simpleDebugEditor.ts index de7fbfcc013..fd1e6e04bf5 100644 --- a/src/vs/workbench/parts/debug/electron-browser/simpleDebugEditor.ts +++ b/src/vs/workbench/parts/debug/electron-browser/simpleDebugEditor.ts @@ -19,6 +19,7 @@ import { SuggestController } from 'vs/editor/contrib/suggest/suggestController'; import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2'; import { TabCompletionController } from 'vs/workbench/parts/snippets/electron-browser/tabCompletion'; import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { INotificationService } from 'vs/platform/notification/common/notification'; export class SimpleDebugEditor extends CodeEditorWidget { constructor( @@ -28,9 +29,10 @@ export class SimpleDebugEditor extends CodeEditorWidget { @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService, ) { - super(domElement, options, true, instantiationService, codeEditorService, commandService, contextKeyService, themeService); + super(domElement, options, true, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService); } protected _getContributions(): IEditorContributionCtor[] { diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts index b89a6530b6c..8198c3ea31c 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts @@ -65,9 +65,10 @@ class WalkThroughCodeEditor extends CodeEditor { @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService themeService: IThemeService + @IThemeService themeService: IThemeService, + @INotificationService notificationService: INotificationService, ) { - super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, themeService); + super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService); } getTelemetryData() { From d85116c239630bcc55677a9ea7663c5fa2e375f1 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 15:04:49 +0200 Subject: [PATCH 0844/1070] explorer commands: fix computing context fixes #47121 --- src/vs/workbench/parts/files/browser/files.ts | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/parts/files/browser/files.ts b/src/vs/workbench/parts/files/browser/files.ts index 2665af86fe9..e1c25edab60 100644 --- a/src/vs/workbench/parts/files/browser/files.ts +++ b/src/vs/workbench/parts/files/browser/files.ts @@ -12,7 +12,6 @@ import { ExplorerItem, OpenEditor } from 'vs/workbench/parts/files/common/explor import { toResource } from 'vs/workbench/common/editor'; import { Tree } from 'vs/base/parts/tree/browser/treeImpl'; import { List } from 'vs/base/browser/ui/list/listWidget'; -import { IFileStat } from 'vs/platform/files/common/files'; // Commands can get exeucted from a command pallete, from a context menu or from some list using a keybinding // To cover all these cases we need to properly compute the resource on which the command is being executed @@ -23,7 +22,16 @@ export function getResourceForCommand(resource: URI | object, listService: IList let list = listService.lastFocusedList; if (list && list.isDOMFocused()) { - const focus = list.getFocus(); + let focus: any; + if (list instanceof List) { + const focused = list.getFocusedElements(); + if (focused.length) { + focus = focused[0]; + } + } else { + focus = list.getFocus(); + } + if (focus instanceof ExplorerItem) { return focus.resource; } else if (focus instanceof OpenEditor) { @@ -39,27 +47,25 @@ export function getMultiSelectedResources(resource: URI | object, listService: I if (list && list.isDOMFocused()) { // Explorer if (list instanceof Tree) { - const focus: IFileStat = list.getFocus(); + const selection = list.getSelection().map((fs: ExplorerItem) => fs.resource); + const focus = list.getFocus(); + const mainUriStr = URI.isUri(resource) ? resource.toString() : focus instanceof ExplorerItem ? focus.resource.toString() : undefined; // If the resource is passed it has to be a part of the returned context. - if (focus && (!URI.isUri(resource) || focus.resource.toString() === resource.toString())) { - const selection = list.getSelection(); - // We only respect the selection if it contains the focused element. - if (selection && selection.indexOf(focus) >= 0) { - return selection.map(fs => fs.resource); - } + // We only respect the selection if it contains the focused element. + if (selection.some(s => s.toString() === mainUriStr)) { + return selection; } } // Open editors view if (list instanceof List) { - const focus = list.getFocusedElements(); - // If the resource is passed it has to be a part of the returned context. - if (focus.length && (!URI.isUri(resource) || (focus[0] instanceof OpenEditor && focus[0].getResource().toString() === resource.toString()))) { - const selection = list.getSelectedElements(); - // We only respect the selection if it contains the focused element. - if (selection && selection.indexOf(focus[0]) >= 0) { - return selection.filter(s => s instanceof OpenEditor).map((oe: OpenEditor) => oe.getResource()); - } + const selection = list.getSelectedElements().filter(s => s instanceof OpenEditor).map((oe: OpenEditor) => oe.getResource()); + const focusedElements = list.getFocusedElements(); + const focus = focusedElements.length ? focusedElements[0] : undefined; + const mainUriStr = URI.isUri(resource) ? resource.toString() : (focus instanceof OpenEditor) ? focus.getResource().toString() : undefined; + // We only respect the selection if it contains the main element. + if (selection.some(s => s.toString() === mainUriStr)) { + return selection; } } } From 7d2d20a3940ec74ee14a51f4543857448892d3a6 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 15:15:25 +0200 Subject: [PATCH 0845/1070] reveal in os and copy path can work on active editor, no need for explorer focus fixes #47947 --- src/vs/workbench/parts/files/electron-browser/fileCommands.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts index 53619978a5f..cefd90ed0e8 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts @@ -396,7 +396,7 @@ function revealResourcesInOS(resources: URI[], windowsService: IWindowsService, KeybindingsRegistry.registerCommandAndKeybindingRule({ id: REVEAL_IN_OS_COMMAND_ID, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), - when: ExplorerFocusCondition, + when: undefined, primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_R, win: { primary: KeyMod.Shift | KeyMod.Alt | KeyCode.KEY_R @@ -430,7 +430,7 @@ function resourcesToClipboard(resources: URI[], clipboardService: IClipboardServ } KeybindingsRegistry.registerCommandAndKeybindingRule({ weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), - when: ExplorerFocusCondition, + when: undefined, primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_C, win: { primary: KeyMod.Shift | KeyMod.Alt | KeyCode.KEY_C From cacb9a00d4022f80b1edea4ada5f2e8781290b17 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 15:15:32 +0200 Subject: [PATCH 0846/1070] Fixes #27187: Keep the top-most visible line constant --- src/vs/editor/browser/editorBrowser.ts | 5 --- src/vs/editor/common/commonCodeEditor.ts | 7 --- .../editor/common/viewModel/viewModelImpl.ts | 45 +++++++------------ src/vs/monaco.d.ts | 4 -- 4 files changed, 15 insertions(+), 46 deletions(-) diff --git a/src/vs/editor/browser/editorBrowser.ts b/src/vs/editor/browser/editorBrowser.ts index 79d5d54e20b..ff17e8b8e36 100644 --- a/src/vs/editor/browser/editorBrowser.ts +++ b/src/vs/editor/browser/editorBrowser.ts @@ -619,11 +619,6 @@ export interface ICodeEditor extends editorCommon.IEditor { */ getLayoutInfo(): editorOptions.EditorLayoutInfo; - /** - * Returns the range that is currently centered in the view port. - */ - getCenteredRangeInViewport(): Range; - /** * Returns the ranges that are currently visible. * Does not account for horizontal scrolling. diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index c37585f2df6..b233f9e4f2c 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -253,13 +253,6 @@ export abstract class CommonCodeEditor extends Disposable { } } - public getCenteredRangeInViewport(): Range { - if (!this.hasView) { - return null; - } - return this.viewModel.getCenteredRangeInViewport(); - } - public getVisibleRanges(): Range[] { if (!this.hasView) { return []; diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index fa9273c3f0b..3f9ff85de8c 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -33,6 +33,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel private readonly configuration: editorCommon.IConfiguration; private readonly model: ITextModel; private hasFocus: boolean; + private viewportStartLine: number; private viewportStartLineTrackedRange: string; private viewportStartLineTop: number; private readonly lines: IViewModelLinesCollection; @@ -41,8 +42,6 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel private readonly decorations: ViewModelDecorations; - private _centeredViewLine: number; - constructor(editorId: number, configuration: editorCommon.IConfiguration, model: ITextModel, scheduleAtNextAnimationFrame: (callback: () => void) => IDisposable) { super(); @@ -50,6 +49,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel this.configuration = configuration; this.model = model; this.hasFocus = false; + this.viewportStartLine = -1; this.viewportStartLineTrackedRange = null; this.viewportStartLineTop = 0; @@ -89,8 +89,6 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel } })); - this._centeredViewLine = -1; - this.decorations = new ViewModelDecorations(this.editorId, this.model, this.configuration, this.lines, this.coordinatesConverter); this._registerModelEvents(); @@ -130,8 +128,12 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel private _onConfigurationChanged(eventsCollector: viewEvents.ViewEventsCollector, e: IConfigurationChangedEvent): void { // We might need to restore the current centered view range, so save it (if available) - const previousCenteredModelRange = this.getCenteredRangeInViewport(); - let revealPreviousCenteredModelRange = false; + let previousViewportStartModelPosition: Position = null; + if (this.viewportStartLine !== -1) { + let previousViewportStartViewPosition = new Position(this.viewportStartLine, this.getLineMinColumn(this.viewportStartLine)); + previousViewportStartModelPosition = this.coordinatesConverter.convertViewPositionToModelPosition(previousViewportStartViewPosition); + } + let restorePreviousViewportStart = false; const conf = this.configuration.editor; @@ -144,7 +146,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel if (this.viewLayout.getCurrentScrollTop() !== 0) { // Never change the scroll position from 0 to something else... - revealPreviousCenteredModelRange = true; + restorePreviousViewportStart = true; } } @@ -157,17 +159,10 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel eventsCollector.emit(new viewEvents.ViewConfigurationChangedEvent(e)); this.viewLayout.onConfigurationChanged(e); - if (revealPreviousCenteredModelRange && previousCenteredModelRange) { - // modelLine -> viewLine - const newCenteredViewRange = this.coordinatesConverter.convertModelRangeToViewRange(previousCenteredModelRange); - - // Send a reveal event to restore the centered content - eventsCollector.emit(new viewEvents.ViewRevealRangeRequestEvent( - newCenteredViewRange, - viewEvents.VerticalRevealType.Center, - false, - editorCommon.ScrollType.Immediate - )); + if (restorePreviousViewportStart && previousViewportStartModelPosition) { + const viewPosition = this.coordinatesConverter.convertModelPositionToViewPosition(previousViewportStartModelPosition); + const viewPositionTop = this.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber); + this.viewLayout.deltaScrollNow(0, viewPositionTop - this.viewportStartLineTop); } } @@ -247,7 +242,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel } // Update the configuration and reset the centered view line - this._centeredViewLine = -1; + this.viewportStartLine = -1; this.configuration.setMaxLineNumber(this.model.getLineCount()); // Recover viewport @@ -332,16 +327,6 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel } } - public getCenteredRangeInViewport(): Range { - if (this._centeredViewLine === -1) { - // Never got rendered or not rendered since last content change event - return null; - } - let viewLineNumber = this._centeredViewLine; - let currentCenteredViewRange = new Range(viewLineNumber, this.getLineMinColumn(viewLineNumber), viewLineNumber, this.getLineMaxColumn(viewLineNumber)); - return this.coordinatesConverter.convertViewRangeToModelRange(currentCenteredViewRange); - } - public getVisibleRanges(): Range[] { const visibleViewRange = this.getCompletelyVisibleViewRange(); const visibleRange = this.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange); @@ -458,9 +443,9 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel * Gives a hint that a lot of requests are about to come in for these line numbers. */ public setViewport(startLineNumber: number, endLineNumber: number, centeredLineNumber: number): void { - this._centeredViewLine = centeredLineNumber; this.lines.warmUpLookupCache(startLineNumber, endLineNumber); + this.viewportStartLine = startLineNumber; let position = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(startLineNumber, this.getLineMinColumn(startLineNumber))); this.viewportStartLineTrackedRange = this.model._setTrackedRange(this.viewportStartLineTrackedRange, new Range(position.lineNumber, position.column, position.lineNumber, position.column), TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges); this.viewportStartLineTop = this.viewLayout.getVerticalOffsetForLineNumber(startLineNumber); diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index d7164a77c2e..effd0f9e66d 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -3782,10 +3782,6 @@ declare namespace monaco.editor { * Get the layout info for the editor. */ getLayoutInfo(): EditorLayoutInfo; - /** - * Returns the range that is currently centered in the view port. - */ - getCenteredRangeInViewport(): Range; /** * Returns the ranges that are currently visible. * Does not account for horizontal scrolling. From 048af51863c1f204f158f5a303afbbac61d754a3 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 15:38:14 +0200 Subject: [PATCH 0847/1070] debug: Log Point to new breakpoint menu entry fixes #47777 --- src/vs/code/electron-main/menus.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index dad88c4fc00..8cc7ad73dd1 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -854,6 +854,7 @@ export class CodeMenu { breakpointsMenu.append(this.createMenuItem(nls.localize({ key: 'miConditionalBreakpoint', comment: ['&& denotes a mnemonic'] }, "&&Conditional Breakpoint..."), 'editor.debug.action.conditionalBreakpoint')); breakpointsMenu.append(this.createMenuItem(nls.localize({ key: 'miColumnBreakpoint', comment: ['&& denotes a mnemonic'] }, "C&&olumn Breakpoint"), 'editor.debug.action.toggleColumnBreakpoint')); breakpointsMenu.append(this.createMenuItem(nls.localize({ key: 'miFunctionBreakpoint', comment: ['&& denotes a mnemonic'] }, "&&Function Breakpoint..."), 'workbench.debug.viewlet.action.addFunctionBreakpointAction')); + breakpointsMenu.append(this.createMenuItem(nls.localize({ key: 'miLogPoint', comment: ['&& denotes a mnemonic'] }, "&&Log Point..."), 'editor.debug.action.toggleLogPoint')); const newBreakpoints = new MenuItem({ label: this.mnemonicLabel(nls.localize({ key: 'miNewBreakpoint', comment: ['&& denotes a mnemonic'] }, "&&New Breakpoint")), submenu: breakpointsMenu }); const enableAllBreakpoints = this.createMenuItem(nls.localize({ key: 'miEnableAllBreakpoints', comment: ['&& denotes a mnemonic'] }, "Enable All Breakpoints"), 'workbench.debug.viewlet.action.enableAllBreakpoints'); const disableAllBreakpoints = this.createMenuItem(nls.localize({ key: 'miDisableAllBreakpoints', comment: ['&& denotes a mnemonic'] }, "Disable A&&ll Breakpoints"), 'workbench.debug.viewlet.action.disableAllBreakpoints'); From fe3d91bd6d55f18ccc5222b20685e1c3e9af0df6 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 15:47:15 +0200 Subject: [PATCH 0848/1070] fixes #47208 --- .../parts/files/electron-browser/media/explorerviewlet.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css b/src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css index 9cd2408fa2c..eb657380a67 100644 --- a/src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css +++ b/src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css @@ -109,7 +109,6 @@ .monaco-workbench.linux .explorer-viewlet .explorer-item .monaco-inputbox, .monaco-workbench.mac .explorer-viewlet .explorer-item .monaco-inputbox { height: 22px; - margin-left: -1px; } .explorer-viewlet .explorer-item .monaco-inputbox > .wrapper > .input { From 9fb03b619a2cc582f7f0defe76bba22454961dfb Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 16:04:47 +0200 Subject: [PATCH 0849/1070] Fixes #22611: Reveal selections after inserting a snippet --- src/vs/editor/contrib/snippet/snippetSession.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/snippet/snippetSession.ts b/src/vs/editor/contrib/snippet/snippetSession.ts index a101e5e16bb..be8168b070e 100644 --- a/src/vs/editor/contrib/snippet/snippetSession.ts +++ b/src/vs/editor/contrib/snippet/snippetSession.ts @@ -367,13 +367,15 @@ export class SnippetSession { const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, this._template, this._overwriteBefore, this._overwriteAfter, false); this._snippets = snippets; - this._editor.setSelections(model.pushEditOperations(this._editor.getSelections(), edits, undoEdits => { + const selections = model.pushEditOperations(this._editor.getSelections(), edits, undoEdits => { if (this._snippets[0].hasPlaceholder) { return this._move(true); } else { return undoEdits.map(edit => Selection.fromPositions(edit.range.getEndPosition())); } - })); + }); + this._editor.setSelections(selections); + this._editor.revealRange(selections[0]); } merge(template: string, overwriteBefore: number = 0, overwriteAfter: number = 0): void { From 3521655d332ab536c7f5c34494e9614fc4081a9e Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 16:23:15 +0200 Subject: [PATCH 0850/1070] Rename context key --- src/vs/editor/contrib/message/messageController.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/message/messageController.ts b/src/vs/editor/contrib/message/messageController.ts index 90982184a1c..60dabff0219 100644 --- a/src/vs/editor/contrib/message/messageController.ts +++ b/src/vs/editor/contrib/message/messageController.ts @@ -24,7 +24,7 @@ export class MessageController implements editorCommon.IEditorContribution { private static readonly _id = 'editor.contrib.messageController'; - static CONTEXT_SNIPPET_MODE = new RawContextKey('messageVisible', false); + static MESSAGE_VISIBLE = new RawContextKey('messageVisible', false); static get(editor: ICodeEditor): MessageController { return editor.getContribution(MessageController._id); @@ -44,7 +44,7 @@ export class MessageController implements editorCommon.IEditorContribution { @IContextKeyService contextKeyService: IContextKeyService ) { this._editor = editor; - this._visible = MessageController.CONTEXT_SNIPPET_MODE.bindTo(contextKeyService); + this._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService); } dispose(): void { @@ -103,7 +103,7 @@ const MessageCommand = EditorCommand.bindToContribution(Messa registerEditorCommand(new MessageCommand({ id: 'leaveEditorMessage', - precondition: MessageController.CONTEXT_SNIPPET_MODE, + precondition: MessageController.MESSAGE_VISIBLE, handler: c => c.closeMessage(), kbOpts: { weight: KeybindingsRegistry.WEIGHT.editorContrib(30), From 0349c7af1f44bf5d40f6dbaac02ae3b6bd07d98a Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 16:24:22 +0200 Subject: [PATCH 0851/1070] Fixes #37496: Add message when attempting to edit in a read-only editor --- src/vs/editor/browser/editorBrowser.ts | 6 ++++++ src/vs/editor/common/commonCodeEditor.ts | 7 +++++++ src/vs/editor/common/controller/cursor.ts | 4 ++++ src/vs/editor/contrib/message/messageController.ts | 12 ++++++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/editorBrowser.ts b/src/vs/editor/browser/editorBrowser.ts index ff17e8b8e36..18810f9d54f 100644 --- a/src/vs/editor/browser/editorBrowser.ts +++ b/src/vs/editor/browser/editorBrowser.ts @@ -391,6 +391,12 @@ export interface ICodeEditor extends editorCommon.IEditor { * @internal */ onDidType(listener: (text: string) => void): IDisposable; + /** + * An event emitted when editing failed because the editor is read-only. + * @event + * @internal + */ + onDidAttemptReadOnlyEdit(listener: () => void): IDisposable; /** * An event emitted when users paste text in the editor. * @event diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index b233f9e4f2c..99b0be6b3aa 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -67,6 +67,9 @@ export abstract class CommonCodeEditor extends Disposable { private readonly _onDidChangeCursorSelection: Emitter = this._register(new Emitter()); public readonly onDidChangeCursorSelection: Event = this._onDidChangeCursorSelection.event; + private readonly _onDidAttemptReadOnlyEdit: Emitter = this._register(new Emitter()); + public readonly onDidAttemptReadOnlyEdit: Event = this._onDidAttemptReadOnlyEdit.event; + private readonly _onDidLayoutChange: Emitter = this._register(new Emitter()); public readonly onDidLayoutChange: Event = this._onDidLayoutChange.event; @@ -968,6 +971,10 @@ export abstract class CommonCodeEditor extends Disposable { this._notificationService.warn(nls.localize('cursors.maximum', "The number of cursors has been limited to {0}.", Cursor.MAX_CURSOR_COUNT)); })); + this.listenersToRemove.push(this.cursor.onDidAttemptReadOnlyEdit(() => { + this._onDidAttemptReadOnlyEdit.fire(void 0); + })); + this.listenersToRemove.push(this.cursor.onDidChange((e: CursorStateChangedEvent) => { let positions: Position[] = []; diff --git a/src/vs/editor/common/controller/cursor.ts b/src/vs/editor/common/controller/cursor.ts index 60219208a56..36833531a0a 100644 --- a/src/vs/editor/common/controller/cursor.ts +++ b/src/vs/editor/common/controller/cursor.ts @@ -92,6 +92,9 @@ export class Cursor extends viewEvents.ViewEventEmitter implements ICursors { private readonly _onDidReachMaxCursorCount: Emitter = this._register(new Emitter()); public readonly onDidReachMaxCursorCount: Event = this._onDidReachMaxCursorCount.event; + private readonly _onDidAttemptReadOnlyEdit: Emitter = this._register(new Emitter()); + public readonly onDidAttemptReadOnlyEdit: Event = this._onDidAttemptReadOnlyEdit.event; + private readonly _onDidChange: Emitter = this._register(new Emitter()); public readonly onDidChange: Event = this._onDidChange.event; @@ -466,6 +469,7 @@ export class Cursor extends viewEvents.ViewEventEmitter implements ICursors { if (this._configuration.editor.readOnly) { // All the remaining handlers will try to edit the model, // but we cannot edit when read only... + this._onDidAttemptReadOnlyEdit.fire(void 0); return; } diff --git a/src/vs/editor/contrib/message/messageController.ts b/src/vs/editor/contrib/message/messageController.ts index 60dabff0219..e80d0f6b90c 100644 --- a/src/vs/editor/contrib/message/messageController.ts +++ b/src/vs/editor/contrib/message/messageController.ts @@ -6,9 +6,10 @@ 'use strict'; import 'vs/css!./messageController'; +import * as nls from 'vs/nls'; import { setDisposableTimeout } from 'vs/base/common/async'; import { KeyCode } from 'vs/base/common/keyCodes'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; import { alert } from 'vs/base/browser/ui/aria/aria'; import { Range } from 'vs/editor/common/core/range'; import * as editorCommon from 'vs/editor/common/editorCommon'; @@ -20,7 +21,7 @@ import { registerThemingParticipant, HIGH_CONTRAST } from 'vs/platform/theme/com import { inputValidationInfoBorder, inputValidationInfoBackground } from 'vs/platform/theme/common/colorRegistry'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; -export class MessageController implements editorCommon.IEditorContribution { +export class MessageController extends Disposable implements editorCommon.IEditorContribution { private static readonly _id = 'editor.contrib.messageController'; @@ -43,11 +44,14 @@ export class MessageController implements editorCommon.IEditorContribution { editor: ICodeEditor, @IContextKeyService contextKeyService: IContextKeyService ) { + super(); this._editor = editor; this._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService); + this._register(this._editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit())); } dispose(): void { + super.dispose(); this._visible.reset(); } @@ -96,6 +100,10 @@ export class MessageController implements editorCommon.IEditorContribution { this._messageListeners = dispose(this._messageListeners); this._messageListeners.push(MessageWidget.fadeOut(this._messageWidget)); } + + private _onDidAttemptReadOnlyEdit(): void { + this.showMessage(nls.localize('editor.readonly', "Cannot edit in read-only editor"), this._editor.getPosition()); + } } const MessageCommand = EditorCommand.bindToContribution(MessageController.get); From 9222cf5474d7982a6d882ad20a07f31535de8c5b Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 16:36:25 +0200 Subject: [PATCH 0852/1070] debug actions: disable those depending on evaluateName when evaluateName is not present fixes #47078 --- src/vs/workbench/parts/debug/browser/debugActions.ts | 11 +++++++---- .../debug/electron-browser/electronDebugActions.ts | 9 ++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugActions.ts b/src/vs/workbench/parts/debug/browser/debugActions.ts index ccb596753d1..529dde3128c 100644 --- a/src/vs/workbench/parts/debug/browser/debugActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugActions.ts @@ -11,7 +11,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IFileService } from 'vs/platform/files/common/files'; -import { IDebugService, State, IProcess, IThread, IEnablement, IBreakpoint, IStackFrame, IExpression, REPL_ID, ProcessState } +import { IDebugService, State, IProcess, IThread, IEnablement, IBreakpoint, IStackFrame, REPL_ID, ProcessState } from 'vs/workbench/parts/debug/common/debug'; import { Variable, Expression, Thread, Breakpoint, Process } from 'vs/workbench/parts/debug/common/debugModel'; import { IPartService } from 'vs/workbench/services/part/common/partService'; @@ -600,15 +600,18 @@ export class AddToWatchExpressionsAction extends AbstractDebugAction { static readonly ID = 'workbench.debug.viewlet.action.addToWatchExpressions'; static LABEL = nls.localize('addToWatchExpressions', "Add to Watch"); - constructor(id: string, label: string, private expression: IExpression, @IDebugService debugService: IDebugService, @IKeybindingService keybindingService: IKeybindingService) { + constructor(id: string, label: string, private variable: Variable, @IDebugService debugService: IDebugService, @IKeybindingService keybindingService: IKeybindingService) { super(id, label, 'debug-action add-to-watch', debugService, keybindingService); + this.updateEnablement(); } public run(): TPromise { - const name = this.expression instanceof Variable ? this.expression.evaluateName : this.expression.name; - this.debugService.addWatchExpression(name); + this.debugService.addWatchExpression(this.variable.evaluateName); return TPromise.as(undefined); + } + protected isEnabled(state: State): boolean { + return super.isEnabled(state) && this.variable && !!this.variable.evaluateName; } } diff --git a/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.ts b/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.ts index 4709acbb680..e38f831bf0e 100644 --- a/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.ts +++ b/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.ts @@ -18,6 +18,7 @@ export class CopyValueAction extends Action { constructor(id: string, label: string, private value: any, @IDebugService private debugService: IDebugService) { super(id, label, 'debug-action copy-value'); + this._enabled = typeof this.value === 'string' || (this.value instanceof Variable && !!this.value.evaluateName); } public run(): TPromise { @@ -38,15 +39,13 @@ export class CopyEvaluatePathAction extends Action { static readonly ID = 'workbench.debug.viewlet.action.copyEvaluatePath'; static LABEL = nls.localize('copyAsExpression', "Copy as Expression"); - constructor(id: string, label: string, private value: any) { + constructor(id: string, label: string, private value: Variable) { super(id, label); + this._enabled = this.value && !!this.value.evaluateName; } public run(): TPromise { - if (this.value instanceof Variable) { - clipboard.writeText(this.value.evaluateName); - } - + clipboard.writeText(this.value.evaluateName); return TPromise.as(null); } } From 367aef325372e6446640546caccb21484e926110 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 16:50:21 +0200 Subject: [PATCH 0853/1070] Fixes #35574 --- .../browser/services/codeEditorServiceImpl.ts | 24 ++++++++++++++++++- src/vs/editor/common/model.ts | 4 ++++ src/vs/editor/common/model/textModel.ts | 2 ++ .../common/viewLayout/lineDecorations.ts | 2 +- .../common/viewLayout/viewLineRenderer.ts | 2 +- src/vs/editor/common/viewModel/viewModel.ts | 3 ++- .../common/viewModel/viewModelDecorations.ts | 2 +- src/vs/monaco.d.ts | 4 ++++ 8 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/vs/editor/browser/services/codeEditorServiceImpl.ts b/src/vs/editor/browser/services/codeEditorServiceImpl.ts index 99999ad1cab..64938f0b602 100644 --- a/src/vs/editor/browser/services/codeEditorServiceImpl.ts +++ b/src/vs/editor/browser/services/codeEditorServiceImpl.ts @@ -126,6 +126,7 @@ class DecorationTypeOptionsProvider implements IModelDecorationOptionsProvider { public className: string; public inlineClassName: string; + public inlineClassNameAffectsLetterSpacing: boolean; public beforeContentClassName: string; public afterContentClassName: string; public glyphMarginClassName: string; @@ -145,9 +146,21 @@ class DecorationTypeOptionsProvider implements IModelDecorationOptionsProvider { } return void 0; }; + let createInlineCSSRules = (type: ModelDecorationCSSRuleType) => { + let rules = new DecorationCSSRules(type, providerArgs, themeService); + if (rules.hasContent) { + this._disposables.push(rules); + return { className: rules.className, hasLetterSpacing: rules.hasLetterSpacing }; + } + return null; + }; this.className = createCSSRules(ModelDecorationCSSRuleType.ClassName); - this.inlineClassName = createCSSRules(ModelDecorationCSSRuleType.InlineClassName); + const inlineData = createInlineCSSRules(ModelDecorationCSSRuleType.InlineClassName); + if (inlineData) { + this.inlineClassName = inlineData.className; + this.inlineClassNameAffectsLetterSpacing = inlineData.hasLetterSpacing; + } this.beforeContentClassName = createCSSRules(ModelDecorationCSSRuleType.BeforeContentClassName); this.afterContentClassName = createCSSRules(ModelDecorationCSSRuleType.AfterContentClassName); this.glyphMarginClassName = createCSSRules(ModelDecorationCSSRuleType.GlyphMarginClassName); @@ -232,6 +245,7 @@ class DecorationCSSRules { private _className: string; private _unThemedSelector: string; private _hasContent: boolean; + private _hasLetterSpacing: boolean; private _ruleType: ModelDecorationCSSRuleType; private _themeListener: IDisposable; private _providerArgs: ProviderArguments; @@ -243,6 +257,7 @@ class DecorationCSSRules { this._providerArgs = providerArgs; this._usesThemeColors = false; this._hasContent = false; + this._hasLetterSpacing = false; let className = CSSNameHelper.getClassName(this._providerArgs.key, ruleType); if (this._providerArgs.parentTypeKey) { @@ -278,6 +293,10 @@ class DecorationCSSRules { return this._hasContent; } + public get hasLetterSpacing(): boolean { + return this._hasLetterSpacing; + } + public get className(): string { return this._className; } @@ -359,6 +378,9 @@ class DecorationCSSRules { } let cssTextArr: string[] = []; this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'cursor', 'color', 'opacity', 'letterSpacing'], cssTextArr); + if (opts.letterSpacing) { + this._hasLetterSpacing = true; + } return cssTextArr.join(''); } diff --git a/src/vs/editor/common/model.ts b/src/vs/editor/common/model.ts index 703a8edb897..607b70ac557 100644 --- a/src/vs/editor/common/model.ts +++ b/src/vs/editor/common/model.ts @@ -109,6 +109,10 @@ export interface IModelDecorationOptions { * to have a background color decoration. */ inlineClassName?: string; + /** + * If there is an `inlineClassName` which affects letter spacing. + */ + inlineClassNameAffectsLetterSpacing?: boolean; /** * If set, the decoration will be rendered before the text with this CSS class name. */ diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index 8a32b369276..b22db35807d 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -2619,6 +2619,7 @@ export class ModelDecorationOptions implements model.IModelDecorationOptions { readonly linesDecorationsClassName: string; readonly marginClassName: string; readonly inlineClassName: string; + readonly inlineClassNameAffectsLetterSpacing: boolean; readonly beforeContentClassName: string; readonly afterContentClassName: string; @@ -2635,6 +2636,7 @@ export class ModelDecorationOptions implements model.IModelDecorationOptions { this.linesDecorationsClassName = options.linesDecorationsClassName ? cleanClassName(options.linesDecorationsClassName) : strings.empty; this.marginClassName = options.marginClassName ? cleanClassName(options.marginClassName) : strings.empty; this.inlineClassName = options.inlineClassName ? cleanClassName(options.inlineClassName) : strings.empty; + this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false; this.beforeContentClassName = options.beforeContentClassName ? cleanClassName(options.beforeContentClassName) : strings.empty; this.afterContentClassName = options.afterContentClassName ? cleanClassName(options.afterContentClassName) : strings.empty; } diff --git a/src/vs/editor/common/viewLayout/lineDecorations.ts b/src/vs/editor/common/viewLayout/lineDecorations.ts index a791061e928..fe3397d94de 100644 --- a/src/vs/editor/common/viewLayout/lineDecorations.ts +++ b/src/vs/editor/common/viewLayout/lineDecorations.ts @@ -58,7 +58,7 @@ export class LineDecoration { continue; } - if (range.isEmpty() && d.type === InlineDecorationType.Regular) { + if (range.isEmpty() && (d.type === InlineDecorationType.Regular || d.type === InlineDecorationType.RegularAffectingLetterSpacing)) { // Ignore empty range decorations continue; } diff --git a/src/vs/editor/common/viewLayout/viewLineRenderer.ts b/src/vs/editor/common/viewLayout/viewLineRenderer.ts index c6faa239326..f35989d4101 100644 --- a/src/vs/editor/common/viewLayout/viewLineRenderer.ts +++ b/src/vs/editor/common/viewLayout/viewLineRenderer.ts @@ -248,7 +248,7 @@ export function renderViewLine(input: RenderLineInput, sb: IStringBuilder): Rend let classNames: string[] = []; for (let i = 0, len = input.lineDecorations.length; i < len; i++) { const lineDecoration = input.lineDecorations[i]; - if (lineDecoration.type !== InlineDecorationType.Regular) { + if (lineDecoration.type !== InlineDecorationType.Regular && lineDecoration.type !== InlineDecorationType.RegularAffectingLetterSpacing) { classNames.push(input.lineDecorations[i].className); containsForeignElements = true; } diff --git a/src/vs/editor/common/viewModel/viewModel.ts b/src/vs/editor/common/viewModel/viewModel.ts index 1ade6a4fd4a..b9ce5b257ce 100644 --- a/src/vs/editor/common/viewModel/viewModel.ts +++ b/src/vs/editor/common/viewModel/viewModel.ts @@ -270,7 +270,8 @@ export class ViewLineRenderingData { export const enum InlineDecorationType { Regular = 0, Before = 1, - After = 2 + After = 2, + RegularAffectingLetterSpacing = 3 } export class InlineDecoration { diff --git a/src/vs/editor/common/viewModel/viewModelDecorations.ts b/src/vs/editor/common/viewModel/viewModelDecorations.ts index 7f69b5af0c2..7faf9dfb56f 100644 --- a/src/vs/editor/common/viewModel/viewModelDecorations.ts +++ b/src/vs/editor/common/viewModel/viewModelDecorations.ts @@ -124,7 +124,7 @@ export class ViewModelDecorations implements IDisposable { decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration; if (decorationOptions.inlineClassName) { - let inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, InlineDecorationType.Regular); + let inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? InlineDecorationType.RegularAffectingLetterSpacing : InlineDecorationType.Regular); let intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber); let intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber); for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index effd0f9e66d..28b6ac3ffaf 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -1220,6 +1220,10 @@ declare namespace monaco.editor { * to have a background color decoration. */ inlineClassName?: string; + /** + * If there is an `inlineClassName` which affects letter spacing. + */ + inlineClassNameAffectsLetterSpacing?: boolean; /** * If set, the decoration will be rendered before the text with this CSS class name. */ From fc2609a5f4de5d16bdac0453500ddbd1d6448909 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 17:32:27 +0200 Subject: [PATCH 0854/1070] Fixes #33376: push undo stops when updating the model via `IModelService.updateModel` --- src/vs/editor/common/services/modelServiceImpl.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index 98d71e09f7d..6490f6d7a0e 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -429,12 +429,14 @@ export class ModelServiceImpl implements IModelService { } // Otherwise find a diff between the values and update model + model.pushStackElement(); model.setEOL(textBuffer.getEOL() === '\r\n' ? EndOfLineSequence.CRLF : EndOfLineSequence.LF); model.pushEditOperations( [], ModelServiceImpl._computeEdits(model, textBuffer), (inverseEditOperations: IIdentifiedSingleEditOperation[]) => [] ); + model.pushStackElement(); } private static _commonPrefix(a: ILineSequence, aLen: number, aDelta: number, b: ILineSequence, bLen: number, bDelta: number): number { From ded36ac6f26736607b7bb78c685fe74476792d0b Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 17:33:27 +0200 Subject: [PATCH 0855/1070] add mkdirp-option and honor it in the remote file service, #48062 --- src/vs/platform/files/common/files.ts | 5 ++++ .../electron-browser/remoteFileService.ts | 28 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 541acb7a66d..d859f958b2e 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -576,6 +576,11 @@ export interface IUpdateContentOptions { * The etag of the file. This can be used to prevent dirty writes. */ etag?: string; + + /** + * Run mkdirp before saving. + */ + mkdirp?: boolean; } export interface IResolveFileOptions { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 6a30bb3eb8e..dadfcbd23dc 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -305,10 +305,15 @@ export class RemoteFileService extends FileService { } } - updateContent(resource: URI, value: string | ITextSnapshot, options?: IUpdateContentOptions): TPromise { + async updateContent(resource: URI, value: string | ITextSnapshot, options?: IUpdateContentOptions): TPromise { if (resource.scheme === Schemas.file) { return super.updateContent(resource, value, options); } else { + if (options && options.mkdirp) { + // use the lack of options and or the lack of an etag as a hint that + // the parent directories might not exist. + await this._mkdirp(resource.with({ path: posix.dirname(resource.path) })); + } return this._withProvider(resource).then(provider => { const snapshot = typeof value === 'string' ? new StringSnapshot(value) : value; return this._writeFile(provider, resource, snapshot, options || {}, FileOpenFlags.Write); @@ -346,6 +351,27 @@ export class RemoteFileService extends FileService { }); } + private async _mkdirp(directory: URI): Promise { + let basenames: string[] = []; + while (directory.path !== '/') { + try { + let stat = await this.resolveFile(directory); + if (!stat.isDirectory) { + throw new Error(`${directory.toString()} is not a directory`); + } + } catch (e) { + // ENOENT + basenames.push(posix.basename(directory.path)); + directory = directory.with({ path: posix.dirname(directory.path) }); + } + break; + } + for (let i = basenames.length - 1; i >= 0; i--) { + directory = directory.with({ path: posix.join(directory.path, basenames[i]) }); + await this.createFolder(directory); + } + } + // --- delete del(resource: URI, useTrash?: boolean): TPromise { From 676e978a6733a3651aace1f80ffd20984f9c1cb9 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 17 Apr 2018 17:34:12 +0200 Subject: [PATCH 0856/1070] fix bad imports --- .../electron-browser/processExplorer/processExplorerMain.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts index 7ef69f73710..a6ec588d5a6 100644 --- a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts +++ b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts @@ -12,7 +12,7 @@ import { repeat } from 'vs/base/common/strings'; import { totalmem } from 'os'; import product from 'vs/platform/node/product'; import { localize } from 'vs/nls'; -import { ProcessExplorerData, ProcessExplorerStyles } from '../../../platform/issue/common/issue'; +import { ProcessExplorerStyles, ProcessExplorerData } from 'vs/platform/issue/common/issue'; import * as browser from 'vs/base/browser/browser'; import * as platform from 'vs/base/common/platform'; From d0c5dad20b55bfaab7ad3302b377828d7e50505e Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 17:50:12 +0200 Subject: [PATCH 0857/1070] debug model: use a ReadOnlyArray --- .../api/electron-browser/mainThreadDebugService.ts | 2 +- .../workbench/parts/debug/browser/breakpointsView.ts | 2 +- src/vs/workbench/parts/debug/browser/debugActions.ts | 4 ++-- src/vs/workbench/parts/debug/common/debug.ts | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index b7a7c7017d0..c43140980b6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -141,7 +141,7 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape, IDeb return void 0; } - private convertToDto(bps: (IBreakpoint | IFunctionBreakpoint)[]): (ISourceBreakpointDto | IFunctionBreakpointDto)[] { + private convertToDto(bps: (ReadonlyArray)): (ISourceBreakpointDto | IFunctionBreakpointDto)[] { return bps.map(bp => { if ('name' in bp) { const fbp = bp; diff --git a/src/vs/workbench/parts/debug/browser/breakpointsView.ts b/src/vs/workbench/parts/debug/browser/breakpointsView.ts index f1413ed1e93..a4d5380cde6 100644 --- a/src/vs/workbench/parts/debug/browser/breakpointsView.ts +++ b/src/vs/workbench/parts/debug/browser/breakpointsView.ts @@ -202,7 +202,7 @@ export class BreakpointsView extends ViewsViewletPanel { private get elements(): IEnablement[] { const model = this.debugService.getModel(); - const elements = (model.getExceptionBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getBreakpoints()); + const elements = (>model.getExceptionBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getBreakpoints()); return elements; } diff --git a/src/vs/workbench/parts/debug/browser/debugActions.ts b/src/vs/workbench/parts/debug/browser/debugActions.ts index 529dde3128c..5b4232955dc 100644 --- a/src/vs/workbench/parts/debug/browser/debugActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugActions.ts @@ -453,7 +453,7 @@ export class EnableAllBreakpointsAction extends AbstractDebugAction { protected isEnabled(state: State): boolean { const model = this.debugService.getModel(); - return super.isEnabled(state) && (model.getBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getExceptionBreakpoints()).some(bp => !bp.enabled); + return super.isEnabled(state) && (>model.getBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getExceptionBreakpoints()).some(bp => !bp.enabled); } } @@ -472,7 +472,7 @@ export class DisableAllBreakpointsAction extends AbstractDebugAction { protected isEnabled(state: State): boolean { const model = this.debugService.getModel(); - return super.isEnabled(state) && (model.getBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getExceptionBreakpoints()).some(bp => bp.enabled); + return super.isEnabled(state) && (>model.getBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getExceptionBreakpoints()).some(bp => bp.enabled); } } diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index bc9a8c933fb..1909b03c8e9 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -306,13 +306,13 @@ export interface IViewModel extends ITreeElement { } export interface IModel extends ITreeElement { - getProcesses(): IProcess[]; - getBreakpoints(): IBreakpoint[]; + getProcesses(): ReadonlyArray; + getBreakpoints(): ReadonlyArray; areBreakpointsActivated(): boolean; - getFunctionBreakpoints(): IFunctionBreakpoint[]; - getExceptionBreakpoints(): IExceptionBreakpoint[]; - getWatchExpressions(): IExpression[]; - getReplElements(): IReplElement[]; + getFunctionBreakpoints(): ReadonlyArray; + getExceptionBreakpoints(): ReadonlyArray; + getWatchExpressions(): ReadonlyArray; + getReplElements(): ReadonlyArray; onDidChangeBreakpoints: Event; onDidChangeCallStack: Event; From 8516f3b5e8790ca71bcbf2dfeb3eae0d8f22820b Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 17 Apr 2018 17:56:51 +0200 Subject: [PATCH 0858/1070] debug: rename resolveConfiguration to substiuteVariables. Also getEnabledBreakpointsForResource should also respect enabled property --- src/vs/workbench/parts/debug/common/debug.ts | 2 +- src/vs/workbench/parts/debug/common/debugModel.ts | 4 ++-- .../parts/debug/electron-browser/debugConfigurationManager.ts | 2 +- src/vs/workbench/parts/debug/electron-browser/debugService.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 1909b03c8e9..5b177840f30 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -542,7 +542,7 @@ export interface ILaunch { * Returns the resolved configuration. * Replaces os specific values, system variables, interactive variables. */ - resolveConfiguration(config: IConfig): TPromise; + substituteVariables(config: IConfig): TPromise; /** * Opens the launch.json file. Creates if it does not exist. diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts index 8824e849194..3007f9cafbf 100644 --- a/src/vs/workbench/parts/debug/common/debugModel.ts +++ b/src/vs/workbench/parts/debug/common/debugModel.ts @@ -875,10 +875,10 @@ export class Model implements IModel { return this.breakpoints.filter(bp => bp.uri.toString() === uriString); } - public getActivatedBreakpointsForResource(resource: uri): IBreakpoint[] { + public getEnabledBreakpointsForResource(resource: uri): IBreakpoint[] { if (this.breakpointsActivated) { const uriString = resource.toString(); - return this.breakpoints.filter(bp => bp.uri.toString() === uriString); + return this.breakpoints.filter(bp => bp.uri.toString() === uriString && bp.enabled); } return []; } diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index 8f07813290a..e7b737dfddc 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -619,7 +619,7 @@ class Launch implements ILaunch { return undefined; } - public resolveConfiguration(config: IConfig): TPromise { + public substituteVariables(config: IConfig): TPromise { const result = objects.deepClone(config) as IConfig; // Set operating system specific properties #1873 const setOSProperties = (flag: boolean, osConfig: IEnvConfig) => { diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 8b5c9af6ba9..1550004184a 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -788,7 +788,7 @@ export class DebugService implements debug.IDebugService { private createProcess(launch: debug.ILaunch, config: debug.IConfig, sessionId: string): TPromise { return this.textFileService.saveAll().then(() => - (launch ? launch.resolveConfiguration(config) : TPromise.as(config)).then(resolvedConfig => { + (launch ? launch.substituteVariables(config) : TPromise.as(config)).then(resolvedConfig => { if (!resolvedConfig) { // User canceled resolving of interactive variables, silently return return undefined; @@ -1205,7 +1205,7 @@ export class DebugService implements debug.IDebugService { return TPromise.as(null); } - const breakpointsToSend = this.model.getActivatedBreakpointsForResource(modelUri).filter(bp => bp.enabled); + const breakpointsToSend = this.model.getEnabledBreakpointsForResource(modelUri); const source = process.getSourceForUri(modelUri); let rawSource: DebugProtocol.Source; From a3a044d1c732297cd092165009dec86e1edfda99 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 17:38:19 +0200 Subject: [PATCH 0859/1070] :lipstick: #48062 --- .../services/files/electron-browser/remoteFileService.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index dadfcbd23dc..7728937a544 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -310,8 +310,6 @@ export class RemoteFileService extends FileService { return super.updateContent(resource, value, options); } else { if (options && options.mkdirp) { - // use the lack of options and or the lack of an etag as a hint that - // the parent directories might not exist. await this._mkdirp(resource.with({ path: posix.dirname(resource.path) })); } return this._withProvider(resource).then(provider => { From 99f945917445ffa2930d457999e8109536c09456 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 17 Apr 2018 11:13:34 +0200 Subject: [PATCH 0860/1070] [css] remove emmet dependency --- .../css-language-features/server/package.json | 1 - .../server/src/test/emmet.test.ts | 71 ------------------- .../css-language-features/server/yarn.lock | 20 ------ 3 files changed, 92 deletions(-) delete mode 100644 extensions/css-language-features/server/src/test/emmet.test.ts diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 34f651fbe34..50b6ff3a2c7 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -9,7 +9,6 @@ }, "dependencies": { "vscode-css-languageservice": "^3.0.9-next.5", - "vscode-emmet-helper": "^1.2.4", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^1.0.1" }, diff --git a/extensions/css-language-features/server/src/test/emmet.test.ts b/extensions/css-language-features/server/src/test/emmet.test.ts deleted file mode 100644 index e7fe76d7be3..00000000000 --- a/extensions/css-language-features/server/src/test/emmet.test.ts +++ /dev/null @@ -1,71 +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'; - -import 'mocha'; -import * as assert from 'assert'; -import { getCSSLanguageService, getSCSSLanguageService } from 'vscode-css-languageservice'; -import { TextDocument, CompletionList } from 'vscode-languageserver-types'; -import { getEmmetCompletionParticipants } from 'vscode-emmet-helper'; - -suite('CSS Emmet Support', () => { - - const cssLanguageService = getCSSLanguageService(); - const scssLanguageService = getSCSSLanguageService(); - - function assertCompletions(syntax: string, value: string, expectedProposal: string | null, expectedProposalDoc: string | null): void { - const offset = value.indexOf('|'); - value = value.substr(0, offset) + value.substr(offset + 1); - - const document = TextDocument.create('test://test/test.' + syntax, syntax, 0, value); - const position = document.positionAt(offset); - const emmetCompletionList: CompletionList = { - isIncomplete: true, - items: [] - }; - const languageService = syntax === 'scss' ? scssLanguageService : cssLanguageService; - languageService.setCompletionParticipants([getEmmetCompletionParticipants(document, position, document.languageId, {}, emmetCompletionList)]); - const stylesheet = languageService.parseStylesheet(document); - const list = languageService.doComplete(document, position, stylesheet); - - assert.ok(list); - assert.ok(emmetCompletionList); - - if (expectedProposal && expectedProposalDoc) { - let actualLabels = (emmetCompletionList!.items || []).map(c => c.label).sort(); - let actualDocs = (emmetCompletionList!.items || []).map(c => c.documentation).sort(); - assert.ok(actualLabels.indexOf(expectedProposal) !== -1, 'Not found:' + expectedProposal + ' is ' + actualLabels.join(', ')); - assert.ok(actualDocs.indexOf(expectedProposalDoc) !== -1, 'Not found:' + expectedProposalDoc + ' is ' + actualDocs.join(', ')); - } else { - assert.ok(!emmetCompletionList || !emmetCompletionList.items); - } - } - - test('Css Emmet Completions', function (this: any): any { - this.skip(); // disabled again (see #29113) - - assertCompletions('css', '.foo { display: none; m10| }', 'margin: 10px;', 'margin: 10px;'); - assertCompletions('css', 'foo { display: none; pos:f| }', 'position: fixed;', 'position: fixed;'); - assertCompletions('css', 'foo { display: none; margin: a| }', null, null); - assertCompletions('css', 'foo| { display: none; }', null, null); - assertCompletions('css', 'foo {| display: none; }', null, null); - assertCompletions('css', 'foo { display: none;| }', null, null); - assertCompletions('css', 'foo { display: none|; }', null, null); - assertCompletions('css', '.foo { display: none; -m-m10| }', 'margin: 10px;', '-moz-margin: 10px;\nmargin: 10px;'); - }); - - test('Scss Emmet Completions', function (this: any): any { - this.skip(); // disabled again (see #29113) - - assertCompletions('scss', '.foo { display: none; .bar { m10| } }', 'margin: 10px;', 'margin: 10px;'); - assertCompletions('scss', 'foo { display: none; .bar { pos:f| } }', 'position: fixed;', 'position: fixed;'); - assertCompletions('scss', 'foo { display: none; margin: a| .bar {}}', null, null); - assertCompletions('scss', 'foo| { display: none; }', null, null); - assertCompletions('scss', 'foo {| display: none; }', null, null); - assertCompletions('scss', 'foo { display: none;| }', null, null); - assertCompletions('scss', 'foo { display: none|; }', null, null); - assertCompletions('scss', '.foo { display: none; -m-m10| }', 'margin: 10px;', '-moz-margin: 10px;\nmargin: 10px;'); - }); -}); \ No newline at end of file diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 789b9b16ab1..3ee6a0d6448 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -2,10 +2,6 @@ # yarn lockfile v1 -"@emmetio/extract-abbreviation@0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.1.6.tgz#e4a9856c1057f0aff7d443b8536477c243abe28c" - "@types/mocha@2.2.33": version "2.2.33" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.33.tgz#d79a0061ec270379f4d9e225f4096fb436669def" @@ -14,10 +10,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -jsonc-parser@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" - vscode-css-languageservice@^3.0.9-next.5: version "3.0.9-next.5" resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.5.tgz#854048eafc91406af4b276d9f812e24c677e262e" @@ -25,14 +17,6 @@ vscode-css-languageservice@^3.0.9-next.5: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" -vscode-emmet-helper@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.4.tgz#48056974d13036722af019235b9f750a495de728" - dependencies: - "@emmetio/extract-abbreviation" "0.1.6" - jsonc-parser "^1.0.0" - vscode-languageserver-types "^3.6.0-next.1" - vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" @@ -55,10 +39,6 @@ vscode-languageserver-types@^3.6.0, vscode-languageserver-types@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.1.tgz#4bc06a48dff653495f12f94b8b1e228988a1748d" -vscode-languageserver-types@^3.6.0-next.1: - version "3.6.0-next.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.0-next.1.tgz#98e488d3f87b666b4ee1a3d89f0023e246d358f3" - vscode-languageserver@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-4.0.0.tgz#8b792f0d6d10acfe363d02371ed4ce53d08af88a" From a509b1797b67f4231d2933f1b8d79e023fae47c7 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 17 Apr 2018 12:05:30 +0200 Subject: [PATCH 0861/1070] [css] fix path completion participant --- extensions/css-language-features/server/src/pathCompletion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/css-language-features/server/src/pathCompletion.ts b/extensions/css-language-features/server/src/pathCompletion.ts index 9f3c7818508..b072c4136f6 100644 --- a/extensions/css-language-features/server/src/pathCompletion.ts +++ b/extensions/css-language-features/server/src/pathCompletion.ts @@ -20,7 +20,7 @@ export function getPathCompletionParticipant( result: CompletionList ): ICompletionParticipant { return { - onURILiteralValue: ({ position, range, uriValue }) => { + onCssURILiteralValue: ({ position, range, uriValue }) => { const isValueQuoted = startsWith(uriValue, `'`) || startsWith(uriValue, `"`); const fullValue = stripQuotes(uriValue); const valueBeforeCursor = isValueQuoted From e09c8a7086a28d53f786a99da71ffd95250e217c Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 17 Apr 2018 18:18:03 +0200 Subject: [PATCH 0862/1070] [css] adopt folding apis --- .../client/src/cssMain.ts | 28 ++++++++++++++----- extensions/css-language-features/package.json | 8 +++--- .../css-language-features/server/package.json | 4 +-- .../server/src/cssServerMain.ts | 23 +++++++++------ .../css-language-features/server/yarn.lock | 12 ++++---- extensions/css-language-features/yarn.lock | 6 ++-- 6 files changed, 50 insertions(+), 31 deletions(-) diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts index 22285fb91bf..ac1a1b7493e 100644 --- a/extensions/css-language-features/client/src/cssMain.ts +++ b/extensions/css-language-features/client/src/cssMain.ts @@ -10,7 +10,7 @@ const localize = nls.loadMessageBundle(); import { languages, window, commands, ExtensionContext, Range, Position, TextDocument, CompletionItem, CompletionItemKind, TextEdit, SnippetString, FoldingRangeList, FoldingRange, FoldingContext, CancellationToken } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient'; -import { FoldingRangesRequest, FoldingRangeRequestParam } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeRequest, FoldingRangeRequestParam, FoldingRangeClientCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; // this method is called when vs code is activated export function activate(context: ExtensionContext) { @@ -42,6 +42,21 @@ export function activate(context: ExtensionContext) { // Create the language client and start the client. let client = new LanguageClient('css', localize('cssserver.name', 'CSS Language Server'), serverOptions, clientOptions); client.registerProposedFeatures(); + client.registerFeature({ + fillClientCapabilities(capabilities: FoldingRangeClientCapabilities): void { + let textDocumentCap = capabilities.textDocument; + if (!textDocumentCap) { + textDocumentCap = capabilities.textDocument = {}; + } + textDocumentCap.foldingRange = { + dynamicRegistration: false, + rangeLimit: 5000, + lineFoldingOnly: true + }; + }, + initialize(capabilities, documentSelector): void { + } + }); let disposable = client.start(); // Push the disposable to the context's subscriptions so that the @@ -105,16 +120,15 @@ export function activate(context: ExtensionContext) { return languages.registerFoldingProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { - textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), - maxRanges: context.maxRanges + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; - return client.sendRequest(FoldingRangesRequest.type, param, token).then(res => { - if (res && Array.isArray(res.ranges)) { - return new FoldingRangeList(res.ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.type))); + return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { + if (Array.isArray(ranges)) { + return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); } return null; }, error => { - client.logFailedRequest(FoldingRangesRequest.type, error); + client.logFailedRequest(FoldingRangeRequest.type, error); return null; }); } diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json index f1eede08701..4179c9fef2c 100644 --- a/extensions/css-language-features/package.json +++ b/extensions/css-language-features/package.json @@ -21,9 +21,9 @@ "postinstall": "cd server && yarn install", "install-client-next": "yarn add vscode-languageclient@next" }, - "categories": [ - "Programming Languages" - ], + "categories": [ + "Programming Languages" + ], "contributes": { "configuration": [ { @@ -696,7 +696,7 @@ }, "dependencies": { "vscode-languageclient": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1", + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.1" }, "devDependencies": { diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 50b6ff3a2c7..060c0ee7732 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,9 +8,9 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.5", + "vscode-css-languageservice": "^3.0.9-next.7", "vscode-languageserver": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1" + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2" }, "devDependencies": { "@types/mocha": "2.2.33", diff --git a/extensions/css-language-features/server/src/cssServerMain.ts b/extensions/css-language-features/server/src/cssServerMain.ts index a42cad484fe..b78b9e4e40d 100644 --- a/extensions/css-language-features/server/src/cssServerMain.ts +++ b/extensions/css-language-features/server/src/cssServerMain.ts @@ -15,7 +15,7 @@ import { getLanguageModelCache } from './languageModelCache'; import { formatError, runSafe } from './utils/runner'; import URI from 'vscode-uri'; import { getPathCompletionParticipant } from './pathCompletion'; -import { FoldingProviderServerCapabilities, FoldingRangesRequest } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeServerCapabilities, FoldingRangeRequest } from 'vscode-languageserver-protocol-foldingprovider'; export interface Settings { css: LanguageSettings; @@ -49,6 +49,7 @@ connection.onShutdown(() => { }); let scopedSettingsSupport = false; +let foldingRangeLimit = Number.MAX_VALUE; let workspaceFolders: WorkspaceFolder[]; // After the server has started the client sends an initialize request. The server receives @@ -62,18 +63,22 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { } } - function hasClientCapability(name: string) { + function getClientCapability(name: string, def: T) { let keys = name.split('.'); let c: any = params.capabilities; for (let i = 0; c && i < keys.length; i++) { + if (!c.hasOwnProperty(keys[i])) { + return def; + } c = c[keys[i]]; } - return !!c; + return c; } - let snippetSupport = hasClientCapability('textDocument.completion.completionItem.snippetSupport'); - scopedSettingsSupport = hasClientCapability('workspace.configuration'); + let snippetSupport = !!getClientCapability('textDocument.completion.completionItem.snippetSupport', false); + scopedSettingsSupport = !!getClientCapability('workspace.configuration', false); + foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE); - let capabilities: ServerCapabilities & FoldingProviderServerCapabilities = { + let capabilities: ServerCapabilities & FoldingRangeServerCapabilities = { // Tell the client that the server works in FULL text document sync mode textDocumentSync: documents.syncKind, completionProvider: snippetSupport ? { resolveProvider: false, triggerCharacters: ['/'] } : undefined, @@ -85,7 +90,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { codeActionProvider: true, renameProvider: true, colorProvider: true, - foldingProvider: true + foldingRangeProvider: true }; return { capabilities }; }); @@ -276,10 +281,10 @@ connection.onRenameRequest((renameParameters, token) => { }, null, `Error while computing renames for ${renameParameters.textDocument.uri}`, token); }); -connection.onRequest(FoldingRangesRequest.type, (params, token) => { +connection.onRequest(FoldingRangeRequest.type, (params, token) => { return runSafe(() => { let document = documents.get(params.textDocument.uri); - return getLanguageService(document).getFoldingRanges(document, { maxRanges: params.maxRanges }); + return getLanguageService(document).getFoldingRanges(document, { rangeLimit: foldingRangeLimit }); }, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token); }); diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 3ee6a0d6448..06e9bd19565 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -10,9 +10,9 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-css-languageservice@^3.0.9-next.5: - version "3.0.9-next.5" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.5.tgz#854048eafc91406af4b276d9f812e24c677e262e" +vscode-css-languageservice@^3.0.9-next.7: + version "3.0.9-next.7" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.7.tgz#1eb8deadaa6bfaf55187656ea6fb6b7e8d71cd7f" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" @@ -21,9 +21,9 @@ vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock index 7b01c6fe5ce..37c6473e3aa 100644 --- a/extensions/css-language-features/yarn.lock +++ b/extensions/css-language-features/yarn.lock @@ -16,9 +16,9 @@ vscode-languageclient@^4.0.0: dependencies: vscode-languageserver-protocol "^3.6.0" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" From c8b4f0d05d2df2a0bd95f89e5b4ed8215f845ec3 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 17 Apr 2018 18:38:17 +0200 Subject: [PATCH 0863/1070] move proposed search api logic into its own world, #47058 --- .../extensionHost.contribution.ts | 1 + .../electron-browser/mainThreadFileSystem.ts | 132 +--------------- .../api/electron-browser/mainThreadSearch.ts | 148 ++++++++++++++++++ src/vs/workbench/api/node/extHost.api.impl.ts | 4 +- src/vs/workbench/api/node/extHost.protocol.ts | 12 +- .../workbench/api/node/extHostFileSystem.ts | 43 ----- src/vs/workbench/api/node/extHostSearch.ts | 64 ++++++++ 7 files changed, 231 insertions(+), 173 deletions(-) create mode 100644 src/vs/workbench/api/electron-browser/mainThreadSearch.ts create mode 100644 src/vs/workbench/api/node/extHostSearch.ts diff --git a/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts b/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts index 3418ddaf1a2..13d824066d0 100644 --- a/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts +++ b/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts @@ -39,6 +39,7 @@ import './mainThreadOutputService'; import './mainThreadProgress'; import './mainThreadQuickOpen'; import './mainThreadSCM'; +import './mainThreadSearch'; import './mainThreadSaveParticipant'; import './mainThreadStatusBar'; import './mainThreadStorage'; diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 8517ec69fe6..d48c4b7ba43 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -4,28 +4,23 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import URI, { UriComponents } from 'vs/base/common/uri'; -import { TPromise, PPromise } from 'vs/base/common/winjs.base'; -import { ExtHostContext, MainContext, IExtHostContext, MainThreadFileSystemShape, ExtHostFileSystemShape, IFileChangeDto } from '../node/extHost.protocol'; -import { IFileService, IStat, IFileChange, ISimpleReadWriteProvider, IFileSystemProviderBase, FileOpenFlags } from 'vs/platform/files/common/files'; +import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { Event, Emitter } from 'vs/base/common/event'; +import URI from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; -import { ISearchResultProvider, ISearchQuery, ISearchComplete, ISearchProgressItem, QueryType, IFileMatch, ISearchService, ILineMatch } from 'vs/platform/search/common/search'; -import { values } from 'vs/base/common/map'; -import { isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @extHostNamedCustomer(MainContext.MainThreadFileSystem) export class MainThreadFileSystem implements MainThreadFileSystemShape { private readonly _proxy: ExtHostFileSystemShape; private readonly _fileProvider = new Map(); - private readonly _searchProvider = new Map(); constructor( extHostContext: IExtHostContext, - @IFileService private readonly _fileService: IFileService, - @ISearchService private readonly _searchService: ISearchService + @IFileService private readonly _fileService: IFileService ) { this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostFileSystem); } @@ -38,27 +33,14 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { $registerFileSystemProvider(handle: number, scheme: string): void { this._fileProvider.set(handle, new RemoteFileSystemProvider(this._fileService, scheme, handle, this._proxy)); } - - $registerSearchProvider(handle: number, scheme: string): void { - this._searchProvider.set(handle, new RemoteSearchProvider(this._searchService, scheme, handle, this._proxy)); - } - $unregisterProvider(handle: number): void { dispose(this._fileProvider.get(handle)); this._fileProvider.delete(handle); - - dispose(this._searchProvider.get(handle)); - this._searchProvider.delete(handle); } $onFileSystemChange(handle: number, changes: IFileChangeDto[]): void { this._fileProvider.get(handle).$onFileSystemChange(changes); } - // --- search - - $handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void { - this._searchProvider.get(handle).handleFindMatch(session, data); - } } class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemProviderBase { @@ -121,105 +103,3 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP return this._proxy.$readdir(this._handle, resource); } } - -class SearchOperation { - - private static _idPool = 0; - - constructor( - readonly progress: (match: IFileMatch) => any, - readonly id: number = ++SearchOperation._idPool, - readonly matches = new Map() - ) { - // - } - - addMatch(resource: URI, match: ILineMatch): void { - if (!this.matches.has(resource.toString())) { - this.matches.set(resource.toString(), { resource, lineMatches: [] }); - } - if (match) { - this.matches.get(resource.toString()).lineMatches.push(match); - } - this.progress(this.matches.get(resource.toString())); - } -} - -class RemoteSearchProvider implements ISearchResultProvider { - - private readonly _registrations: IDisposable[]; - private readonly _searches = new Map(); - - - constructor( - searchService: ISearchService, - private readonly _scheme: string, - private readonly _handle: number, - private readonly _proxy: ExtHostFileSystemShape - ) { - this._registrations = [searchService.registerSearchResultProvider(this)]; - } - - dispose(): void { - dispose(this._registrations); - } - - search(query: ISearchQuery): PPromise { - - if (isFalsyOrEmpty(query.folderQueries)) { - return PPromise.as(undefined); - } - - let includes = { ...query.includePattern }; - let excludes = { ...query.excludePattern }; - - for (const folderQuery of query.folderQueries) { - if (folderQuery.folder.scheme === this._scheme) { - includes = { ...includes, ...folderQuery.includePattern }; - excludes = { ...excludes, ...folderQuery.excludePattern }; - } - } - - let outer: TPromise; - - return new PPromise((resolve, reject, report) => { - - const search = new SearchOperation(report); - this._searches.set(search.id, search); - - outer = query.type === QueryType.File - ? this._proxy.$provideFileSearchResults(this._handle, search.id, query.filePattern) - : this._proxy.$provideTextSearchResults(this._handle, search.id, query.contentPattern, { excludes: Object.keys(excludes), includes: Object.keys(includes) }); - - outer.then(() => { - this._searches.delete(search.id); - resolve(({ results: values(search.matches), stats: undefined })); - }, err => { - this._searches.delete(search.id); - reject(err); - }); - }, () => { - if (outer) { - outer.cancel(); - } - }); - } - - handleFindMatch(session: number, dataOrUri: UriComponents | [UriComponents, ILineMatch]): void { - if (!this._searches.has(session)) { - // ignore... - return; - } - let resource: URI; - let match: ILineMatch; - - if (Array.isArray(dataOrUri)) { - resource = URI.revive(dataOrUri[0]); - match = dataOrUri[1]; - } else { - resource = URI.revive(dataOrUri); - } - - this._searches.get(session).addMatch(resource, match); - } -} diff --git a/src/vs/workbench/api/electron-browser/mainThreadSearch.ts b/src/vs/workbench/api/electron-browser/mainThreadSearch.ts new file mode 100644 index 00000000000..e83864d3a4a --- /dev/null +++ b/src/vs/workbench/api/electron-browser/mainThreadSearch.ts @@ -0,0 +1,148 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import { isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { values } from 'vs/base/common/map'; +import URI, { UriComponents } from 'vs/base/common/uri'; +import { PPromise, TPromise } from 'vs/base/common/winjs.base'; +import { IFileMatch, ILineMatch, ISearchComplete, ISearchProgressItem, ISearchQuery, ISearchResultProvider, ISearchService, QueryType } from 'vs/platform/search/common/search'; +import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; +import { ExtHostContext, ExtHostSearchShape, IExtHostContext, MainContext, MainThreadSearchShape } from '../node/extHost.protocol'; + +@extHostNamedCustomer(MainContext.MainThreadSearch) +export class MainThreadSearch implements MainThreadSearchShape { + + private readonly _proxy: ExtHostSearchShape; + private readonly _searchProvider = new Map(); + + constructor( + extHostContext: IExtHostContext, + @ISearchService private readonly _searchService: ISearchService + ) { + this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostSearch); + } + + dispose(): void { + this._searchProvider.forEach(value => dispose()); + this._searchProvider.clear(); + } + + $registerSearchProvider(handle: number, scheme: string): void { + this._searchProvider.set(handle, new RemoteSearchProvider(this._searchService, scheme, handle, this._proxy)); + } + + $unregisterProvider(handle: number): void { + dispose(this._searchProvider.get(handle)); + this._searchProvider.delete(handle); + } + + $handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void { + this._searchProvider.get(handle).handleFindMatch(session, data); + } +} + +class SearchOperation { + + private static _idPool = 0; + + constructor( + readonly progress: (match: IFileMatch) => any, + readonly id: number = ++SearchOperation._idPool, + readonly matches = new Map() + ) { + // + } + + addMatch(resource: URI, match: ILineMatch): void { + if (!this.matches.has(resource.toString())) { + this.matches.set(resource.toString(), { resource, lineMatches: [] }); + } + if (match) { + this.matches.get(resource.toString()).lineMatches.push(match); + } + this.progress(this.matches.get(resource.toString())); + } +} + +class RemoteSearchProvider implements ISearchResultProvider { + + private readonly _registrations: IDisposable[]; + private readonly _searches = new Map(); + + + constructor( + searchService: ISearchService, + private readonly _scheme: string, + private readonly _handle: number, + private readonly _proxy: ExtHostSearchShape + ) { + this._registrations = [searchService.registerSearchResultProvider(this)]; + } + + dispose(): void { + dispose(this._registrations); + } + + search(query: ISearchQuery): PPromise { + + if (isFalsyOrEmpty(query.folderQueries)) { + return PPromise.as(undefined); + } + + let includes = { ...query.includePattern }; + let excludes = { ...query.excludePattern }; + + for (const folderQuery of query.folderQueries) { + if (folderQuery.folder.scheme === this._scheme) { + includes = { ...includes, ...folderQuery.includePattern }; + excludes = { ...excludes, ...folderQuery.excludePattern }; + } + } + + let outer: TPromise; + + return new PPromise((resolve, reject, report) => { + + const search = new SearchOperation(report); + this._searches.set(search.id, search); + + outer = query.type === QueryType.File + ? this._proxy.$provideFileSearchResults(this._handle, search.id, query.filePattern) + : this._proxy.$provideTextSearchResults(this._handle, search.id, query.contentPattern, { excludes: Object.keys(excludes), includes: Object.keys(includes) }); + + outer.then(() => { + this._searches.delete(search.id); + resolve(({ results: values(search.matches), stats: undefined })); + }, err => { + this._searches.delete(search.id); + reject(err); + }); + }, () => { + if (outer) { + outer.cancel(); + } + }); + } + + handleFindMatch(session: number, dataOrUri: UriComponents | [UriComponents, ILineMatch]): void { + if (!this._searches.has(session)) { + // ignore... + return; + } + let resource: URI; + let match: ILineMatch; + + if (Array.isArray(dataOrUri)) { + resource = URI.revive(dataOrUri[0]); + match = dataOrUri[1]; + } else { + resource = URI.revive(dataOrUri); + } + + this._searches.get(session).addMatch(resource, match); + } +} diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index ee9475f99b7..4e4583d1586 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -59,6 +59,7 @@ import { OverviewRulerLane } from 'vs/editor/common/model'; import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { ExtHostWebviews } from 'vs/workbench/api/node/extHostWebview'; import * as files from 'vs/platform/files/common/files'; +import { ExtHostSearch } from './extHostSearch'; export interface IExtensionApiFactory { (extension: IExtensionDescription): typeof vscode; @@ -116,6 +117,7 @@ export function createApiFactory( const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, new ExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands)); const extHostTerminalService = rpcProtocol.set(ExtHostContext.ExtHostTerminalService, new ExtHostTerminalService(rpcProtocol)); const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostLogService)); + const extHostSearch = rpcProtocol.set(ExtHostContext.ExtHostSearch, new ExtHostSearch(rpcProtocol)); const extHostTask = rpcProtocol.set(ExtHostContext.ExtHostTask, new ExtHostTask(rpcProtocol, extHostWorkspace)); const extHostWindow = rpcProtocol.set(ExtHostContext.ExtHostWindow, new ExtHostWindow(rpcProtocol)); rpcProtocol.set(ExtHostContext.ExtHostExtensionService, extensionService); @@ -568,7 +570,7 @@ export function createApiFactory( return extHostFileSystem.registerFileSystemProvider(scheme, provider, newProvider); }), registerSearchProvider: proposedApiFunction(extension, (scheme, provider) => { - return extHostFileSystem.registerSearchProvider(scheme, provider); + return extHostSearch.registerSearchProvider(scheme, provider); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 2301dee43bc..49e3cdb0b56 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -383,11 +383,13 @@ export interface IFileChangeDto { export interface MainThreadFileSystemShape extends IDisposable { $registerFileSystemProvider(handle: number, scheme: string): void; + $unregisterProvider(handle: number): void; + $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; +} + +export interface MainThreadSearchShape extends IDisposable { $registerSearchProvider(handle: number, scheme: string): void; $unregisterProvider(handle: number): void; - - $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; - $handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void; } @@ -576,7 +578,9 @@ export interface ExtHostFileSystemShape { $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; $delete(handle: number, resource: UriComponents): TPromise; +} +export interface ExtHostSearchShape { $provideFileSearchResults(handle: number, session: number, query: string): TPromise; $provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, options: { includes: string[], excludes: string[] }): TPromise; } @@ -857,6 +861,7 @@ export const MainContext = { MainThreadFileSystem: createMainId('MainThreadFileSystem'), MainThreadExtensionService: createMainId('MainThreadExtensionService'), MainThreadSCM: createMainId('MainThreadSCM'), + MainThreadSearch: createMainId('MainThreadSearch'), MainThreadTask: createMainId('MainThreadTask'), MainThreadWindow: createMainId('MainThreadWindow'), }; @@ -882,6 +887,7 @@ export const ExtHostContext = { ExtHostLogService: createExtId('ExtHostLogService'), ExtHostTerminalService: createExtId('ExtHostTerminalService'), ExtHostSCM: createExtId('ExtHostSCM'), + ExtHostSearch: createExtId('ExtHostSearch'), ExtHostTask: createExtId('ExtHostTask'), ExtHostWorkspace: createExtId('ExtHostWorkspace'), ExtHostWindow: createExtId('ExtHostWindow'), diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 965c01793e6..e6114f770a4 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -13,7 +13,6 @@ import * as files from 'vs/platform/files/common/files'; import * as path from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { asWinJsPromise } from 'vs/base/common/async'; -import { IPatternInfo } from 'vs/platform/search/common/search'; import { values } from 'vs/base/common/map'; import { Range, FileType, FileChangeType, FileChangeType2, FileType2 } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; @@ -157,7 +156,6 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { private readonly _proxy: MainThreadFileSystemShape; private readonly _fsProvider = new Map(); - private readonly _searchProvider = new Map(); private readonly _linkProvider = new FsLinkProvider(); private _handlePool: number = 0; @@ -216,18 +214,6 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { }; } - registerSearchProvider(scheme: string, provider: vscode.SearchProvider) { - const handle = this._handlePool++; - this._searchProvider.set(handle, provider); - this._proxy.$registerSearchProvider(handle, scheme); - return { - dispose: () => { - this._searchProvider.delete(handle); - this._proxy.$unregisterProvider(handle); - } - }; - } - $stat(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } @@ -253,33 +239,4 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $mkdir(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); } - - $provideFileSearchResults(handle: number, session: number, query: string): TPromise { - const provider = this._searchProvider.get(handle); - if (!provider.provideFileSearchResults) { - return TPromise.as(undefined); - } - const progress = { - report: (uri) => { - this._proxy.$handleFindMatch(handle, session, uri); - } - }; - return asWinJsPromise(token => provider.provideFileSearchResults(query, progress, token)); - } - $provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, options: { includes: string[], excludes: string[] }): TPromise { - const provider = this._searchProvider.get(handle); - if (!provider.provideTextSearchResults) { - return TPromise.as(undefined); - } - const progress = { - report: (data: vscode.TextSearchResult) => { - this._proxy.$handleFindMatch(handle, session, [data.uri, { - lineNumber: data.range.start.line, - preview: data.preview.leading + data.preview.matching + data.preview.trailing, - offsetAndLengths: [[data.preview.leading.length, data.preview.matching.length]] - }]); - } - }; - return asWinJsPromise(token => provider.provideTextSearchResults(pattern, options, progress, token)); - } } diff --git a/src/vs/workbench/api/node/extHostSearch.ts b/src/vs/workbench/api/node/extHostSearch.ts new file mode 100644 index 00000000000..714e9bfe766 --- /dev/null +++ b/src/vs/workbench/api/node/extHostSearch.ts @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import { asWinJsPromise } from 'vs/base/common/async'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { IPatternInfo } from 'vs/platform/search/common/search'; +import * as vscode from 'vscode'; +import { ExtHostSearchShape, IMainContext, MainContext, MainThreadSearchShape } from './extHost.protocol'; + +export class ExtHostSearch implements ExtHostSearchShape { + + private readonly _proxy: MainThreadSearchShape; + private readonly _searchProvider = new Map(); + private _handlePool: number = 0; + + constructor(mainContext: IMainContext) { + this._proxy = mainContext.getProxy(MainContext.MainThreadSearch); + } + + registerSearchProvider(scheme: string, provider: vscode.SearchProvider) { + const handle = this._handlePool++; + this._searchProvider.set(handle, provider); + this._proxy.$registerSearchProvider(handle, scheme); + return { + dispose: () => { + this._searchProvider.delete(handle); + this._proxy.$unregisterProvider(handle); + } + }; + } + + $provideFileSearchResults(handle: number, session: number, query: string): TPromise { + const provider = this._searchProvider.get(handle); + if (!provider.provideFileSearchResults) { + return TPromise.as(undefined); + } + const progress = { + report: (uri) => { + this._proxy.$handleFindMatch(handle, session, uri); + } + }; + return asWinJsPromise(token => provider.provideFileSearchResults(query, progress, token)); + } + + $provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, options: { includes: string[], excludes: string[] }): TPromise { + const provider = this._searchProvider.get(handle); + if (!provider.provideTextSearchResults) { + return TPromise.as(undefined); + } + const progress = { + report: (data: vscode.TextSearchResult) => { + this._proxy.$handleFindMatch(handle, session, [data.uri, { + lineNumber: data.range.start.line, + preview: data.preview.leading + data.preview.matching + data.preview.trailing, + offsetAndLengths: [[data.preview.leading.length, data.preview.matching.length]] + }]); + } + }; + return asWinJsPromise(token => provider.provideTextSearchResults(pattern, options, progress, token)); + } +} From 40f2700e7ad8fa5c93b69a27da8c247c504c0f1b Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 18:50:05 +0200 Subject: [PATCH 0864/1070] - Store all current composites with pinned state - Retain the composites states - Compute pinned composites from loaded composite states and current composites - Store on shutdown - Parameter in add api to activate the added composite - Pin the added composite at currect location --- .../parts/activitybar/activitybarPart.ts | 5 ++ .../parts/compositebar/compositeBar.ts | 77 +++++++++++++------ .../browser/parts/panel/panelPart.ts | 5 ++ 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 0fc2fd42342..2382e8f9534 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -242,6 +242,11 @@ export class ActivitybarPart extends Part { return sizes; } + public shutdown(): void { + this.compositeBar.shutdown(); + super.shutdown(); + } + public dispose(): void { if (this.compositeBar) { this.compositeBar.dispose(); diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 682931b6b8f..19b667d8ceb 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -34,6 +34,11 @@ export interface ICompositeBarOptions { hidePart: () => TPromise; } +interface CompositeState { + id: string; + pinned: boolean; +} + export class CompositeBar implements ICompositeBar { private readonly _onDidContextMenu: Emitter; @@ -50,6 +55,7 @@ export class CompositeBar implements ICompositeBar { private compositeIdToActivityStack: { [compositeId: string]: ICompositeActivity[]; }; private compositeSizeInBar: Map; + private initialCompositesStates: CompositeState[]; private pinnedComposites: string[]; private activeCompositeId: string; private activeUnpinnedCompositeId: string; @@ -66,31 +72,35 @@ export class CompositeBar implements ICompositeBar { this.compositeSizeInBar = new Map(); this._onDidContextMenu = new Emitter(); - - const pinnedComposites = JSON.parse(this.storageService.get(this.options.storageId, StorageScope.GLOBAL, null)) as string[]; - if (pinnedComposites) { - const compositeIds = this.options.composites.map(c => c.id); - this.pinnedComposites = pinnedComposites.filter(pcid => compositeIds.indexOf(pcid) >= 0); - } else { - this.pinnedComposites = this.options.composites.map(c => c.id); - } + this.initialCompositesStates = this.loadCompositesStates(); + this.pinnedComposites = this.initialCompositesStates + .filter(c => c.pinned) + .map(c => c.id) + .filter(id => this.options.composites.some(c => c.id === id)); } public get onDidContextMenu(): Event { return this._onDidContextMenu.event; } - public addComposite(compositeData: { id: string; name: string, order: number }, pin: boolean): void { + public addComposite(compositeData: { id: string; name: string, order: number }, activate: boolean): void { if (this.options.composites.filter(c => c.id === compositeData.id).length) { return; } - let i = 0; - while (i < this.options.composites.length && this.options.composites[i].order < compositeData.order) { - i++; - } this.options.composites.push(compositeData); - if (pin) { - this.pin(compositeData.id, true, i); + + const compositeState = this.initialCompositesStates.filter(c => c.id === compositeData.id)[0]; + if (!compositeState /* new composites are pinned by default */ || compositeState.pinned) { + let index; + if (compositeState) { + index = this.initialCompositesStates.indexOf(compositeState); + } else { + index = 0; + while (index < this.options.composites.length && this.options.composites[index].order < compositeData.order) { + index++; + } + } + this.pin(compositeData.id, true, index, activate); } } @@ -437,19 +447,20 @@ export class CompositeBar implements ICompositeBar { }); // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); } public isPinned(compositeId: string): boolean { return this.pinnedComposites.indexOf(compositeId) >= 0; } - public pin(compositeId: string, update = true, index = this.pinnedComposites.length): void { + public pin(compositeId: string, update = true, index = this.pinnedComposites.length, activate: boolean = true): void { if (this.isPinned(compositeId)) { return; } - this.options.openComposite(compositeId).then(() => { + const activatePromise = activate ? this.options.openComposite(compositeId) : TPromise.as(null); + activatePromise.then(() => { this.pinnedComposites.splice(index, 0, compositeId); this.pinnedComposites = arrays.distinct(this.pinnedComposites); @@ -458,7 +469,7 @@ export class CompositeBar implements ICompositeBar { } // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); }); } @@ -490,7 +501,7 @@ export class CompositeBar implements ICompositeBar { }, 0); // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); } public layout(dimension: Dimension): void { @@ -514,8 +525,30 @@ export class CompositeBar implements ICompositeBar { this.updateCompositeSwitcher(); } - private savePinnedComposites(): void { - this.storageService.store(this.options.storageId, JSON.stringify(this.pinnedComposites), StorageScope.GLOBAL); + private loadCompositesStates(): CompositeState[] { + const storedStates = >JSON.parse(this.storageService.get(this.options.storageId, StorageScope.GLOBAL, '[]')); + const compositeStates = storedStates.map(c => + typeof c === 'string' /* migration from pinned states to composites states */ ? { id: c, pinned: true } : c); + + const newComposites = this.options.composites.filter(c => compositeStates.every(s => s.id !== c.id)); + newComposites.sort((c1, c2) => c1.order < c2.order ? -1 : 1); + newComposites.forEach(c => compositeStates.push({ id: c.id, pinned: true /* new composites are pinned by default */ })); + + return compositeStates; + } + + private saveCompositesStates(): void { + const toSave = this.pinnedComposites.map(id => ({ id, pinned: true })); + for (const composite of this.options.composites) { + if (this.pinnedComposites.indexOf(composite.id) === -1) { // Unpinned composites + toSave.push({ id: composite.id, pinned: false }); + } + } + this.storageService.store(this.options.storageId, JSON.stringify(toSave), StorageScope.GLOBAL); + } + + public shutdown(): void { + this.saveCompositesStates(); } public dispose(): void { diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index 747f4c56d68..d339b0cfe04 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -243,6 +243,11 @@ export class PanelPart extends CompositePart implements IPanelService { return sizes; } + public shutdown(): void { + this.compositeBar.shutdown(); + super.shutdown(); + } + private layoutCompositeBar(): void { if (this.dimension) { let availableWidth = this.dimension.width - 40; // take padding into account From d518eae0a27dc752390bb37529a8192f1c903c97 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 18:53:15 +0200 Subject: [PATCH 0865/1070] Fix the order of contributed groups --- src/vs/workbench/api/browser/activitybarExtensionPoint.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts index f39772adead..bcb3c89c92c 100644 --- a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts +++ b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts @@ -87,7 +87,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { if (!schema.isValidActivityGroup(value, collector)) { return; } - value.forEach(descriptor => { + value.forEach((descriptor, index) => { const id = `workbench.view.extension.${descriptor.id}`; const title = descriptor.title; const cssClass = `extensionViewlet-${descriptor.id}`; @@ -120,7 +120,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { id, title, cssClass, - -1 + 6 + index ); Registry.as(ViewletExtensions.Viewlets).registerViewlet(viewletDescriptor); From 4fca46dcc8d7bdf3168cc6d9f700fcfe1263378e Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 17 Apr 2018 18:55:19 +0200 Subject: [PATCH 0866/1070] [json] adopt new folding APIs --- .../client/src/jsonMain.ts | 28 ++++++++++++++----- .../json-language-features/package.json | 8 +++--- .../server/package.json | 4 +-- .../server/src/jsonServerMain.ts | 26 ++++++++++------- .../json-language-features/server/yarn.lock | 12 ++++---- extensions/json-language-features/yarn.lock | 6 ++-- 6 files changed, 52 insertions(+), 32 deletions(-) diff --git a/extensions/json-language-features/client/src/jsonMain.ts b/extensions/json-language-features/client/src/jsonMain.ts index 78126d24e6d..ee895024bae 100644 --- a/extensions/json-language-features/client/src/jsonMain.ts +++ b/extensions/json-language-features/client/src/jsonMain.ts @@ -12,7 +12,7 @@ import { workspace, languages, ExtensionContext, extensions, Uri, LanguageConfig import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification, CancellationToken } from 'vscode-languageclient'; import TelemetryReporter from 'vscode-extension-telemetry'; -import { FoldingRangesRequest, FoldingRangeRequestParam } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeRequest, FoldingRangeRequestParam, FoldingRangeClientCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; import { hash } from './utils/hash'; @@ -97,6 +97,21 @@ export function activate(context: ExtensionContext) { // Create the language client and start the client. let client = new LanguageClient('json', localize('jsonserver.name', 'JSON Language Server'), serverOptions, clientOptions); client.registerProposedFeatures(); + client.registerFeature({ + fillClientCapabilities(capabilities: FoldingRangeClientCapabilities): void { + let textDocumentCap = capabilities.textDocument; + if (!textDocumentCap) { + textDocumentCap = capabilities.textDocument = {}; + } + textDocumentCap.foldingRange = { + dynamicRegistration: false, + rangeLimit: 5000, + lineFoldingOnly: true + }; + }, + initialize(capabilities, documentSelector): void { + } + }); let disposable = client.start(); toDispose.push(disposable); @@ -144,16 +159,15 @@ export function activate(context: ExtensionContext) { return languages.registerFoldingProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { - textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), - maxRanges: context.maxRanges + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; - return client.sendRequest(FoldingRangesRequest.type, param, token).then(res => { - if (res && Array.isArray(res.ranges)) { - return new FoldingRangeList(res.ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.type))); + return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { + if (Array.isArray(ranges)) { + return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); } return null; }, error => { - client.logFailedRequest(FoldingRangesRequest.type, error); + client.logFailedRequest(FoldingRangeRequest.type, error); return null; }); } diff --git a/extensions/json-language-features/package.json b/extensions/json-language-features/package.json index 1632b67bccf..807a17db050 100644 --- a/extensions/json-language-features/package.json +++ b/extensions/json-language-features/package.json @@ -20,9 +20,9 @@ "postinstall": "cd server && yarn install", "install-client-next": "yarn add vscode-languageclient@next" }, - "categories": [ - "Programming Languages" - ], + "categories": [ + "Programming Languages" + ], "contributes": { "configuration": { "id": "json", @@ -102,7 +102,7 @@ "dependencies": { "vscode-extension-telemetry": "0.0.15", "vscode-languageclient": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1", + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.2" }, "devDependencies": { diff --git a/extensions/json-language-features/server/package.json b/extensions/json-language-features/server/package.json index 0fef4531f08..3f4cc7718cc 100644 --- a/extensions/json-language-features/server/package.json +++ b/extensions/json-language-features/server/package.json @@ -13,9 +13,9 @@ "dependencies": { "jsonc-parser": "^2.0.0-next.1", "request-light": "^0.2.2", - "vscode-json-languageservice": "^3.1.2-next.1", + "vscode-json-languageservice": "^3.1.2-next.2", "vscode-languageserver": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1", + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.2", "vscode-uri": "^1.0.3" }, diff --git a/extensions/json-language-features/server/src/jsonServerMain.ts b/extensions/json-language-features/server/src/jsonServerMain.ts index 0ecb72259cd..eb1587786b9 100644 --- a/extensions/json-language-features/server/src/jsonServerMain.ts +++ b/extensions/json-language-features/server/src/jsonServerMain.ts @@ -19,7 +19,7 @@ import { formatError, runSafe, runSafeAsync } from './utils/runner'; import { JSONDocument, JSONSchema, getLanguageService, DocumentLanguageSettings, SchemaConfiguration } from 'vscode-json-languageservice'; import { getLanguageModelCache } from './languageModelCache'; -import { FoldingRangesRequest, FoldingProviderServerCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeRequest, FoldingRangeServerCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; interface ISchemaAssociations { [pattern: string]: string[]; @@ -60,22 +60,28 @@ documents.listen(connection); let clientSnippetSupport = false; let clientDynamicRegisterSupport = false; +let foldingRangeLimit = Number.MAX_VALUE; // After the server has started the client sends an initialize request. The server receives // in the passed params the rootPath of the workspace plus the client capabilities. connection.onInitialize((params: InitializeParams): InitializeResult => { - function hasClientCapability(...keys: string[]) { - let c = params.capabilities as any; + function getClientCapability(name: string, def: T) { + let keys = name.split('.'); + let c: any = params.capabilities; for (let i = 0; c && i < keys.length; i++) { + if (!c.hasOwnProperty(keys[i])) { + return def; + } c = c[keys[i]]; } - return !!c; + return c; } - clientSnippetSupport = hasClientCapability('textDocument', 'completion', 'completionItem', 'snippetSupport'); - clientDynamicRegisterSupport = hasClientCapability('workspace', 'symbol', 'dynamicRegistration'); - let capabilities: ServerCapabilities & FoldingProviderServerCapabilities = { + clientSnippetSupport = getClientCapability('textDocument.completion.completionItem.snippetSupport', false); + clientDynamicRegisterSupport = getClientCapability('workspace.symbol.dynamicRegistration', false); + foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE); + let capabilities: ServerCapabilities & FoldingRangeServerCapabilities = { // Tell the client that the server works in FULL text document sync mode textDocumentSync: documents.syncKind, completionProvider: clientSnippetSupport ? { resolveProvider: true, triggerCharacters: ['"', ':'] } : void 0, @@ -83,7 +89,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { documentSymbolProvider: true, documentRangeFormattingProvider: false, colorProvider: true, - foldingProvider: true + foldingRangeProvider: true }; return { capabilities }; @@ -364,11 +370,11 @@ connection.onColorPresentation((params, token) => { }, [], `Error while computing color presentations for ${params.textDocument.uri}`, token); }); -connection.onRequest(FoldingRangesRequest.type, (params, token) => { +connection.onRequest(FoldingRangeRequest.type, (params, token) => { return runSafe(() => { let document = documents.get(params.textDocument.uri); if (document) { - return languageService.getFoldingRanges(document, { maxRanges: params.maxRanges }); + return languageService.getFoldingRanges(document, { rangeLimit: foldingRangeLimit }); } return null; }, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token); diff --git a/extensions/json-language-features/server/yarn.lock b/extensions/json-language-features/server/yarn.lock index 1ae1cc93da0..26fe2245dcd 100644 --- a/extensions/json-language-features/server/yarn.lock +++ b/extensions/json-language-features/server/yarn.lock @@ -72,9 +72,9 @@ request-light@^0.2.2: https-proxy-agent "2.1.1" vscode-nls "^2.0.2" -vscode-json-languageservice@^3.1.2-next.1: - version "3.1.2-next.1" - resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.1.2-next.1.tgz#8acee581c664e2af72ade2f08252aeae9b5918ca" +vscode-json-languageservice@^3.1.2-next.2: + version "3.1.2-next.2" + resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.1.2-next.2.tgz#da5346e5c22edbce739f29c110eb41732d41dc2d" dependencies: jsonc-parser "^2.0.0" vscode-languageserver-types "^3.6.1" @@ -85,9 +85,9 @@ vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" diff --git a/extensions/json-language-features/yarn.lock b/extensions/json-language-features/yarn.lock index 2db2da5dbe9..2a2706462ef 100644 --- a/extensions/json-language-features/yarn.lock +++ b/extensions/json-language-features/yarn.lock @@ -44,9 +44,9 @@ vscode-languageclient@^4.0.0: dependencies: vscode-languageserver-protocol "^3.6.0" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" From a322ceb0f6af917aa8ed6a6e51736c6e481848e5 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 17 Apr 2018 19:04:59 +0200 Subject: [PATCH 0867/1070] [html] adopt folding APIs --- .../client/src/htmlMain.ts | 28 ++++++++++++----- .../html-language-features/package.json | 6 ++-- .../server/package.json | 6 ++-- .../server/src/htmlServerMain.ts | 30 +++++++++++-------- .../server/src/modes/cssMode.ts | 2 +- .../server/src/modes/htmlFolding.ts | 6 ++-- .../server/src/modes/htmlMode.ts | 2 +- .../server/src/modes/javascriptMode.ts | 4 +-- .../server/src/test/folding.test.ts | 12 ++++---- .../html-language-features/server/yarn.lock | 18 +++++------ extensions/html-language-features/yarn.lock | 6 ++-- 11 files changed, 70 insertions(+), 50 deletions(-) diff --git a/extensions/html-language-features/client/src/htmlMain.ts b/extensions/html-language-features/client/src/htmlMain.ts index b90975f8b4a..1cde186c175 100644 --- a/extensions/html-language-features/client/src/htmlMain.ts +++ b/extensions/html-language-features/client/src/htmlMain.ts @@ -14,7 +14,7 @@ import { EMPTY_ELEMENTS } from './htmlEmptyTagsShared'; import { activateTagClosing } from './tagClosing'; import TelemetryReporter from 'vscode-extension-telemetry'; -import { FoldingRangesRequest, FoldingRangeRequestParam } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeRequest, FoldingRangeRequestParam, FoldingRangeClientCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; namespace TagCloseRequest { export const type: RequestType = new RequestType('html/tag'); @@ -64,6 +64,21 @@ export function activate(context: ExtensionContext) { // Create the language client and start the client. let client = new LanguageClient('html', localize('htmlserver.name', 'HTML Language Server'), serverOptions, clientOptions); client.registerProposedFeatures(); + client.registerFeature({ + fillClientCapabilities(capabilities: FoldingRangeClientCapabilities): void { + let textDocumentCap = capabilities.textDocument; + if (!textDocumentCap) { + textDocumentCap = capabilities.textDocument = {}; + } + textDocumentCap.foldingRange = { + dynamicRegistration: false, + rangeLimit: 5000, + lineFoldingOnly: true + }; + }, + initialize(capabilities, documentSelector): void { + } + }); let disposable = client.start(); toDispose.push(disposable); @@ -162,16 +177,15 @@ export function activate(context: ExtensionContext) { return languages.registerFoldingProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { - textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), - maxRanges: context.maxRanges + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; - return client.sendRequest(FoldingRangesRequest.type, param, token).then(res => { - if (res && Array.isArray(res.ranges)) { - return new FoldingRangeList(res.ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.type))); + return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { + if (Array.isArray(ranges)) { + return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); } return null; }, error => { - client.logFailedRequest(FoldingRangesRequest.type, error); + client.logFailedRequest(FoldingRangeRequest.type, error); return null; }); } diff --git a/extensions/html-language-features/package.json b/extensions/html-language-features/package.json index f90024e779e..7de2bb112bc 100644 --- a/extensions/html-language-features/package.json +++ b/extensions/html-language-features/package.json @@ -22,8 +22,8 @@ "install-client-next": "yarn add vscode-languageclient@next" }, "categories": [ - "Programming Languages" - ], + "Programming Languages" + ], "contributes": { "configuration": { "id": "html", @@ -174,7 +174,7 @@ "dependencies": { "vscode-extension-telemetry": "0.0.15", "vscode-languageclient": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1", + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.2" }, "devDependencies": { diff --git a/extensions/html-language-features/server/package.json b/extensions/html-language-features/server/package.json index 839f00984fa..1ee90e635c3 100644 --- a/extensions/html-language-features/server/package.json +++ b/extensions/html-language-features/server/package.json @@ -8,11 +8,11 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.6", + "vscode-css-languageservice": "^3.0.9-next.7", "vscode-emmet-helper": "1.2.5", - "vscode-html-languageservice": "^2.1.3-next.1", + "vscode-html-languageservice": "^2.1.3-next.2", "vscode-languageserver": "^4.0.0", - "vscode-languageserver-protocol-foldingprovider": "^1.0.1", + "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-languageserver-types": "^3.6.1", "vscode-nls": "^3.2.2", "vscode-uri": "^1.0.3" diff --git a/extensions/html-language-features/server/src/htmlServerMain.ts b/extensions/html-language-features/server/src/htmlServerMain.ts index 7d84f226c16..c054ca83845 100644 --- a/extensions/html-language-features/server/src/htmlServerMain.ts +++ b/extensions/html-language-features/server/src/htmlServerMain.ts @@ -20,7 +20,7 @@ import uri from 'vscode-uri'; import { formatError, runSafe, runSafeAsync } from './utils/runner'; import { doComplete as emmetDoComplete, updateExtensionsPath as updateEmmetExtensionsPath, getEmmetCompletionParticipants } from 'vscode-emmet-helper'; -import { FoldingRangesRequest, FoldingProviderServerCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRangeRequest, FoldingRangeServerCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; import { getFoldingRanges } from './modes/htmlFolding'; namespace TagCloseRequest { @@ -55,6 +55,7 @@ let clientSnippetSupport = false; let clientDynamicRegisterSupport = false; let scopedSettingsSupport = false; let workspaceFoldersSupport = false; +let foldingRangeLimit = Number.MAX_VALUE; var globalSettings: Settings = {}; let documentSettings: { [key: string]: Thenable } = {}; @@ -106,19 +107,24 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { languageModes.dispose(); }); - function hasClientCapability(...keys: string[]) { - let c = params.capabilities; + function getClientCapability(name: string, def: T) { + let keys = name.split('.'); + let c: any = params.capabilities; for (let i = 0; c && i < keys.length; i++) { + if (!c.hasOwnProperty(keys[i])) { + return def; + } c = c[keys[i]]; } - return !!c; + return c; } - clientSnippetSupport = hasClientCapability('textDocument', 'completion', 'completionItem', 'snippetSupport'); - clientDynamicRegisterSupport = hasClientCapability('workspace', 'symbol', 'dynamicRegistration'); - scopedSettingsSupport = hasClientCapability('workspace', 'configuration'); - workspaceFoldersSupport = hasClientCapability('workspace', 'workspaceFolders'); - let capabilities: ServerCapabilities & FoldingProviderServerCapabilities = { + clientSnippetSupport = getClientCapability('textDocument.completion.completionItem.snippetSupport', false); + clientDynamicRegisterSupport = getClientCapability('workspace.symbol.dynamicRegistration', false); + scopedSettingsSupport = getClientCapability('workspace.configuration', false); + workspaceFoldersSupport = getClientCapability('workspace.workspaceFolders', false); + foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE); + let capabilities: ServerCapabilities & FoldingRangeServerCapabilities = { // Tell the client that the server works in FULL text document sync mode textDocumentSync: documents.syncKind, completionProvider: clientSnippetSupport ? { resolveProvider: true, triggerCharacters: [...emmetTriggerCharacters, '.', ':', '<', '"', '=', '/'] } : undefined, @@ -131,7 +137,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { signatureHelpProvider: { triggerCharacters: ['('] }, referencesProvider: true, colorProvider: true, - foldingProvider: true + foldingRangeProvider: true }; return { capabilities }; }); @@ -461,11 +467,11 @@ connection.onRequest(TagCloseRequest.type, (params, token) => { }, null, `Error while computing tag close actions for ${params.textDocument.uri}`, token); }); -connection.onRequest(FoldingRangesRequest.type, (params, token) => { +connection.onRequest(FoldingRangeRequest.type, (params, token) => { return runSafe(() => { let document = documents.get(params.textDocument.uri); if (document) { - return getFoldingRanges(languageModes, document, params.maxRanges, token); + return getFoldingRanges(languageModes, document, foldingRangeLimit, token); } return null; }, null, `Error while computing folding regions for ${params.textDocument.uri}`, token); diff --git a/extensions/html-language-features/server/src/modes/cssMode.ts b/extensions/html-language-features/server/src/modes/cssMode.ts index 4c240754610..1b40285ef0d 100644 --- a/extensions/html-language-features/server/src/modes/cssMode.ts +++ b/extensions/html-language-features/server/src/modes/cssMode.ts @@ -77,7 +77,7 @@ export function getCSSMode(documentRegions: LanguageModelCache r.startLine >= range.start.line && r.endLine < range.end.line); }, onDocumentRemoved(document: TextDocument) { diff --git a/extensions/html-language-features/server/src/modes/htmlFolding.ts b/extensions/html-language-features/server/src/modes/htmlFolding.ts index 0b8654f43aa..429dc3ac1a2 100644 --- a/extensions/html-language-features/server/src/modes/htmlFolding.ts +++ b/extensions/html-language-features/server/src/modes/htmlFolding.ts @@ -4,10 +4,10 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; import { TextDocument, CancellationToken, Position, Range } from 'vscode-languageserver'; -import { FoldingRange, FoldingRangeList } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRange } from 'vscode-languageserver-protocol-foldingprovider'; import { LanguageModes } from './languageModes'; -export function getFoldingRanges(languageModes: LanguageModes, document: TextDocument, maxRanges: number | undefined, cancellationToken: CancellationToken | null): FoldingRangeList { +export function getFoldingRanges(languageModes: LanguageModes, document: TextDocument, maxRanges: number | undefined, cancellationToken: CancellationToken | null): FoldingRange[] { let htmlMode = languageModes.getMode('html'); let range = Range.create(Position.create(0, 0), Position.create(document.lineCount, 0)); let ranges: FoldingRange[] = []; @@ -24,7 +24,7 @@ export function getFoldingRanges(languageModes: LanguageModes, document: TextDoc if (maxRanges && ranges.length > maxRanges) { ranges = limitRanges(ranges, maxRanges); } - return { ranges }; + return ranges; } function limitRanges(ranges: FoldingRange[], maxRanges: number) { diff --git a/extensions/html-language-features/server/src/modes/htmlMode.ts b/extensions/html-language-features/server/src/modes/htmlMode.ts index 5176fb3eed2..d906ecde4ca 100644 --- a/extensions/html-language-features/server/src/modes/htmlMode.ts +++ b/extensions/html-language-features/server/src/modes/htmlMode.ts @@ -64,7 +64,7 @@ export function getHTMLMode(htmlLanguageService: HTMLLanguageService, workspace: return htmlLanguageService.format(document, range, formatSettings); }, getFoldingRanges(document: TextDocument, range: Range): FoldingRange[] { - let ranges = htmlLanguageService.getFoldingRanges(document).ranges; + let ranges = htmlLanguageService.getFoldingRanges(document); return ranges.filter(r => r.startLine >= range.start.line && r.endLine < range.end.line); }, doAutoClose(document: TextDocument, position: Position) { diff --git a/extensions/html-language-features/server/src/modes/javascriptMode.ts b/extensions/html-language-features/server/src/modes/javascriptMode.ts index 97a9c5877af..8cbbfce39c8 100644 --- a/extensions/html-language-features/server/src/modes/javascriptMode.ts +++ b/extensions/html-language-features/server/src/modes/javascriptMode.ts @@ -12,7 +12,7 @@ import { HTMLDocumentRegions } from './embeddedSupport'; import * as ts from 'typescript'; import { join } from 'path'; -import { FoldingRange, FoldingRangeType } from 'vscode-languageserver-protocol-foldingprovider'; +import { FoldingRange, FoldingRangeKind } from 'vscode-languageserver-protocol-foldingprovider'; const FILE_NAME = 'vscode://javascript/1'; // the same 'file' is used for all contents const JQUERY_D_TS = join(__dirname, '../../lib/jquery.d.ts'); @@ -291,7 +291,7 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache r1.startLine - r2.startLine); assert.deepEqual(actualRanges, expected, message); } -function r(startLine: number, endLine: number, type?: string): ExpectedIndentRange { - return { startLine, endLine, type }; +function r(startLine: number, endLine: number, kind?: string): ExpectedIndentRange { + return { startLine, endLine, kind }; } suite('HTML Folding', () => { @@ -160,7 +160,7 @@ suite('HTML Folding', () => { /*10*/'', ]; assertRanges(input, [r(0, 9), r(1, 8), r(2, 7), r(3, 7, 'region'), r(4, 6, 'region')]); - }); + }); // test('Embedded JavaScript - multi line comment', () => { diff --git a/extensions/html-language-features/server/yarn.lock b/extensions/html-language-features/server/yarn.lock index 1c58a8ba9ff..627e66f8462 100644 --- a/extensions/html-language-features/server/yarn.lock +++ b/extensions/html-language-features/server/yarn.lock @@ -18,9 +18,9 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-css-languageservice@^3.0.9-next.6: - version "3.0.9-next.6" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.6.tgz#4da4d25eabb101713f21e8eb60b6042e504fbd97" +vscode-css-languageservice@^3.0.9-next.7: + version "3.0.9-next.7" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.7.tgz#1eb8deadaa6bfaf55187656ea6fb6b7e8d71cd7f" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" @@ -33,9 +33,9 @@ vscode-emmet-helper@1.2.5: jsonc-parser "^1.0.0" vscode-languageserver-types "^3.6.0-next.1" -vscode-html-languageservice@^2.1.3-next.1: - version "2.1.3-next.1" - resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-2.1.3-next.1.tgz#bf8a36fc87d10b833211ff7adeb142a06fd18c61" +vscode-html-languageservice@^2.1.3-next.2: + version "2.1.3-next.2" + resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-2.1.3-next.2.tgz#911821cada8a237bd6773569851658c733409d65" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" @@ -45,9 +45,9 @@ vscode-jsonrpc@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0.tgz#848d56995d5168950d84feb5d9c237ae5c6a02d4" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" diff --git a/extensions/html-language-features/yarn.lock b/extensions/html-language-features/yarn.lock index 8adc0154a74..4c8da33fb9b 100644 --- a/extensions/html-language-features/yarn.lock +++ b/extensions/html-language-features/yarn.lock @@ -44,9 +44,9 @@ vscode-languageclient@^4.0.0: dependencies: vscode-languageserver-protocol "^3.6.0" -vscode-languageserver-protocol-foldingprovider@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-1.0.1.tgz#85514aaf8fe905e91bf21e4106e0847f60d40f44" +vscode-languageserver-protocol-foldingprovider@^2.0.0-next.2: + version "2.0.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.0-next.2.tgz#fbb9cfdf5b8c4ac451826ba6312f1f88379f35b0" dependencies: vscode-languageserver-protocol "^3.6.0" vscode-languageserver-types "^3.6.0" From 6dd59dc7cdf7661b5fabc42cb053eb7e06877981 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 10:43:33 +0200 Subject: [PATCH 0868/1070] - Add to composite bar when new composite is added - Sequential order for in-built viewlets --- src/vs/workbench/browser/composite.ts | 5 +++++ .../workbench/browser/parts/activitybar/activitybarPart.ts | 4 +++- src/vs/workbench/browser/parts/compositePart.ts | 2 +- src/vs/workbench/browser/parts/compositebar/compositeBar.ts | 6 ++++-- src/vs/workbench/browser/parts/panel/panelPart.ts | 4 +++- .../parts/debug/electron-browser/debug.contribution.ts | 2 +- .../extensions/electron-browser/extensions.contribution.ts | 2 +- .../parts/scm/electron-browser/scm.contribution.ts | 2 +- .../parts/search/electron-browser/search.contribution.ts | 2 +- src/vs/workbench/services/viewlet/browser/viewlet.ts | 1 + src/vs/workbench/services/viewlet/browser/viewletService.ts | 1 + 11 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/browser/composite.ts b/src/vs/workbench/browser/composite.ts index 04e72f4dfa8..545f12395cf 100644 --- a/src/vs/workbench/browser/composite.ts +++ b/src/vs/workbench/browser/composite.ts @@ -242,6 +242,10 @@ export abstract class CompositeDescriptor { } export abstract class CompositeRegistry { + + private readonly _onDidRegister: Emitter> = new Emitter>(); + readonly onDidRegister: Event> = this._onDidRegister.event; + private composites: CompositeDescriptor[]; constructor() { @@ -254,6 +258,7 @@ export abstract class CompositeRegistry { } this.composites.push(descriptor); + this._onDidRegister.fire(descriptor); } public getComposite(id: string): CompositeDescriptor { diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 298b44a0160..0fc2fd42342 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -87,6 +87,8 @@ export class ActivitybarPart extends Part { private registerListeners(): void { + this.toUnbind.push(this.viewletService.onDidViewletRegister(viewletDescriptor => this.compositeBar.addComposite(viewletDescriptor, false))); + // Activate viewlet action on opening of a viewlet this.toUnbind.push(this.viewletService.onDidViewletOpen(viewlet => this.compositeBar.activateComposite(viewlet.getId()))); @@ -95,7 +97,7 @@ export class ActivitybarPart extends Part { this.toUnbind.push(this.compositeBar.onDidContextMenu(e => this.showContextMenu(e))); this.toUnbind.push(this.viewletService.onDidViewletEnablementChange(({ id, enabled }) => { if (enabled) { - this.compositeBar.addComposite(this.viewletService.getViewlet(id)); + this.compositeBar.addComposite(this.viewletService.getViewlet(id), true); } else { this.compositeBar.removeComposite(id); } diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index e9b89555eea..5e919a5668c 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -77,7 +77,7 @@ export abstract class CompositePart extends Part { private keybindingService: IKeybindingService, protected instantiationService: IInstantiationService, themeService: IThemeService, - private registry: CompositeRegistry, + protected readonly registry: CompositeRegistry, private activeCompositeSettingsKey: string, private defaultCompositeId: string, private nameForTelemetry: string, diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 6b6e3cd458d..682931b6b8f 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -80,7 +80,7 @@ export class CompositeBar implements ICompositeBar { return this._onDidContextMenu.event; } - public addComposite(compositeData: { id: string; name: string, order: number }): void { + public addComposite(compositeData: { id: string; name: string, order: number }, pin: boolean): void { if (this.options.composites.filter(c => c.id === compositeData.id).length) { return; } @@ -89,7 +89,9 @@ export class CompositeBar implements ICompositeBar { i++; } this.options.composites.push(compositeData); - this.pin(compositeData.id, true, i); + if (pin) { + this.pin(compositeData.id, true, i); + } } public removeComposite(id: string): void { diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index d2972c69150..747f4c56d68 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -100,6 +100,8 @@ export class PanelPart extends CompositePart implements IPanelService { private registerListeners(): void { + this.toUnbind.push(this.registry.onDidRegister(panelDescriptor => this.compositeBar.addComposite(panelDescriptor, false))); + // Activate panel action on opening of a panel this.toUnbind.push(this.onDidPanelOpen(panel => { this.compositeBar.activateComposite(panel.getId()); @@ -180,7 +182,7 @@ export class PanelPart extends CompositePart implements IPanelService { if (descriptor && descriptor.enabled !== enabled) { descriptor.enabled = enabled; if (enabled) { - this.compositeBar.addComposite(descriptor); + this.compositeBar.addComposite(descriptor, true); } else { this.compositeBar.removeComposite(id); } diff --git a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts index 2b6f3550af8..c3f0e87d3df 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts @@ -86,7 +86,7 @@ Registry.as(ViewletExtensions.Viewlets).registerViewlet(new Vie VIEWLET_ID, nls.localize('debug', "Debug"), 'debug', - 40 + 3 )); const openViewletKb: IKeybindings = { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts index 17911ae1a23..c884bb1d179 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts @@ -120,7 +120,7 @@ const viewletDescriptor = new ViewletDescriptor( VIEWLET_ID, localize('extensions', "Extensions"), 'extensions', - 100 + 4 ); Registry.as(ViewletExtensions.Viewlets) diff --git a/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts b/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts index 9b3b978ffcf..95bc4991d0f 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scm.contribution.ts @@ -39,7 +39,7 @@ const viewletDescriptor = new ViewletDescriptor( VIEWLET_ID, localize('source control', "Source Control"), 'scm', - 36 + 2 ); Registry.as(ViewletExtensions.Viewlets) diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 5b65ba18480..90b31f579d5 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -420,7 +420,7 @@ Registry.as(ViewletExtensions.Viewlets).registerViewlet(new Vie VIEW_ID, nls.localize('name', "Search"), 'search', - 10 + 1 )); Registry.as(PanelExtensions.Panels).registerPanel(new PanelDescriptor( diff --git a/src/vs/workbench/services/viewlet/browser/viewlet.ts b/src/vs/workbench/services/viewlet/browser/viewlet.ts index ba1f9f17a5f..02006a2397a 100644 --- a/src/vs/workbench/services/viewlet/browser/viewlet.ts +++ b/src/vs/workbench/services/viewlet/browser/viewlet.ts @@ -16,6 +16,7 @@ export const IViewletService = createDecorator('viewletService' export interface IViewletService { _serviceBrand: ServiceIdentifier; + onDidViewletRegister: Event; onDidViewletOpen: Event; onDidViewletClose: Event; onDidViewletEnablementChange: Event<{ id: string, enabled: boolean }>; diff --git a/src/vs/workbench/services/viewlet/browser/viewletService.ts b/src/vs/workbench/services/viewlet/browser/viewletService.ts index a54cd61ec89..0a5271c8081 100644 --- a/src/vs/workbench/services/viewlet/browser/viewletService.ts +++ b/src/vs/workbench/services/viewlet/browser/viewletService.ts @@ -33,6 +33,7 @@ export class ViewletService implements IViewletService { private _onDidViewletEnable = new Emitter<{ id: string, enabled: boolean }>(); private disposables: IDisposable[] = []; + public get onDidViewletRegister(): Event { return >this.viewletRegistry.onDidRegister; } public get onDidViewletOpen(): Event { return this.sidebarPart.onDidViewletOpen; } public get onDidViewletClose(): Event { return this.sidebarPart.onDidViewletClose; } public get onDidViewletEnablementChange(): Event<{ id: string, enabled: boolean }> { return this._onDidViewletEnable.event; } From ddbd627a9a4d340d21ab2fed3152d522c5b02d74 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Apr 2018 18:50:05 +0200 Subject: [PATCH 0869/1070] - Store all current composites with pinned state - Retain the composites states - Compute pinned composites from loaded composite states and current composites - Store on shutdown - Parameter in add api to activate the added composite - Pin the added composite at currect location --- .../parts/activitybar/activitybarPart.ts | 5 ++ .../parts/compositebar/compositeBar.ts | 77 +++++++++++++------ .../browser/parts/panel/panelPart.ts | 5 ++ 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 0fc2fd42342..2382e8f9534 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -242,6 +242,11 @@ export class ActivitybarPart extends Part { return sizes; } + public shutdown(): void { + this.compositeBar.shutdown(); + super.shutdown(); + } + public dispose(): void { if (this.compositeBar) { this.compositeBar.dispose(); diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 682931b6b8f..19b667d8ceb 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -34,6 +34,11 @@ export interface ICompositeBarOptions { hidePart: () => TPromise; } +interface CompositeState { + id: string; + pinned: boolean; +} + export class CompositeBar implements ICompositeBar { private readonly _onDidContextMenu: Emitter; @@ -50,6 +55,7 @@ export class CompositeBar implements ICompositeBar { private compositeIdToActivityStack: { [compositeId: string]: ICompositeActivity[]; }; private compositeSizeInBar: Map; + private initialCompositesStates: CompositeState[]; private pinnedComposites: string[]; private activeCompositeId: string; private activeUnpinnedCompositeId: string; @@ -66,31 +72,35 @@ export class CompositeBar implements ICompositeBar { this.compositeSizeInBar = new Map(); this._onDidContextMenu = new Emitter(); - - const pinnedComposites = JSON.parse(this.storageService.get(this.options.storageId, StorageScope.GLOBAL, null)) as string[]; - if (pinnedComposites) { - const compositeIds = this.options.composites.map(c => c.id); - this.pinnedComposites = pinnedComposites.filter(pcid => compositeIds.indexOf(pcid) >= 0); - } else { - this.pinnedComposites = this.options.composites.map(c => c.id); - } + this.initialCompositesStates = this.loadCompositesStates(); + this.pinnedComposites = this.initialCompositesStates + .filter(c => c.pinned) + .map(c => c.id) + .filter(id => this.options.composites.some(c => c.id === id)); } public get onDidContextMenu(): Event { return this._onDidContextMenu.event; } - public addComposite(compositeData: { id: string; name: string, order: number }, pin: boolean): void { + public addComposite(compositeData: { id: string; name: string, order: number }, activate: boolean): void { if (this.options.composites.filter(c => c.id === compositeData.id).length) { return; } - let i = 0; - while (i < this.options.composites.length && this.options.composites[i].order < compositeData.order) { - i++; - } this.options.composites.push(compositeData); - if (pin) { - this.pin(compositeData.id, true, i); + + const compositeState = this.initialCompositesStates.filter(c => c.id === compositeData.id)[0]; + if (!compositeState /* new composites are pinned by default */ || compositeState.pinned) { + let index; + if (compositeState) { + index = this.initialCompositesStates.indexOf(compositeState); + } else { + index = 0; + while (index < this.options.composites.length && this.options.composites[index].order < compositeData.order) { + index++; + } + } + this.pin(compositeData.id, true, index, activate); } } @@ -437,19 +447,20 @@ export class CompositeBar implements ICompositeBar { }); // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); } public isPinned(compositeId: string): boolean { return this.pinnedComposites.indexOf(compositeId) >= 0; } - public pin(compositeId: string, update = true, index = this.pinnedComposites.length): void { + public pin(compositeId: string, update = true, index = this.pinnedComposites.length, activate: boolean = true): void { if (this.isPinned(compositeId)) { return; } - this.options.openComposite(compositeId).then(() => { + const activatePromise = activate ? this.options.openComposite(compositeId) : TPromise.as(null); + activatePromise.then(() => { this.pinnedComposites.splice(index, 0, compositeId); this.pinnedComposites = arrays.distinct(this.pinnedComposites); @@ -458,7 +469,7 @@ export class CompositeBar implements ICompositeBar { } // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); }); } @@ -490,7 +501,7 @@ export class CompositeBar implements ICompositeBar { }, 0); // Persist - this.savePinnedComposites(); + this.saveCompositesStates(); } public layout(dimension: Dimension): void { @@ -514,8 +525,30 @@ export class CompositeBar implements ICompositeBar { this.updateCompositeSwitcher(); } - private savePinnedComposites(): void { - this.storageService.store(this.options.storageId, JSON.stringify(this.pinnedComposites), StorageScope.GLOBAL); + private loadCompositesStates(): CompositeState[] { + const storedStates = >JSON.parse(this.storageService.get(this.options.storageId, StorageScope.GLOBAL, '[]')); + const compositeStates = storedStates.map(c => + typeof c === 'string' /* migration from pinned states to composites states */ ? { id: c, pinned: true } : c); + + const newComposites = this.options.composites.filter(c => compositeStates.every(s => s.id !== c.id)); + newComposites.sort((c1, c2) => c1.order < c2.order ? -1 : 1); + newComposites.forEach(c => compositeStates.push({ id: c.id, pinned: true /* new composites are pinned by default */ })); + + return compositeStates; + } + + private saveCompositesStates(): void { + const toSave = this.pinnedComposites.map(id => ({ id, pinned: true })); + for (const composite of this.options.composites) { + if (this.pinnedComposites.indexOf(composite.id) === -1) { // Unpinned composites + toSave.push({ id: composite.id, pinned: false }); + } + } + this.storageService.store(this.options.storageId, JSON.stringify(toSave), StorageScope.GLOBAL); + } + + public shutdown(): void { + this.saveCompositesStates(); } public dispose(): void { diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index 747f4c56d68..d339b0cfe04 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -243,6 +243,11 @@ export class PanelPart extends CompositePart implements IPanelService { return sizes; } + public shutdown(): void { + this.compositeBar.shutdown(); + super.shutdown(); + } + private layoutCompositeBar(): void { if (this.dimension) { let availableWidth = this.dimension.width - 40; // take padding into account From 43a71a9a58b76ce73869aa60aa98685a4b4275ba Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 17 Apr 2018 10:30:08 -0700 Subject: [PATCH 0870/1070] Merge electron-browser/terminal into node/terminal --- .../electron-browser/terminal.contribution.ts | 2 +- .../terminal/electron-browser/terminal.ts | 53 ------------------- .../electron-browser/terminalService.ts | 2 +- .../workbench/parts/terminal/node/terminal.ts | 49 +++++++++++++++++ 4 files changed, 51 insertions(+), 55 deletions(-) delete mode 100644 src/vs/workbench/parts/terminal/electron-browser/terminal.ts diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index 11667f01d74..d148d55861b 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -14,7 +14,7 @@ import * as platform from 'vs/base/common/platform'; import * as terminalCommands from 'vs/workbench/parts/terminal/common/terminalCommands'; import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { ITerminalService, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_PANEL_ID, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE, TerminalCursorStyle, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_NOT_VISIBLE } from 'vs/workbench/parts/terminal/common/terminal'; -import { getTerminalDefaultShellUnixLike, getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/electron-browser/terminal'; +import { getTerminalDefaultShellUnixLike, getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/node/terminal'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.ts deleted file mode 100644 index e6d1478907d..00000000000 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts +++ /dev/null @@ -1,53 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as os from 'os'; -import * as platform from 'vs/base/common/platform'; -import * as processes from 'vs/base/node/processes'; -import { readFile, fileExists } from 'vs/base/node/pfs'; - -let _TERMINAL_DEFAULT_SHELL_UNIX_LIKE: string = null; -export function getTerminalDefaultShellUnixLike(): string { - if (!_TERMINAL_DEFAULT_SHELL_UNIX_LIKE) { - let unixLikeTerminal = 'sh'; - if (!platform.isWindows && process.env.SHELL) { - unixLikeTerminal = process.env.SHELL; - // Some systems have $SHELL set to /bin/false which breaks the terminal - if (unixLikeTerminal === '/bin/false') { - unixLikeTerminal = '/bin/bash'; - } - } - _TERMINAL_DEFAULT_SHELL_UNIX_LIKE = unixLikeTerminal; - } - return _TERMINAL_DEFAULT_SHELL_UNIX_LIKE; -} - -let _TERMINAL_DEFAULT_SHELL_WINDOWS: string = null; -export function getTerminalDefaultShellWindows(): string { - if (!_TERMINAL_DEFAULT_SHELL_WINDOWS) { - const isAtLeastWindows10 = platform.isWindows && parseFloat(os.release()) >= 10; - const is32ProcessOn64Windows = process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'); - const powerShellPath = `${process.env.windir}\\${is32ProcessOn64Windows ? 'Sysnative' : 'System32'}\\WindowsPowerShell\\v1.0\\powershell.exe`; - _TERMINAL_DEFAULT_SHELL_WINDOWS = isAtLeastWindows10 ? powerShellPath : processes.getWindowsShell(); - } - return _TERMINAL_DEFAULT_SHELL_WINDOWS; -} - -if (platform.isLinux) { - const file = '/etc/os-release'; - fileExists(file).then(exists => { - if (!exists) { - return; - } - readFile(file).then(b => { - const contents = b.toString(); - if (contents.indexOf('NAME=Fedora') >= 0) { - isFedora = true; - } - }); - }); -} - -export let isFedora = false; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index c99a2433259..bb679403d11 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -19,7 +19,7 @@ import { TerminalConfigHelper } from 'vs/workbench/parts/terminal/electron-brows import { TPromise } from 'vs/base/common/winjs.base'; import Severity from 'vs/base/common/severity'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/electron-browser/terminal'; +import { getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/node/terminal'; import { TerminalPanel } from 'vs/workbench/parts/terminal/electron-browser/terminalPanel'; import { TerminalTab } from 'vs/workbench/parts/terminal/browser/terminalTab'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; diff --git a/src/vs/workbench/parts/terminal/node/terminal.ts b/src/vs/workbench/parts/terminal/node/terminal.ts index 2abad57488d..8cb9bc9dddd 100644 --- a/src/vs/workbench/parts/terminal/node/terminal.ts +++ b/src/vs/workbench/parts/terminal/node/terminal.ts @@ -3,6 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as os from 'os'; +import * as platform from 'vs/base/common/platform'; +import * as processes from 'vs/base/node/processes'; +import { readFile, fileExists } from 'vs/base/node/pfs'; + export interface IMessageFromTerminalProcess { type: 'pid' | 'data' | 'title'; content: number | string; @@ -27,3 +32,47 @@ export interface ITerminalChildProcess { on(event: 'exit', listener: (code: number) => void): this; on(event: 'message', listener: (message: IMessageFromTerminalProcess) => void): this; } + +let _TERMINAL_DEFAULT_SHELL_UNIX_LIKE: string = null; +export function getTerminalDefaultShellUnixLike(): string { + if (!_TERMINAL_DEFAULT_SHELL_UNIX_LIKE) { + let unixLikeTerminal = 'sh'; + if (!platform.isWindows && process.env.SHELL) { + unixLikeTerminal = process.env.SHELL; + // Some systems have $SHELL set to /bin/false which breaks the terminal + if (unixLikeTerminal === '/bin/false') { + unixLikeTerminal = '/bin/bash'; + } + } + _TERMINAL_DEFAULT_SHELL_UNIX_LIKE = unixLikeTerminal; + } + return _TERMINAL_DEFAULT_SHELL_UNIX_LIKE; +} + +let _TERMINAL_DEFAULT_SHELL_WINDOWS: string = null; +export function getTerminalDefaultShellWindows(): string { + if (!_TERMINAL_DEFAULT_SHELL_WINDOWS) { + const isAtLeastWindows10 = platform.isWindows && parseFloat(os.release()) >= 10; + const is32ProcessOn64Windows = process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'); + const powerShellPath = `${process.env.windir}\\${is32ProcessOn64Windows ? 'Sysnative' : 'System32'}\\WindowsPowerShell\\v1.0\\powershell.exe`; + _TERMINAL_DEFAULT_SHELL_WINDOWS = isAtLeastWindows10 ? powerShellPath : processes.getWindowsShell(); + } + return _TERMINAL_DEFAULT_SHELL_WINDOWS; +} + +if (platform.isLinux) { + const file = '/etc/os-release'; + fileExists(file).then(exists => { + if (!exists) { + return; + } + readFile(file).then(b => { + const contents = b.toString(); + if (contents.indexOf('NAME=Fedora') >= 0) { + isFedora = true; + } + }); + }); +} + +export let isFedora = false; \ No newline at end of file From ea680fae1cdf0ef7cd710f387afe69d479ac54c5 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 16 Apr 2018 16:48:15 -0700 Subject: [PATCH 0871/1070] Update to use more consistent WebviewPanel naming --- .../api/electron-browser/mainThreadWebview.ts | 40 +++++++++---------- src/vs/workbench/api/node/extHost.protocol.ts | 24 +++++------ src/vs/workbench/api/node/extHostWebview.ts | 30 +++++++------- .../api/extHostWebview.test.ts | 4 +- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 1b8051b42c0..f0ef3aef85c 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -11,7 +11,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { Position } from 'vs/platform/editor/common/editor'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { ExtHostContext, ExtHostWebviewsShape, IExtHostContext, MainContext, MainThreadWebviewsShape, WebviewHandle } from 'vs/workbench/api/node/extHost.protocol'; +import { ExtHostContext, ExtHostWebviewsShape, IExtHostContext, MainContext, MainThreadWebviewsShape, WebviewPanelHandle } from 'vs/workbench/api/node/extHost.protocol'; import { WebviewEditor } from 'vs/workbench/parts/webview/electron-browser/webviewEditor'; import { WebviewEditorInput } from 'vs/workbench/parts/webview/electron-browser/webviewEditorInput'; import { IWebviewEditorService, WebviewInputOptions, WebviewReviver } from 'vs/workbench/parts/webview/electron-browser/webviewEditorService'; @@ -34,10 +34,10 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv private _toDispose: IDisposable[] = []; private readonly _proxy: ExtHostWebviewsShape; - private readonly _webviews = new Map(); + private readonly _webviews = new Map(); private readonly _revivers = new Set(); - private _activeWebview: WebviewHandle | undefined = undefined; + private _activeWebview: WebviewPanelHandle | undefined = undefined; constructor( context: IExtHostContext, @@ -63,8 +63,8 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._toDispose = dispose(this._toDispose); } - $createWebview( - handle: WebviewHandle, + $createWebviewPanel( + handle: WebviewPanelHandle, viewType: string, title: string, column: Position, @@ -80,27 +80,27 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._webviews.set(handle, webview); } - $disposeWebview(handle: WebviewHandle): void { + $disposeWebview(handle: WebviewPanelHandle): void { const webview = this.getWebview(handle); webview.dispose(); } - $setTitle(handle: WebviewHandle, value: string): void { + $setTitle(handle: WebviewPanelHandle, value: string): void { const webview = this.getWebview(handle); webview.setName(value); } - $setHtml(handle: WebviewHandle, value: string): void { + $setHtml(handle: WebviewPanelHandle, value: string): void { const webview = this.getWebview(handle); webview.html = value; } - $reveal(handle: WebviewHandle, column: Position): void { + $reveal(handle: WebviewPanelHandle, column: Position): void { const webview = this.getWebview(handle); this._webviewService.revealWebview(webview, column); } - async $sendMessage(handle: WebviewHandle, message: any): TPromise { + async $sendMessage(handle: WebviewPanelHandle, message: any): TPromise { const webview = this.getWebview(handle); const editors = this._editorService.getVisibleEditors() .filter(e => e instanceof WebviewEditor) @@ -129,7 +129,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._webviews.set(handle, webview); webview._events = this.createWebviewEventDelegate(handle); - return this._proxy.$deserializeWebview(handle, webview.state.viewType, webview.getTitle(), webview.state.state, webview.position, webview.options) + return this._proxy.$deserializeWebviewPanel(handle, webview.state.viewType, webview.getTitle(), webview.state.state, webview.position, webview.options) .then(undefined, () => { webview.html = MainThreadWebviews.getDeserializationFailedContents(viewType); }); @@ -141,7 +141,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv } private _onWillShutdown(): TPromise { - const toRevive: WebviewHandle[] = []; + const toRevive: WebviewPanelHandle[] = []; this._webviews.forEach((view, key) => { if (this.canRevive(view)) { toRevive.push(key); @@ -150,7 +150,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv const reviveResponses = toRevive.map(handle => TPromise.any([ - this._proxy.$serializeWebview(handle).then( + this._proxy.$serializeWebviewPanel(handle).then( state => ({ handle, state }), () => ({ handle, state: null })), TPromise.timeout(MainThreadWebviews.serializeTimeout).then(() => ({ handle, state: null })) @@ -171,19 +171,19 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv }); } - private createWebviewEventDelegate(handle: WebviewHandle) { + private createWebviewEventDelegate(handle: WebviewPanelHandle) { return { onDidClickLink: uri => this.onDidClickLink(handle, uri), onMessage: message => this._proxy.$onMessage(handle, message), onDispose: () => { - this._proxy.$onDidDisposeWebview(handle).then(() => { + this._proxy.onDidDisposeWebviewPanel(handle).then(() => { this._webviews.delete(handle); }); } }; } - private getWebview(handle: WebviewHandle): WebviewEditorInput { + private getWebview(handle: WebviewPanelHandle): WebviewEditorInput { const webview = this._webviews.get(handle); if (!webview) { throw new Error('Unknown webview handle:' + handle); @@ -193,7 +193,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv private onEditorsChanged() { const activeEditor = this._editorService.getActiveEditor(); - let newActiveWebview: { input: WebviewEditorInput, handle: WebviewHandle } | undefined = undefined; + let newActiveWebview: { input: WebviewEditorInput, handle: WebviewPanelHandle } | undefined = undefined; if (activeEditor && activeEditor.input instanceof WebviewEditorInput) { for (const handle of map.keys(this._webviews)) { const input = this._webviews.get(handle); @@ -213,20 +213,20 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv if (typeof this._activeWebview !== 'undefined') { const oldActiveWebview = this._webviews.get(this._activeWebview); if (oldActiveWebview) { - this._proxy.$onDidChangeWebviewViewState(this._activeWebview, false, oldActiveWebview.position); + this._proxy.$onDidChangeWebviewPanelViewState(this._activeWebview, false, oldActiveWebview.position); } } // Then for newly active if (newActiveWebview) { - this._proxy.$onDidChangeWebviewViewState(newActiveWebview.handle, true, activeEditor.position); + this._proxy.$onDidChangeWebviewPanelViewState(newActiveWebview.handle, true, activeEditor.position); this._activeWebview = newActiveWebview.handle; } else { this._activeWebview = undefined; } } - private onDidClickLink(handle: WebviewHandle, link: URI): void { + private onDidClickLink(handle: WebviewPanelHandle, link: URI): void { if (!link) { return; } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 49e3cdb0b56..3f5c9595b49 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -347,26 +347,26 @@ export interface MainThreadTelemetryShape extends IDisposable { $publicLog(eventName: string, data?: any): void; } -export type WebviewHandle = string; +export type WebviewPanelHandle = string; export interface MainThreadWebviewsShape extends IDisposable { - $createWebview(handle: WebviewHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionFolderPath: string): void; - $disposeWebview(handle: WebviewHandle): void; - $reveal(handle: WebviewHandle, column: EditorPosition): void; - $setTitle(handle: WebviewHandle, value: string): void; - $setHtml(handle: WebviewHandle, value: string): void; - $sendMessage(handle: WebviewHandle, value: any): Thenable; + $createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionFolderPath: string): void; + $disposeWebview(handle: WebviewPanelHandle): void; + $reveal(handle: WebviewPanelHandle, column: EditorPosition): void; + $setTitle(handle: WebviewPanelHandle, value: string): void; + $setHtml(handle: WebviewPanelHandle, value: string): void; + $sendMessage(handle: WebviewPanelHandle, value: any): Thenable; $registerSerializer(viewType: string): void; $unregisterSerializer(viewType: string): void; } export interface ExtHostWebviewsShape { - $onMessage(handle: WebviewHandle, message: any): void; - $onDidChangeWebviewViewState(handle: WebviewHandle, active: boolean, position: EditorPosition): void; - $onDidDisposeWebview(handle: WebviewHandle): Thenable; - $deserializeWebview(newWebviewHandle: WebviewHandle, viewType: string, title: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable; - $serializeWebview(webviewHandle: WebviewHandle): Thenable; + $onMessage(handle: WebviewPanelHandle, message: any): void; + $onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, active: boolean, position: EditorPosition): void; + onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable; + $deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable; + $serializeWebviewPanel(webviewHandle: WebviewPanelHandle): Thenable; } export interface MainThreadWorkspaceShape extends IDisposable { diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index 44bb275e364..45afdf5d503 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { MainContext, MainThreadWebviewsShape, IMainContext, ExtHostWebviewsShape, WebviewHandle } from './extHost.protocol'; +import { MainContext, MainThreadWebviewsShape, IMainContext, ExtHostWebviewsShape, WebviewPanelHandle } from './extHost.protocol'; import * as vscode from 'vscode'; import { Event, Emitter } from 'vs/base/common/event'; import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters'; @@ -12,7 +12,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { Disposable } from './extHostTypes'; export class ExtHostWebview implements vscode.Webview { - private readonly _handle: WebviewHandle; + private readonly _handle: WebviewPanelHandle; private readonly _proxy: MainThreadWebviewsShape; private _title: string; private _html: string; @@ -26,7 +26,7 @@ export class ExtHostWebview implements vscode.Webview { public readonly onDidChangeViewState: Event = this.onDidChangeViewStateEmitter.event; constructor( - handle: WebviewHandle, + handle: WebviewPanelHandle, proxy: MainThreadWebviewsShape, title: string, options: vscode.WebviewOptions @@ -91,7 +91,7 @@ export class ExtHostWebview implements vscode.Webview { export class ExtHostWebviewPanel implements vscode.WebviewPanel { - private readonly _handle: WebviewHandle; + private readonly _handle: WebviewPanelHandle; private readonly _viewType: string; private readonly _options: vscode.WebviewPanelOptions; private readonly _proxy: MainThreadWebviewsShape; @@ -108,7 +108,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { private _webview: ExtHostWebview; constructor( - handle: WebviewHandle, + handle: WebviewPanelHandle, proxy: MainThreadWebviewsShape, viewType: string, title: string, @@ -194,7 +194,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { private readonly _proxy: MainThreadWebviewsShape; - private readonly _webviewPanels = new Map(); + private readonly _webviewPanels = new Map(); private readonly _serializers = new Map(); constructor( @@ -211,7 +211,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { extensionFolderPath: string ): vscode.WebviewPanel { const handle = ExtHostWebviews.webviewHandlePool++ + ''; - this._proxy.$createWebview(handle, viewType, title, typeConverters.fromViewColumn(viewColumn), options, extensionFolderPath); + this._proxy.$createWebviewPanel(handle, viewType, title, typeConverters.fromViewColumn(viewColumn), options, extensionFolderPath); const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, title, viewColumn, options, options); this._webviewPanels.set(handle, panel); @@ -235,14 +235,14 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { }); } - $onMessage(handle: WebviewHandle, message: any): void { + $onMessage(handle: WebviewPanelHandle, message: any): void { const panel = this.getWebviewPanel(handle); if (panel) { panel.webview.onMessageEmitter.fire(message); } } - $onDidChangeWebviewViewState(handle: WebviewHandle, visible: boolean, position: Position): void { + $onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, visible: boolean, position: Position): void { const panel = this.getWebviewPanel(handle); if (panel) { const viewColumn = typeConverters.toViewColumn(position); @@ -254,7 +254,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { } } - $onDidDisposeWebview(handle: WebviewHandle): Thenable { + onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable { const panel = this.getWebviewPanel(handle); if (panel) { panel.dispose(); @@ -263,8 +263,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return TPromise.as(void 0); } - $deserializeWebview( - webviewHandle: WebviewHandle, + $deserializeWebviewPanel( + webviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, @@ -281,8 +281,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return serializer.deserializeWebviewPanel(revivedPanel, state); } - $serializeWebview( - webviewHandle: WebviewHandle + $serializeWebviewPanel( + webviewHandle: WebviewPanelHandle ): Thenable { const panel = this.getWebviewPanel(webviewHandle); if (!panel) { @@ -297,7 +297,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return serialzer.serializeWebviewPanel(panel); } - private getWebviewPanel(handle: WebviewHandle): ExtHostWebviewPanel | undefined { + private getWebviewPanel(handle: WebviewPanelHandle): ExtHostWebviewPanel | undefined { return this._webviewPanels.get(handle); } } \ No newline at end of file diff --git a/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts b/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts index f832179348d..0c600626db4 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostWebview.test.ts @@ -36,7 +36,7 @@ suite('ExtHostWebview', function () { const serializerARegistration = extHostWebviews.registerWebviewPanelSerializer(viewType, serializerA); - await extHostWebviews.$deserializeWebview('x', viewType, 'title', {}, EditorPosition.ONE, {}); + await extHostWebviews.$deserializeWebviewPanel('x', viewType, 'title', {}, EditorPosition.ONE, {}); assert.strictEqual(lastInvokedDeserializer, serializerA); assert.throws( @@ -47,7 +47,7 @@ suite('ExtHostWebview', function () { extHostWebviews.registerWebviewPanelSerializer(viewType, serializerB); - await extHostWebviews.$deserializeWebview('x', viewType, 'title', {}, EditorPosition.ONE, {}); + await extHostWebviews.$deserializeWebviewPanel('x', viewType, 'title', {}, EditorPosition.ONE, {}); assert.strictEqual(lastInvokedDeserializer, serializerB); }); }); From f2a2f394c73b4560a59e7fbe7e9f7760795fd3bc Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 10:03:33 -0700 Subject: [PATCH 0872/1070] Unregister webview reviver on dispose Part of #48065 --- src/vs/workbench/api/electron-browser/mainThreadWebview.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index f0ef3aef85c..b3bff528318 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -53,10 +53,11 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._proxy = context.getProxy(ExtHostContext.ExtHostWebviews); editorGroupService.onEditorsChanged(this.onEditorsChanged, this, this._toDispose); - _webviewService.registerReviver(MainThreadWebviews.viewType, this); - this._toDispose.push(lifecycleService.onWillShutdown(e => { + this._toDispose.push(_webviewService.registerReviver(MainThreadWebviews.viewType, this)); + + lifecycleService.onWillShutdown(e => { e.veto(this._onWillShutdown()); - })); + }, this, this._toDispose); } dispose(): void { From 4323d933cae64168406033f9c29a2534b19be076 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 17 Apr 2018 10:53:28 -0700 Subject: [PATCH 0873/1070] Make service responsible for attaching the process proxy --- .../parts/terminal/common/terminal.ts | 9 ++++++ .../parts/terminal/common/terminalService.ts | 3 +- .../electron-browser/terminalConfigHelper.ts | 2 +- .../electron-browser/terminalInstance.ts | 1 - .../terminalProcessManager.ts | 6 ++-- .../electron-browser/terminalService.ts | 15 +++++++++- ...idge.ts => terminalProcessExtHostProxy.ts} | 28 ++++++++----------- .../terminalConfigHelper.test.ts | 2 +- 8 files changed, 43 insertions(+), 23 deletions(-) rename src/vs/workbench/parts/terminal/node/{terminalProcessExtHostBridge.ts => terminalProcessExtHostProxy.ts} (54%) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index ef1de21977d..d4934907a46 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -206,6 +206,8 @@ export interface ITerminalService { setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; selectDefaultWindowsShell(): TPromise; setWorkspaceShellAllowed(isAllowed: boolean): void; + + requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise; } export const enum Direction { @@ -519,3 +521,10 @@ export enum ProcessState { // was run. KILLED_BY_PROCESS } + + +export interface ITerminalProcessExtHostProxy { + emitData(data: string): void; + emitTitle(title: string): void; + emitPid(pid: number): void; +} \ No newline at end of file diff --git a/src/vs/workbench/parts/terminal/common/terminalService.ts b/src/vs/workbench/parts/terminal/common/terminalService.ts index 08ff3e7ddea..2ec8be7c6bb 100644 --- a/src/vs/workbench/parts/terminal/common/terminalService.ts +++ b/src/vs/workbench/parts/terminal/common/terminalService.ts @@ -9,7 +9,7 @@ import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/c import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE, TERMINAL_PANEL_ID, ITerminalTab } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE, TERMINAL_PANEL_ID, ITerminalTab, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; @@ -75,6 +75,7 @@ export abstract class TerminalService implements ITerminalService { public abstract getActiveOrCreateInstance(wasNewTerminalAction?: boolean): ITerminalInstance; public abstract selectDefaultWindowsShell(): TPromise; public abstract setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; + public abstract requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise; private _restoreTabs(): void { if (!this.configHelper.config.experimentalRestore) { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts index 243f7094819..a8e3f9ecbae 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts @@ -12,7 +12,7 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, TERMINAL_CONFIG_SECTION } from 'vs/workbench/parts/terminal/common/terminal'; import Severity from 'vs/base/common/severity'; -import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal'; +import { isFedora } from 'vs/workbench/parts/terminal/node/terminal'; import { Terminal as XTermTerminal } from 'vscode-xterm'; import { INotificationService } from 'vs/platform/notification/common/notification'; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 245ab95e82f..37f4a216882 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -110,7 +110,6 @@ export class TerminalInstance implements ITerminalInstance { @ILogService private _logService: ILogService ) { this._shellLaunchConfig.extensionHostOwned = true; - this._shellLaunchConfig.name = 'Test terminal renderer'; this._disposables = []; this._skipTerminalCommands = []; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index 88defa05bbb..9d3c4ba3a4c 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -17,7 +17,8 @@ import { IConfigurationResolverService } from 'vs/workbench/services/configurati import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; import { ITerminalChildProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; -import { TerminalProcessExtHostBridge } from 'vs/workbench/parts/terminal/node/terminalProcessExtHostBridge'; +import { TerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/node/terminalProcessExtHostProxy'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; /** The amount of time to consider terminal errors to be related to the launch */ const LAUNCHING_DURATION = 500; @@ -54,6 +55,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { @IWorkspaceContextService private readonly _workspaceContextService: IWorkspaceContextService, @IHistoryService private readonly _historyService: IHistoryService, @IConfigurationResolverService private readonly _configurationResolverService: IConfigurationResolverService, + @IInstantiationService private readonly _instantiationService: IInstantiationService, @ILogService private _logService: ILogService ) { } @@ -115,7 +117,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { const options = { env, cwd }; this._logService.debug(`Terminal process launching`, options); if (shellLaunchConfig.extensionHostOwned) { - this._process = new TerminalProcessExtHostBridge(); + this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy); } else { this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index bb679403d11..470d17dcb0d 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -13,7 +13,7 @@ import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { IQuickOpenService, IPickOpenEntry, IPickOptions } from 'vs/platform/quickOpen/common/quickOpen'; -import { ITerminalInstance, ITerminalService, IShellLaunchConfig, ITerminalConfigHelper, NEVER_SUGGEST_SELECT_WINDOWS_SHELL_STORAGE_KEY, TERMINAL_PANEL_ID } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalInstance, ITerminalService, IShellLaunchConfig, ITerminalConfigHelper, NEVER_SUGGEST_SELECT_WINDOWS_SHELL_STORAGE_KEY, TERMINAL_PANEL_ID, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; import { TerminalService as AbstractTerminalService } from 'vs/workbench/parts/terminal/common/terminalService'; import { TerminalConfigHelper } from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -93,6 +93,19 @@ export class TerminalService extends AbstractTerminalService implements ITermina return this._instantiationService.createInstance(TerminalInstance, terminalFocusContextKey, configHelper, undefined, shellLaunchConfig, true); } + public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise { + let i = 0; + setTimeout(() => { + proxy.emitPid(-1); + proxy.emitTitle('test title'); + proxy.emitData(`test ${i++}\r\n`); + }, 0); + setInterval(() => { + proxy.emitData(`test ${i++}\r\n`); + }, 1000); + return TPromise.as(void 0); + } + public focusFindWidget(): TPromise { return this.showPanel(false).then(() => { let panel = this._panelService.getActivePanel() as TerminalPanel; diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts similarity index 54% rename from src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts rename to src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index 9b3107576b4..271e8b0c543 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostBridge.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -5,32 +5,28 @@ import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; +import { ITerminalService, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; -export class TerminalProcessExtHostBridge extends EventEmitter implements ITerminalChildProcess { +export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { public connected: boolean; - constructor() { + constructor( + @ITerminalService private _terminalService: ITerminalService + ) { super(); - let i = 0; - setTimeout(() => { - this._emitPid(-1); - this._emitTitle('test title'); - this._emitData(`test ${i++}\r\n`); - }, 0); - setInterval(() => { - this._emitData(`test ${i++}\r\n`); - }, 1000); + this._terminalService.requestExtHostProcess(this).then(() => { + }); } - private _emitData(data: string): void { + public emitData(data: string): void { this.emit('message', { type: 'data', content: data } as IMessageFromTerminalProcess); } - private _emitTitle(title: string): void { - this.emit('message', { type: 'data', content: title } as IMessageFromTerminalProcess); + public emitTitle(title: string): void { + this.emit('message', { type: 'title', content: title } as IMessageFromTerminalProcess); } - private _emitPid(pid: number): void { - this.emit('message', { type: 'data', content: pid } as IMessageFromTerminalProcess); + public emitPid(pid: number): void { + this.emit('message', { type: 'pid', content: pid } as IMessageFromTerminalProcess); } public send(message: IMessageToTerminalProcess): boolean { diff --git a/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts b/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts index 4a37a7ae84c..cc4cec690c4 100644 --- a/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts +++ b/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts @@ -6,7 +6,7 @@ import * as assert from 'assert'; import { TerminalConfigHelper } from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper'; import { EDITOR_FONT_DEFAULTS } from 'vs/editor/common/config/editorOptions'; -import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal'; +import { isFedora } from 'vs/workbench/parts/terminal/node/terminal'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; suite('Workbench - TerminalConfigHelper', () => { From dc3e3e38f792d340d2e6276645321923d4c6196e Mon Sep 17 00:00:00 2001 From: kieferrm Date: Tue, 17 Apr 2018 10:59:58 -0700 Subject: [PATCH 0874/1070] account for substituations made by the pipeline --- src/vs/workbench/electron-browser/shell.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index 509bd9406d4..5692c84329a 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -324,7 +324,7 @@ export class WorkbenchShell { perf.mark('didStatLocalStorage'); /* __GDPR__ - "localStorageTimers4" : { + "localStorageTimers" : { "statTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "accessTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "firstReadTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, From 2c1e126cfc891ba84e85951258cdd8c5586abdcc Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Tue, 17 Apr 2018 11:13:14 -0700 Subject: [PATCH 0875/1070] fix microsoft/monaco-editor#817. --- src/vs/editor/contrib/find/findController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/find/findController.ts b/src/vs/editor/contrib/find/findController.ts index 1b01a612ecf..1150a26fac9 100644 --- a/src/vs/editor/contrib/find/findController.ts +++ b/src/vs/editor/contrib/find/findController.ts @@ -446,8 +446,8 @@ export class StartFindWithSelectionAction extends EditorAction { constructor() { super({ id: FIND_IDS.StartFindWithSelection, - label: nls.localize('startFindAction', "Find"), - alias: 'Find', + label: nls.localize('startFindWithSelectionAction', "Find With Selection"), + alias: 'Find With Selection', precondition: null, kbOpts: { kbExpr: null, From e6ff6be9087236ad6cf7dd8e454b8f131f4ab370 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 11:22:00 -0700 Subject: [PATCH 0876/1070] Fix focus tracker sometimes not being created properly for webview Editors Fixes #46974 --- .../webview/electron-browser/webviewEditor.ts | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index e7debe873e0..6ff804fc51d 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -185,17 +185,15 @@ export class WebviewEditor extends BaseWebviewEditor { } this.webviewContent = input.container; + + this.trackFocus(); + const existing = input.webview; if (existing) { this._webview = existing; return existing; } - this._webviewFocusTracker = DOM.trackFocus(this.webviewContent); - this._webviewFocusListenerDisposable = this._webviewFocusTracker.onDidFocus(() => { - this._onDidFocusWebview.fire(); - }); - if (input.options.enableFindWidget) { this._contextKeyService = this._contextKeyService.createScoped(this.webviewContent); this.contextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS.bindTo(this._contextKeyService); @@ -226,5 +224,19 @@ export class WebviewEditor extends BaseWebviewEditor { this.doUpdateContainer(); return this._webview; } + + private trackFocus() { + if (this._webviewFocusTracker) { + this._webviewFocusTracker.dispose(); + } + if (this._webviewFocusListenerDisposable) { + this._webviewFocusListenerDisposable.dispose(); + } + + this._webviewFocusTracker = DOM.trackFocus(this.webviewContent); + this._webviewFocusListenerDisposable = this._webviewFocusTracker.onDidFocus(() => { + this._onDidFocusWebview.fire(); + }); + } } From e40581af0d4cd2b19f0ec30aaf6a9e47505ab428 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 21:36:43 +0200 Subject: [PATCH 0877/1070] Fixes #37658 --- src/vs/editor/browser/controller/textAreaHandler.ts | 2 +- src/vs/editor/browser/viewParts/margin/margin.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/controller/textAreaHandler.ts b/src/vs/editor/browser/controller/textAreaHandler.ts index c8cfc5590e1..098af888c20 100644 --- a/src/vs/editor/browser/controller/textAreaHandler.ts +++ b/src/vs/editor/browser/controller/textAreaHandler.ts @@ -542,7 +542,7 @@ export class TextAreaHandler extends ViewPart { tac.setHeight(1); if (this._context.configuration.editor.viewInfo.glyphMargin) { - tac.setClassName('monaco-editor-background textAreaCover ' + Margin.CLASS_NAME); + tac.setClassName('monaco-editor-background textAreaCover ' + Margin.OUTER_CLASS_NAME); } else { if (this._context.configuration.editor.viewInfo.renderLineNumbers !== RenderLineNumbersType.Off) { tac.setClassName('monaco-editor-background textAreaCover ' + LineNumbersOverlay.CLASS_NAME); diff --git a/src/vs/editor/browser/viewParts/margin/margin.ts b/src/vs/editor/browser/viewParts/margin/margin.ts index 40efb4b4ef7..63a228dea04 100644 --- a/src/vs/editor/browser/viewParts/margin/margin.ts +++ b/src/vs/editor/browser/viewParts/margin/margin.ts @@ -14,6 +14,7 @@ import * as viewEvents from 'vs/editor/common/view/viewEvents'; export class Margin extends ViewPart { public static readonly CLASS_NAME = 'glyph-margin'; + public static readonly OUTER_CLASS_NAME = 'margin'; private _domNode: FastDomNode; private _canUseLayerHinting: boolean; @@ -42,7 +43,7 @@ export class Margin extends ViewPart { private _createDomNode(): FastDomNode { let domNode = createFastDomNode(document.createElement('div')); - domNode.setClassName('margin'); + domNode.setClassName(Margin.OUTER_CLASS_NAME); domNode.setPosition('absolute'); domNode.setAttribute('role', 'presentation'); domNode.setAttribute('aria-hidden', 'true'); From 25462545569e74d8e8c2ba9b018263365facc344 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 17 Apr 2018 12:40:17 -0700 Subject: [PATCH 0878/1070] Anonymize paths only from error telemetry else data like mimetypes get anonymized --- .../telemetry/browser/errorTelemetry.ts | 2 +- src/vs/platform/telemetry/common/telemetry.ts | 2 +- .../telemetry/common/telemetryService.ts | 46 ++++++++++--------- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/vs/platform/telemetry/browser/errorTelemetry.ts b/src/vs/platform/telemetry/browser/errorTelemetry.ts index 3bab84d8bf7..ec06e2c07ee 100644 --- a/src/vs/platform/telemetry/browser/errorTelemetry.ts +++ b/src/vs/platform/telemetry/browser/errorTelemetry.ts @@ -166,7 +166,7 @@ export default class ErrorTelemetry { "${include}": [ "${ErrorEvent}" ] } */ - this._telemetryService.publicLog('UnhandledError', error); + this._telemetryService.publicLog('UnhandledError', error, true); } this._buffer.length = 0; } diff --git a/src/vs/platform/telemetry/common/telemetry.ts b/src/vs/platform/telemetry/common/telemetry.ts index ebfc8144e6e..41a1987e9c9 100644 --- a/src/vs/platform/telemetry/common/telemetry.ts +++ b/src/vs/platform/telemetry/common/telemetry.ts @@ -29,7 +29,7 @@ export interface ITelemetryService { * Sends a telemetry event that has been privacy approved. * Do not call this unless you have been given approval. */ - publicLog(eventName: string, data?: ITelemetryData): TPromise; + publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): TPromise; getTelemetryInfo(): TPromise; diff --git a/src/vs/platform/telemetry/common/telemetryService.ts b/src/vs/platform/telemetry/common/telemetryService.ts index 992f3e36a96..dba27cde4b1 100644 --- a/src/vs/platform/telemetry/common/telemetryService.ts +++ b/src/vs/platform/telemetry/common/telemetryService.ts @@ -91,7 +91,7 @@ export class TelemetryService implements ITelemetryService { this._disposables = dispose(this._disposables); } - publicLog(eventName: string, data?: ITelemetryData): TPromise { + publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): TPromise { // don't send events when the user is optout if (!this._userOptIn) { return TPromise.as(undefined); @@ -105,7 +105,7 @@ export class TelemetryService implements ITelemetryService { // (last) remove all PII from data data = cloneAndChange(data, value => { if (typeof value === 'string') { - return this._cleanupInfo(value); + return this._cleanupInfo(value, anonymizeFilePaths); } return undefined; }); @@ -118,29 +118,33 @@ export class TelemetryService implements ITelemetryService { }); } - private _cleanupInfo(stack: string): string { - const cleanUpIndexes: [number, number][] = []; - for (let regexp of this._cleanupPatterns) { + private _cleanupInfo(stack: string, anonymizeFilePaths?: boolean): string { + let updatedStack = stack; + + if (anonymizeFilePaths) { + const cleanUpIndexes: [number, number][] = []; + for (let regexp of this._cleanupPatterns) { + while (true) { + const result = regexp.exec(stack); + if (!result) { + break; + } + cleanUpIndexes.push([result.index, regexp.lastIndex]); + } + } + + const nodeModulesRegex = /^[\\\/]?(node_modules|node_modules\.asar)[\\\/]/; + const fileRegex = /(file:\/\/)?([a-zA-Z]:(\\\\|\\|\/)|(\\\\|\\|\/))?([\w-\._]+(\\\\|\\|\/))+[\w-\._]*/g; + while (true) { - const result = regexp.exec(stack); + const result = fileRegex.exec(stack); if (!result) { break; } - cleanUpIndexes.push([result.index, regexp.lastIndex]); - } - } - - const nodeModulesRegex = /^[\\\/]?(node_modules|node_modules\.asar)[\\\/]/; - const fileRegex = /(file:\/\/)?([a-zA-Z]:(\\\\|\\|\/)|(\\\\|\\|\/))?([\w-\._]+(\\\\|\\|\/))+[\w-\._]*/g; - let updatedStack = stack; - while (true) { - const result = fileRegex.exec(stack); - if (!result) { - break; - } - // Anoynimize user file paths that do not need to be retained or cleaned up. - if (!nodeModulesRegex.test(result[0]) && cleanUpIndexes.every(([x, y]) => result.index < x || result.index >= y)) { - updatedStack = updatedStack.slice(0, result.index) + result[0].replace(/./g, 'a') + updatedStack.slice(fileRegex.lastIndex); + // Anoynimize user file paths that do not need to be retained or cleaned up. + if (!nodeModulesRegex.test(result[0]) && cleanUpIndexes.every(([x, y]) => result.index < x || result.index >= y)) { + updatedStack = updatedStack.slice(0, result.index) + result[0].replace(/./g, 'a') + updatedStack.slice(fileRegex.lastIndex); + } } } From a811707825e9a67e61ff1bd82bfdfa7e55d958db Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 22:16:26 +0200 Subject: [PATCH 0879/1070] Fixes #48046: Skip over a word made up of one single separator and followed by a regular character --- .../common/controller/cursorWordOperations.ts | 6 ++++++ .../wordOperations/test/wordOperations.test.ts | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/common/controller/cursorWordOperations.ts b/src/vs/editor/common/controller/cursorWordOperations.ts index e14d715fbbf..8bd73b791f0 100644 --- a/src/vs/editor/common/controller/cursorWordOperations.ts +++ b/src/vs/editor/common/controller/cursorWordOperations.ts @@ -171,6 +171,12 @@ export class WordOperations { let prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, column)); if (wordNavigationType === WordNavigationType.WordStart) { + if (prevWordOnLine && prevWordOnLine.wordType === WordType.Separator) { + if (prevWordOnLine.end - prevWordOnLine.start === 1 && prevWordOnLine.nextCharClass === WordCharacterClass.Regular) { + // Skip over a word made up of one single separator and followed by a regular character + prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, prevWordOnLine.start + 1)); + } + } if (prevWordOnLine) { column = prevWordOnLine.start + 1; } else { diff --git a/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts b/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts index c643d6efda2..bd34ee01bda 100644 --- a/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts +++ b/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts @@ -141,7 +141,6 @@ suite('WordOperations', () => { moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-3 + '.length + 1, '002'); moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-3 '.length + 1, '003'); moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-'.length + 1, '004'); - moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5'.length + 1, '005'); moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +'.length + 1, '006'); moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 '.length + 1, '007'); moveWordLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= '.length + 1, '008'); @@ -165,7 +164,6 @@ suite('WordOperations', () => { moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-3 + '.length + 1, '002'); moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-3 '.length + 1, '003'); moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5-'.length + 1, '004'); - moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +5'.length + 1, '005'); moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 +'.length + 1, '006'); moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= 3 '.length + 1, '007'); moveWordStartLeft(editor); assert.equal(editor.getPosition().column, ' /* Just some more text a+= '.length + 1, '008'); @@ -290,6 +288,18 @@ suite('WordOperations', () => { }); }); + test('issue #48046: Word selection doesn\'t work as usual', () => { + withTestCodeEditor([ + 'deep.object.property' + ], {}, (editor, _) => { + editor.setPosition(new Position(1, 21)); + + moveWordLeft(editor); assert.equal(editor.getPosition().column, 'deep.object.'.length + 1, '001'); + moveWordLeft(editor); assert.equal(editor.getPosition().column, 'deep.'.length + 1, '002'); + moveWordLeft(editor); assert.equal(editor.getPosition().column, ''.length + 1, '003'); + }); + }); + test('moveWordEndRight', () => { withTestCodeEditor([ ' /* Just some more text a+= 3 +5-3 + 7 */ ' From 4bb888d71968e43e53480ee058ee4f783037159e Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 22:44:56 +0200 Subject: [PATCH 0880/1070] Fixes #48065 --- .../electron-browser/extensionService.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 4d64bdc8415..ec7847ca19b 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -424,7 +424,10 @@ export class ExtensionService extends Disposable implements IExtensionService { } private _activateByEvent(activationEvent: string): TPromise { - return this._extensionHostProcessManager.activateByEvent(activationEvent); + if (this._extensionHostProcessManager) { + return this._extensionHostProcessManager.activateByEvent(activationEvent); + } + return NO_OP_VOID_PROMISE; } public whenInstalledExtensionsRegistered(): TPromise { @@ -455,8 +458,8 @@ export class ExtensionService extends Disposable implements IExtensionService { } public getExtensionsStatus(): { [id: string]: IExtensionsStatus; } { - const activationTimes = this._extensionHostProcessManager.getActivationTimes(); - const runtimeErrors = this._extensionHostProcessManager.getRuntimeErrors(); + const activationTimes = this._extensionHostProcessManager ? this._extensionHostProcessManager.getActivationTimes() : {}; + const runtimeErrors = this._extensionHostProcessManager ? this._extensionHostProcessManager.getRuntimeErrors() : {}; let result: { [id: string]: IExtensionsStatus; } = Object.create(null); if (this._registry) { @@ -475,7 +478,10 @@ export class ExtensionService extends Disposable implements IExtensionService { } public canProfileExtensionHost(): boolean { - return this._extensionHostProcessManager.canProfileExtensionHost(); + if (this._extensionHostProcessManager) { + return this._extensionHostProcessManager.canProfileExtensionHost(); + } + return false; } public startExtensionHostProfile(): TPromise { From 3f81b43a8b0875e9bc53be02e45bacc10074811a Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 23:07:22 +0200 Subject: [PATCH 0881/1070] Fixes #38591 --- .../browser/viewParts/selections/selections.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/browser/viewParts/selections/selections.ts b/src/vs/editor/browser/viewParts/selections/selections.ts index c844dfc3516..c25e5869f40 100644 --- a/src/vs/editor/browser/viewParts/selections/selections.ts +++ b/src/vs/editor/browser/viewParts/selections/selections.ts @@ -78,6 +78,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { private _context: ViewContext; private _lineHeight: number; private _roundedSelection: boolean; + private _typicalHalfwidthCharacterWidth: number; private _selections: Range[]; private _renderResult: string[]; @@ -86,6 +87,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { this._context = context; this._lineHeight = this._context.configuration.editor.lineHeight; this._roundedSelection = this._context.configuration.editor.viewInfo.roundedSelection; + this._typicalHalfwidthCharacterWidth = this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth; this._selections = []; this._renderResult = null; this._context.addEventHandler(this); @@ -108,6 +110,9 @@ export class SelectionsOverlay extends DynamicViewOverlay { if (e.viewInfo) { this._roundedSelection = this._context.configuration.editor.viewInfo.roundedSelection; } + if (e.fontInfo) { + this._typicalHalfwidthCharacterWidth = this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth; + } return true; } public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean { @@ -154,6 +159,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { } private _enrichVisibleRangesWithStyle(linesVisibleRanges: LineVisibleRangesWithStyle[], previousFrame: LineVisibleRangesWithStyle[]): void { + const epsilon = this._typicalHalfwidthCharacterWidth / 4; let previousFrameTop: HorizontalRangeWithStyle = null; let previousFrameBottom: HorizontalRangeWithStyle = null; @@ -202,13 +208,13 @@ export class SelectionsOverlay extends DynamicViewOverlay { let prevLeft = linesVisibleRanges[i - 1].ranges[0].left; let prevRight = linesVisibleRanges[i - 1].ranges[0].left + linesVisibleRanges[i - 1].ranges[0].width; - if (curLeft === prevLeft) { + if (abs(curLeft - prevLeft) < epsilon) { startStyle.top = CornerStyle.FLAT; } else if (curLeft > prevLeft) { startStyle.top = CornerStyle.INTERN; } - if (curRight === prevRight) { + if (abs(curRight - prevRight) < epsilon) { endStyle.top = CornerStyle.FLAT; } else if (prevLeft < curRight && curRight < prevRight) { endStyle.top = CornerStyle.INTERN; @@ -224,13 +230,13 @@ export class SelectionsOverlay extends DynamicViewOverlay { let nextLeft = linesVisibleRanges[i + 1].ranges[0].left; let nextRight = linesVisibleRanges[i + 1].ranges[0].left + linesVisibleRanges[i + 1].ranges[0].width; - if (curLeft === nextLeft) { + if (abs(curLeft - nextLeft) < epsilon) { startStyle.bottom = CornerStyle.FLAT; } else if (nextLeft < curLeft && curLeft < nextRight) { startStyle.bottom = CornerStyle.INTERN; } - if (curRight === nextRight) { + if (abs(curRight - nextRight) < epsilon) { endStyle.bottom = CornerStyle.FLAT; } else if (curRight < nextRight) { endStyle.bottom = CornerStyle.INTERN; @@ -407,3 +413,7 @@ registerThemingParticipant((theme, collector) => { collector.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${editorSelectionForegroundColor}; }`); } }); + +function abs(n: number): number { + return n < 0 ? -n : n; +} \ No newline at end of file From 63d9bf409bd3ff4f9bca6dbae6c94c1355401189 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 23:23:39 +0200 Subject: [PATCH 0882/1070] Fixes #35770 --- .../viewParts/selections/selections.ts | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/vs/editor/browser/viewParts/selections/selections.ts b/src/vs/editor/browser/viewParts/selections/selections.ts index c25e5869f40..a3e1d9e1dec 100644 --- a/src/vs/editor/browser/viewParts/selections/selections.ts +++ b/src/vs/editor/browser/viewParts/selections/selections.ts @@ -158,7 +158,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { return false; } - private _enrichVisibleRangesWithStyle(linesVisibleRanges: LineVisibleRangesWithStyle[], previousFrame: LineVisibleRangesWithStyle[]): void { + private _enrichVisibleRangesWithStyle(viewport: Range, linesVisibleRanges: LineVisibleRangesWithStyle[], previousFrame: LineVisibleRangesWithStyle[]): void { const epsilon = this._typicalHalfwidthCharacterWidth / 4; let previousFrameTop: HorizontalRangeWithStyle = null; let previousFrameBottom: HorizontalRangeWithStyle = null; @@ -166,16 +166,20 @@ export class SelectionsOverlay extends DynamicViewOverlay { if (previousFrame && previousFrame.length > 0 && linesVisibleRanges.length > 0) { let topLineNumber = linesVisibleRanges[0].lineNumber; - for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) { - if (previousFrame[i].lineNumber === topLineNumber) { - previousFrameTop = previousFrame[i].ranges[0]; + if (topLineNumber === viewport.startLineNumber) { + for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) { + if (previousFrame[i].lineNumber === topLineNumber) { + previousFrameTop = previousFrame[i].ranges[0]; + } } } let bottomLineNumber = linesVisibleRanges[linesVisibleRanges.length - 1].lineNumber; - for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) { - if (previousFrame[i].lineNumber === bottomLineNumber) { - previousFrameBottom = previousFrame[i].ranges[0]; + if (bottomLineNumber === viewport.endLineNumber) { + for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) { + if (previousFrame[i].lineNumber === bottomLineNumber) { + previousFrameBottom = previousFrame[i].ranges[0]; + } } } @@ -258,7 +262,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { let visibleRangesHaveGaps = this._visibleRangesHaveGaps(linesVisibleRanges); if (!isIEWithZoomingIssuesNearRoundedBorders && !visibleRangesHaveGaps && this._roundedSelection) { - this._enrichVisibleRangesWithStyle(linesVisibleRanges, previousFrame); + this._enrichVisibleRangesWithStyle(ctx.visibleRange, linesVisibleRanges, previousFrame); } // The visible ranges are sorted TOP-BOTTOM and LEFT-RIGHT From 5d37bdf57c938c215743c0881dfaae202982aa91 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 00:05:08 +0200 Subject: [PATCH 0883/1070] Fixes #28186: Do column selection when using middle mouse button --- .../editor/browser/controller/mouseHandler.ts | 21 +++++++++++++++++-- src/vs/editor/browser/view/viewController.ts | 11 +++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts index efe3c993f16..a6ac118cbdf 100644 --- a/src/vs/editor/browser/controller/mouseHandler.ts +++ b/src/vs/editor/browser/controller/mouseHandler.ts @@ -220,8 +220,8 @@ export class MouseHandler extends ViewEventHandler { let targetIsViewZone = (t.type === editorBrowser.MouseTargetType.CONTENT_VIEW_ZONE || t.type === editorBrowser.MouseTargetType.GUTTER_VIEW_ZONE); let targetIsWidget = (t.type === editorBrowser.MouseTargetType.CONTENT_WIDGET); - let shouldHandle = e.leftButton; - if (platform.isMacintosh && e.ctrlKey) { + let shouldHandle = e.leftButton || e.middleButton; + if (platform.isMacintosh && e.leftButton && e.ctrlKey) { shouldHandle = false; } @@ -334,6 +334,7 @@ class MouseDownOperation extends Disposable { this._lastMouseEvent = e; this._mouseState.setStartedOnLineNumbers(targetType === editorBrowser.MouseTargetType.GUTTER_LINE_NUMBERS); + this._mouseState.setStartButtons(e); this._mouseState.setModifiers(e); let position = this._findMousePosition(e, true); if (!position) { @@ -488,6 +489,9 @@ class MouseDownOperation extends Disposable { ctrlKey: this._mouseState.ctrlKey, metaKey: this._mouseState.metaKey, shiftKey: this._mouseState.shiftKey, + + leftButton: this._mouseState.leftButton, + middleButton: this._mouseState.middleButton, }); } } @@ -508,6 +512,12 @@ class MouseDownState { private _shiftKey: boolean; public get shiftKey(): boolean { return this._shiftKey; } + private _leftButton: boolean; + public get leftButton(): boolean { return this._leftButton; } + + private _middleButton: boolean; + public get middleButton(): boolean { return this._middleButton; } + private _startedOnLineNumbers: boolean; public get startedOnLineNumbers(): boolean { return this._startedOnLineNumbers; } @@ -522,6 +532,8 @@ class MouseDownState { this._ctrlKey = false; this._metaKey = false; this._shiftKey = false; + this._leftButton = false; + this._middleButton = false; this._startedOnLineNumbers = false; this._lastMouseDownPosition = null; this._lastMouseDownPositionEqualCount = 0; @@ -541,6 +553,11 @@ class MouseDownState { this._shiftKey = source.shiftKey; } + public setStartButtons(source: EditorMouseEvent) { + this._leftButton = source.leftButton; + this._middleButton = source.middleButton; + } + public setStartedOnLineNumbers(startedOnLineNumbers: boolean): void { this._startedOnLineNumbers = startedOnLineNumbers; } diff --git a/src/vs/editor/browser/view/viewController.ts b/src/vs/editor/browser/view/viewController.ts index 8dfebb34b87..31233148de5 100644 --- a/src/vs/editor/browser/view/viewController.ts +++ b/src/vs/editor/browser/view/viewController.ts @@ -31,6 +31,9 @@ export interface IMouseDispatchData { ctrlKey: boolean; metaKey: boolean; shiftKey: boolean; + + leftButton: boolean; + middleButton: boolean; } export interface ICommandDelegate { @@ -133,7 +136,13 @@ export class ViewController { } public dispatchMouse(data: IMouseDispatchData): void { - if (data.startedOnLineNumbers) { + if (data.middleButton) { + if (data.inSelectionMode) { + this.columnSelect(data.position, data.mouseColumn); + } else { + this.moveTo(data.position); + } + } else if (data.startedOnLineNumbers) { // If the dragging started on the gutter, then have operations work on the entire line if (this._hasMulticursorModifier(data)) { if (data.inSelectionMode) { From 70b22b8c05fc67717451246ec35860890ed73cae Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 17 Apr 2018 15:26:09 -0700 Subject: [PATCH 0884/1070] Get terminal process running on ext host --- .../mainThreadTerminalService.ts | 36 +++++++--- src/vs/workbench/api/node/extHost.protocol.ts | 7 +- .../api/node/extHostTerminalService.ts | 66 +++++++++++++++++-- .../parts/terminal/common/terminal.ts | 9 ++- .../parts/terminal/common/terminalService.ts | 6 +- .../electron-browser/terminalInstance.ts | 2 +- .../terminalProcessManager.ts | 3 +- .../electron-browser/terminalService.ts | 24 +++---- .../node/terminalProcessExtHostProxy.ts | 22 ++++++- 9 files changed, 139 insertions(+), 36 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 5f574cedd71..253fb655b65 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -5,7 +5,7 @@ 'use strict'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { ITerminalService, ITerminalInstance, IShellLaunchConfig } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext } from '../node/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; @@ -14,23 +14,24 @@ import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostC export class MainThreadTerminalService implements MainThreadTerminalServiceShape { private _proxy: ExtHostTerminalServiceShape; - private _toDispose: IDisposable[]; + private _toDispose: IDisposable[] = []; + private _terminalProcesses: { [id: number]: ITerminalProcessExtHostProxy } = {}; constructor( extHostContext: IExtHostContext, @ITerminalService private terminalService: ITerminalService ) { + console.log('MainThreadTerminalService#ctor'); this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostTerminalService); - this._toDispose = []; this._toDispose.push(terminalService.onInstanceCreated((terminalInstance) => { // Delay this message so the TerminalInstance constructor has a chance to finish and // return the ID normally to the extension host. The ID that is passed here will be used // to register non-extension API terminals in the extension host. setTimeout(() => this._onTerminalOpened(terminalInstance), 100); })); - this._toDispose.push(terminalService.onInstanceDisposed((terminalInstance) => this._onTerminalDisposed(terminalInstance))); - this._toDispose.push(terminalService.onInstanceProcessIdReady((terminalInstance) => this._onTerminalProcessIdReady(terminalInstance))); - this._toDispose.push(terminalService.onInstanceRequestExtHostProcess((terminalInstance) => this._onTerminalRequestExtHostProcess(terminalInstance))); + this._toDispose.push(terminalService.onInstanceDisposed(terminalInstance => this._onTerminalDisposed(terminalInstance))); + this._toDispose.push(terminalService.onInstanceProcessIdReady(terminalInstance => this._onTerminalProcessIdReady(terminalInstance))); + this._toDispose.push(terminalService.onInstanceRequestExtHostProcess(proxy => this._onTerminalRequestExtHostProcess(proxy))); // Set initial ext host state this.terminalService.terminalInstances.forEach(t => { @@ -99,8 +100,27 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape this._proxy.$acceptTerminalProcessId(terminalInstance.id, terminalInstance.processId); } - private _onTerminalRequestExtHostProcess(terminalInstance: ITerminalInstance): void { + private _onTerminalRequestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void { console.log('mainThreadTerminalService#_onTerminalRequestExtHostProcess', arguments); - this._proxy.$createProcess(null, 0, 0); + this._terminalProcesses[proxy.terminalId] = proxy; + this._proxy.$createProcess(proxy.terminalId, null, 0, 0); + // TODO: Dispose of this properly when the terminal/process dies + this._toDispose.push(proxy.onInput(data => this._onTerminalProcessWrite(proxy.terminalId, data))); + } + + public $sendProcessTitle(terminalId: number, title: string): void { + this._terminalProcesses[terminalId].emitTitle(title); + } + + public $sendProcessData(terminalId: number, data: string): void { + this._terminalProcesses[terminalId].emitData(data); + } + + public $sendProcessPid(terminalId: number, pid: number): void { + this._terminalProcesses[terminalId].emitPid(pid); + } + + private _onTerminalProcessWrite(terminalId: number, data: string): void { + this._proxy.$acceptTerminalProcessWrite(terminalId, data); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index ce3753c84e7..619181eff1f 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -321,6 +321,10 @@ export interface MainThreadTerminalServiceShape extends IDisposable { $hide(terminalId: number): void; $sendText(terminalId: number, text: string, addNewLine: boolean): void; $show(terminalId: number, preserveFocus: boolean): void; + + $sendProcessTitle(terminalId: number, title: string): void; + $sendProcessData(terminalId: number, data: string): void; + $sendProcessPid(terminalId: number, pid: number): void; } export interface MyQuickPickItems extends IPickOpenEntry { @@ -743,7 +747,8 @@ export interface ExtHostTerminalServiceShape { $acceptTerminalClosed(id: number): void; $acceptTerminalOpened(id: number, name: string): void; $acceptTerminalProcessId(id: number, processId: number): void; - $createProcess(shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void; + $createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void; + $acceptTerminalProcessWrite(id: number, data: string): void; } export interface ExtHostSCMShape { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index c1632fc7629..9310283c71e 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -5,8 +5,12 @@ 'use strict'; import * as vscode from 'vscode'; +import * as cp from 'child_process'; +import * as path from 'path'; +import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import { Event, Emitter } from 'vs/base/common/event'; import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IMainContext, ShellLaunchConfigDto } from 'vs/workbench/api/node/extHost.protocol'; +import { IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; export class ExtHostTerminal implements vscode.Terminal { @@ -81,6 +85,7 @@ export class ExtHostTerminal implements vscode.Terminal { } public _setProcessId(processId: number): void { + console.log('extHostTerminalService#_setProcessId', processId); this._pidPromiseComplete(processId); this._pidPromiseComplete = null; } @@ -106,7 +111,8 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { private readonly _onDidCloseTerminal: Emitter; private readonly _onDidOpenTerminal: Emitter; private _proxy: MainThreadTerminalServiceShape; - private _terminals: ExtHostTerminal[]; + private _terminals: ExtHostTerminal[] = []; + private _terminalProcesses: { [id: number]: cp.ChildProcess } = {}; public get terminals(): ExtHostTerminal[] { return this._terminals; } @@ -114,7 +120,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { this._onDidCloseTerminal = new Emitter(); this._onDidOpenTerminal = new Emitter(); this._proxy = mainContext.getProxy(MainContext.MainThreadTerminalService); - this._terminals = []; } public createTerminal(name?: string, shellPath?: string, shellArgs?: string[]): vscode.Terminal { @@ -150,6 +155,7 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptTerminalOpened(id: number, name: string): void { + console.log('terminal opened: ' + id); let index = this._getTerminalIndexById(id); if (index !== null) { // The terminal has already been created (via createTerminal*), only fire the event @@ -163,13 +169,64 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { public $acceptTerminalProcessId(id: number, processId: number): void { let terminal = this._getTerminalById(id); + console.log('ExtHostTerminalService#$acceptTerminalProcessId ' + id + ' ' + processId); if (terminal) { terminal._setProcessId(processId); } } - public $createProcess(shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void { - console.log('$createProcess'); + public $createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void { + shellLaunchConfig = { + env: {}, + executable: 'bash' + }; + + + // TODO: Launch process + // TODO: Associate the process with the terminal object/id + // TODO: terminal has incorrect name/options, fix up + const parentEnv = { ...process.env }; + const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, '/home/daniel', undefined, cols, rows); + // TODO: Use Uri? + let cwd = path.dirname(require.toUrl('../../parts/terminal/node/terminalProcess')).replace('file://', ''); + console.log(cwd); + const options = { env, cwd, execArgv: [] }; + + let bootstrapUri = require.toUrl('bootstrap').replace('file://', '') + '.js'; + console.log(bootstrapUri); + + // cwd = '/home/daniel/dev/Microsoft/vscode/out/vs/workbench/parts/terminal/node'; + // bootstrapUri = '/home/daniel/dev/Microsoft/vscode/out/bootstrap'; + // env['AMD_ENTRYPOINT'] = 'vs/workbench/parts/terminal/node/terminalProcess'; + this._terminalProcesses[id] = cp.fork(bootstrapUri, ['--type=terminal'], options); + + this._terminalProcesses[id].on('message', (message: IMessageFromTerminalProcess) => { + switch (message.type) { + case 'pid': + this._proxy.$sendProcessPid(id, message.content); + break; + case 'title': + this._proxy.$sendProcessTitle(id, message.content); + break; + case 'data': + this._proxy.$sendProcessData(id, message.content); + break; + } + // console.log('message type: ' + d.type + ', content: ' + d.content) + }); + + // const processPath = require.toUrl('../../parts/terminal/node/terminalProcess').replace('file://', ''); + // const process2 = cp.fork(processPath, [], options); + // process2.on('data', d => console.log('data ' + d)); + // process2.on('exit', d => console.log('exit ' + d)); + // process2.on('error', d => console.log('error ' + d)); + + const terminal = this._getTerminalById(id); + console.log('$createProcess terminal: ' + terminal.name); + } + + public $acceptTerminalProcessWrite(id: number, data: string): void { + this._terminalProcesses[id].send({ event: 'input', data }); } private _getTerminalById(id: number): ExtHostTerminal { @@ -180,6 +237,7 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { private _getTerminalIndexById(id: number): number { let index: number = null; this._terminals.some((terminal, i) => { + // TODO: This shouldn't be cas let thisId = (terminal)._id; if (thisId === id) { index = i; diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index d4934907a46..a435e65df32 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -165,7 +165,7 @@ export interface ITerminalService { onInstanceCreated: Event; onInstanceDisposed: Event; onInstanceProcessIdReady: Event; - onInstanceRequestExtHostProcess: Event; + onInstanceRequestExtHostProcess: Event; onInstancesChanged: Event; onInstanceTitleChanged: Event; terminalInstances: ITerminalInstance[]; @@ -207,7 +207,7 @@ export interface ITerminalService { selectDefaultWindowsShell(): TPromise; setWorkspaceShellAllowed(isAllowed: boolean): void; - requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise; + requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void; } export const enum Direction { @@ -524,7 +524,10 @@ export enum ProcessState { export interface ITerminalProcessExtHostProxy { + readonly terminalId: number; + emitData(data: string): void; emitTitle(title: string): void; emitPid(pid: number): void; -} \ No newline at end of file + onInput(listener: (data: string) => void): IDisposable; +} diff --git a/src/vs/workbench/parts/terminal/common/terminalService.ts b/src/vs/workbench/parts/terminal/common/terminalService.ts index 2ec8be7c6bb..92a91bcf5ac 100644 --- a/src/vs/workbench/parts/terminal/common/terminalService.ts +++ b/src/vs/workbench/parts/terminal/common/terminalService.ts @@ -39,8 +39,8 @@ export abstract class TerminalService implements ITerminalService { public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } protected readonly _onInstanceProcessIdReady: Emitter = new Emitter(); public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } - protected readonly _onInstanceRequestExtHostProcess: Emitter = new Emitter(); - public get onInstanceRequestExtHostProcess(): Event { return this._onInstanceRequestExtHostProcess.event; } + protected readonly _onInstanceRequestExtHostProcess: Emitter = new Emitter(); + public get onInstanceRequestExtHostProcess(): Event { return this._onInstanceRequestExtHostProcess.event; } protected readonly _onInstancesChanged: Emitter = new Emitter(); public get onInstancesChanged(): Event { return this._onInstancesChanged.event; } protected readonly _onInstanceTitleChanged: Emitter = new Emitter(); @@ -75,7 +75,7 @@ export abstract class TerminalService implements ITerminalService { public abstract getActiveOrCreateInstance(wasNewTerminalAction?: boolean): ITerminalInstance; public abstract selectDefaultWindowsShell(): TPromise; public abstract setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; - public abstract requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise; + public abstract requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void; private _restoreTabs(): void { if (!this.configHelper.config.experimentalRestore) { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 37f4a216882..cfbbcd194b3 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -587,7 +587,7 @@ export class TerminalInstance implements ITerminalInstance { } protected _createProcess(): void { - this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._configHelper); + this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._id, this._configHelper); this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index 9d3c4ba3a4c..bfeef947e40 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -51,6 +51,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { public get onProcessExit(): Event { return this._onProcessExit.event; } constructor( + private _terminalId: number, private _configHelper: ITerminalConfigHelper, @IWorkspaceContextService private readonly _workspaceContextService: IWorkspaceContextService, @IHistoryService private readonly _historyService: IHistoryService, @@ -117,7 +118,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { const options = { env, cwd }; this._logService.debug(`Terminal process launching`, options); if (shellLaunchConfig.extensionHostOwned) { - this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy); + this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy, this._terminalId); } else { this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 470d17dcb0d..0e37f567c63 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -27,6 +27,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati import { ipcRenderer as ipc } from 'electron'; import { IOpenFileRequest } from 'vs/platform/windows/common/windows'; import { TerminalInstance } from 'vs/workbench/parts/terminal/electron-browser/terminalInstance'; +import { IExtensionService } from '../../../services/extensions/common/extensions'; export class TerminalService extends AbstractTerminalService implements ITerminalService { private _configHelper: TerminalConfigHelper; @@ -47,7 +48,8 @@ export class TerminalService extends AbstractTerminalService implements ITermina @IInstantiationService private readonly _instantiationService: IInstantiationService, @IQuickOpenService private readonly _quickOpenService: IQuickOpenService, @INotificationService private readonly _notificationService: INotificationService, - @IDialogService private readonly _dialogService: IDialogService + @IDialogService private readonly _dialogService: IDialogService, + @IExtensionService private readonly _extensionService: IExtensionService ) { super(contextKeyService, panelService, partService, lifecycleService, storageService); @@ -93,17 +95,15 @@ export class TerminalService extends AbstractTerminalService implements ITermina return this._instantiationService.createInstance(TerminalInstance, terminalFocusContextKey, configHelper, undefined, shellLaunchConfig, true); } - public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): TPromise { - let i = 0; - setTimeout(() => { - proxy.emitPid(-1); - proxy.emitTitle('test title'); - proxy.emitData(`test ${i++}\r\n`); - }, 0); - setInterval(() => { - proxy.emitData(`test ${i++}\r\n`); - }, 1000); - return TPromise.as(void 0); + public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void { + // Ensure extension host is ready before requesting a process + this._extensionService.whenInstalledExtensionsRegistered().then(() => { + // TODO: MainThreadTerminalService is not ready at this point, fix this + setTimeout(() => { + console.log('request'); + this._onInstanceRequestExtHostProcess.fire(proxy); + }, 100); + }); } public focusFindWidget(): TPromise { diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index 271e8b0c543..d59cb652534 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -6,17 +6,19 @@ import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; import { ITerminalService, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; +import { IDisposable } from '../../../../base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { public connected: boolean; constructor( + public terminalId: number, @ITerminalService private _terminalService: ITerminalService ) { super(); - this._terminalService.requestExtHostProcess(this).then(() => { - }); + // TODO: Return TPromise indicating success? Teardown if failure? + this._terminalService.requestExtHostProcess(this); } public emitData(data: string): void { @@ -30,7 +32,21 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin } public send(message: IMessageToTerminalProcess): boolean { - console.log('TerminalProcessExtHostBridge#send', arguments); + console.log('TerminalProcessExtHostProxy#send'); + if (message.event === 'input') { + console.log('emit input', message.data); + this.emit('input', message.data); + } return true; } + + public onInput(listener: (data: string) => void): IDisposable { + console.log('TerminalProcessExtHostProxy#onInput', arguments); + // TODO: Dispose of me + this.on('input', data => { + console.log('TerminalProcessExtHostProxy#onInput - listener'); + listener(data); + }); + return null; + } } \ No newline at end of file From a0e99bcb4a1726100a71a66762dc4deafddc8c8b Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 17 Apr 2018 15:30:31 -0700 Subject: [PATCH 0885/1070] Clean up --- .../api/node/extHostTerminalService.ts | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 9310283c71e..e6ad441affc 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -202,25 +202,12 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { this._terminalProcesses[id].on('message', (message: IMessageFromTerminalProcess) => { switch (message.type) { - case 'pid': - this._proxy.$sendProcessPid(id, message.content); - break; - case 'title': - this._proxy.$sendProcessTitle(id, message.content); - break; - case 'data': - this._proxy.$sendProcessData(id, message.content); - break; + case 'pid': this._proxy.$sendProcessPid(id, message.content); break; + case 'title': this._proxy.$sendProcessTitle(id, message.content); break; + case 'data': this._proxy.$sendProcessData(id, message.content); break; } - // console.log('message type: ' + d.type + ', content: ' + d.content) }); - // const processPath = require.toUrl('../../parts/terminal/node/terminalProcess').replace('file://', ''); - // const process2 = cp.fork(processPath, [], options); - // process2.on('data', d => console.log('data ' + d)); - // process2.on('exit', d => console.log('exit ' + d)); - // process2.on('error', d => console.log('error ' + d)); - const terminal = this._getTerminalById(id); console.log('$createProcess terminal: ' + terminal.name); } From c8d58f428e1d1b1fedee4524db39c9600a8c8371 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 17 Apr 2018 15:43:41 -0700 Subject: [PATCH 0886/1070] Pass through shutdown and resize --- .../mainThreadTerminalService.ts | 8 ++--- src/vs/workbench/api/node/extHost.protocol.ts | 4 ++- .../api/node/extHostTerminalService.ts | 11 ++++++- .../parts/terminal/common/terminal.ts | 2 ++ .../node/terminalProcessExtHostProxy.ts | 29 ++++++++++++------- 5 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 253fb655b65..4aea9d9d787 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -105,7 +105,9 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape this._terminalProcesses[proxy.terminalId] = proxy; this._proxy.$createProcess(proxy.terminalId, null, 0, 0); // TODO: Dispose of this properly when the terminal/process dies - this._toDispose.push(proxy.onInput(data => this._onTerminalProcessWrite(proxy.terminalId, data))); + this._toDispose.push(proxy.onInput(data => this._proxy.$acceptTerminalProcessInput(proxy.terminalId, data))); + this._toDispose.push(proxy.onResize((cols, rows) => this._proxy.$acceptTerminalProcessResize(proxy.terminalId, cols, rows))); + this._toDispose.push(proxy.onShutdown(() => this._proxy.$acceptTerminalProcessShutdown(proxy.terminalId))); } public $sendProcessTitle(terminalId: number, title: string): void { @@ -119,8 +121,4 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $sendProcessPid(terminalId: number, pid: number): void { this._terminalProcesses[terminalId].emitPid(pid); } - - private _onTerminalProcessWrite(terminalId: number, data: string): void { - this._proxy.$acceptTerminalProcessWrite(terminalId, data); - } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 619181eff1f..40ae2187b9d 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -748,7 +748,9 @@ export interface ExtHostTerminalServiceShape { $acceptTerminalOpened(id: number, name: string): void; $acceptTerminalProcessId(id: number, processId: number): void; $createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void; - $acceptTerminalProcessWrite(id: number, data: string): void; + $acceptTerminalProcessInput(id: number, data: string): void; + $acceptTerminalProcessResize(id: number, cols: number, rows: number): void; + $acceptTerminalProcessShutdown(id: number): void; } export interface ExtHostSCMShape { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index e6ad441affc..16b62bd5e39 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -212,10 +212,19 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { console.log('$createProcess terminal: ' + terminal.name); } - public $acceptTerminalProcessWrite(id: number, data: string): void { + public $acceptTerminalProcessInput(id: number, data: string): void { this._terminalProcesses[id].send({ event: 'input', data }); } + public $acceptTerminalProcessResize(id: number, cols: number, rows: number): void { + console.log('resize' + cols + ',' + rows); + this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + } + + public $acceptTerminalProcessShutdown(id: number): void { + this._terminalProcesses[id].send({ event: 'shutdown' }); + } + private _getTerminalById(id: number): ExtHostTerminal { let index = this._getTerminalIndexById(id); return index !== null ? this._terminals[index] : null; diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index a435e65df32..946bfb8ef2d 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -530,4 +530,6 @@ export interface ITerminalProcessExtHostProxy { emitTitle(title: string): void; emitPid(pid: number): void; onInput(listener: (data: string) => void): IDisposable; + onResize(listener: (cols: number, rows: number) => void): IDisposable; + onShutdown(listener: () => void): IDisposable; } diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index d59cb652534..f05ec5f6dc1 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -9,7 +9,8 @@ import { ITerminalService, ITerminalProcessExtHostProxy } from 'vs/workbench/par import { IDisposable } from '../../../../base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { - public connected: boolean; + // TODO: Set this properly + public connected: boolean = true; constructor( public terminalId: number, @@ -32,21 +33,29 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin } public send(message: IMessageToTerminalProcess): boolean { - console.log('TerminalProcessExtHostProxy#send'); - if (message.event === 'input') { - console.log('emit input', message.data); - this.emit('input', message.data); + switch (message.event) { + case 'input': this.emit('input', message.data); break; + case 'resize': this.emit('resize', message.cols, message.rows); break; + case 'shutdown': this.emit('shutdown'); break; } return true; } public onInput(listener: (data: string) => void): IDisposable { - console.log('TerminalProcessExtHostProxy#onInput', arguments); // TODO: Dispose of me - this.on('input', data => { - console.log('TerminalProcessExtHostProxy#onInput - listener'); - listener(data); - }); + this.on('input', data => listener(data)); + return null; + } + + public onResize(listener: (cols: number, rows: number) => void): IDisposable { + // TODO: Dispose of me + this.on('resize', (cols, rows) => listener(cols, rows)); + return null; + } + + public onShutdown(listener: () => void): IDisposable { + // TODO: Dispose of me + this.on('shutdown', () => listener()); return null; } } \ No newline at end of file From fbd3a083692e1327ba77f0645674a2df95c66c65 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 16:20:27 -0700 Subject: [PATCH 0887/1070] Pass Webview into ExtHostWebviewPanel instead of creating it inside the ctor --- src/vs/workbench/api/node/extHostWebview.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index 45afdf5d503..d82e1235db2 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -92,9 +92,10 @@ export class ExtHostWebview implements vscode.Webview { export class ExtHostWebviewPanel implements vscode.WebviewPanel { private readonly _handle: WebviewPanelHandle; + private readonly _proxy: MainThreadWebviewsShape; private readonly _viewType: string; private readonly _options: vscode.WebviewPanelOptions; - private readonly _proxy: MainThreadWebviewsShape; + private readonly _webview: ExtHostWebview; private _isDisposed: boolean = false; private _viewColumn: vscode.ViewColumn; private _visible: boolean = true; @@ -105,23 +106,21 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { public readonly onDidChangeViewStateEmitter = new Emitter(); public readonly onDidChangeViewState: Event = this.onDidChangeViewStateEmitter.event; - private _webview: ExtHostWebview; constructor( handle: WebviewPanelHandle, proxy: MainThreadWebviewsShape, viewType: string, - title: string, viewColumn: vscode.ViewColumn, editorOptions: vscode.WebviewPanelOptions, - webviewOptions: vscode.WebviewOptions + webview: ExtHostWebview ) { this._handle = handle; this._proxy = proxy; this._viewType = viewType; this._options = editorOptions; this._viewColumn = viewColumn; - this._webview = new ExtHostWebview(handle, proxy, title, webviewOptions); + this._webview = webview; } public dispose() { @@ -213,7 +212,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { const handle = ExtHostWebviews.webviewHandlePool++ + ''; this._proxy.$createWebviewPanel(handle, viewType, title, typeConverters.fromViewColumn(viewColumn), options, extensionFolderPath); - const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, title, viewColumn, options, options); + const webview = new ExtHostWebview(handle, this._proxy, title, options); + const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, viewColumn, options, webview); this._webviewPanels.set(handle, panel); return panel; } @@ -269,14 +269,15 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { title: string, state: any, position: Position, - options: vscode.WebviewOptions + options: vscode.WebviewOptions & vscode.WebviewPanelOptions ): Thenable { const serializer = this._serializers.get(viewType); if (!serializer) { return TPromise.wrapError(new Error(`No serializer found for '${viewType}'`)); } - const revivedPanel = new ExtHostWebviewPanel(webviewHandle, this._proxy, viewType, title, typeConverters.toViewColumn(position), options as vscode.WebviewPanelOptions, options as vscode.WebviewOptions); + const webview = new ExtHostWebview(webviewHandle, this._proxy, title, options); + const revivedPanel = new ExtHostWebviewPanel(webviewHandle, this._proxy, viewType, typeConverters.toViewColumn(position), options, webview); this._webviewPanels.set(webviewHandle, revivedPanel); return serializer.deserializeWebviewPanel(revivedPanel, state); } From cdd9a731f9ea3c119621463c2d26f2725079172f Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 16:22:44 -0700 Subject: [PATCH 0888/1070] Use standard 'postMessage' name --- src/vs/workbench/api/electron-browser/mainThreadWebview.ts | 2 +- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostWebview.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index b3bff528318..4f007ab2439 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -101,7 +101,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv this._webviewService.revealWebview(webview, column); } - async $sendMessage(handle: WebviewPanelHandle, message: any): TPromise { + async $postMessage(handle: WebviewPanelHandle, message: any): TPromise { const webview = this.getWebview(handle); const editors = this._editorService.getVisibleEditors() .filter(e => e instanceof WebviewEditor) diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 3f5c9595b49..37f274df23a 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -355,7 +355,7 @@ export interface MainThreadWebviewsShape extends IDisposable { $reveal(handle: WebviewPanelHandle, column: EditorPosition): void; $setTitle(handle: WebviewPanelHandle, value: string): void; $setHtml(handle: WebviewPanelHandle, value: string): void; - $sendMessage(handle: WebviewPanelHandle, value: any): Thenable; + $postMessage(handle: WebviewPanelHandle, value: any): Thenable; $registerSerializer(viewType: string): void; $unregisterSerializer(viewType: string): void; diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index d82e1235db2..53eb8d31972 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -74,7 +74,7 @@ export class ExtHostWebview implements vscode.Webview { public postMessage(message: any): Thenable { this.assertNotDisposed(); - return this._proxy.$sendMessage(this._handle, message); + return this._proxy.$postMessage(this._handle, message); } public reveal(viewColumn: vscode.ViewColumn): void { @@ -173,7 +173,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { public postMessage(message: any): Thenable { this.assertNotDisposed(); - return this._proxy.$sendMessage(this._handle, message); + return this._proxy.$postMessage(this._handle, message); } public reveal(viewColumn: vscode.ViewColumn): void { From 94bd08ae126282bf0cac39cceede45471780cd9d Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 16:39:58 -0700 Subject: [PATCH 0889/1070] Clean up naming --- .../parts/webview/electron-browser/webview.contribution.ts | 2 +- .../parts/webview/electron-browser/webviewCommands.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts index aa05a047266..c455d333963 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts @@ -68,7 +68,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule(showPreviousFindTermCommand const hideCommand = new HideWebViewEditorFindCommand({ - id: HideWebViewEditorFindCommand.Id, + id: HideWebViewEditorFindCommand.ID, precondition: ContextKeyExpr.and( KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE), diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts b/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts index ed5542fae12..aefe8892396 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewCommands.ts @@ -23,7 +23,7 @@ export class ShowWebViewEditorFindWidgetCommand extends Command { } export class HideWebViewEditorFindCommand extends Command { - public static readonly Id = 'editor.action.webvieweditor.hideFind'; + public static readonly ID = 'editor.action.webvieweditor.hideFind'; public runCommand(accessor: ServicesAccessor, args: any): void { const webViewEditor = getActiveWebviewEditor(accessor); @@ -97,8 +97,8 @@ export class ReloadWebviewAction extends Action { private getVisibleWebviews() { return this.workbenchEditorService.getVisibleEditors() - .filter(c => c && (c as any).isWebviewEditor) - .map(e => e as BaseWebviewEditor); + .filter(editor => editor && (editor as BaseWebviewEditor).isWebviewEditor) + .map(editor => editor as BaseWebviewEditor); } } From 7c68a78be7bff9cf45a40c4284caa369cd50c7b3 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 17:30:07 -0700 Subject: [PATCH 0890/1070] Remove the old referenceInfos editor config option This setting was removed two years back #17452 --- src/vs/editor/common/config/editorOptions.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index 48d76961005..082b31e0aaa 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -491,11 +491,6 @@ export interface IEditorOptions { * Defaults to true. */ codeLens?: boolean; - /** - * @deprecated - use codeLens instead - * @internal - */ - referenceInfos?: boolean; /** * Control the behavior and rendering of the code action lightbulb. */ @@ -1745,7 +1740,7 @@ export class EditorOptionsValidator { suggestLineHeight: _clampedInt(opts.suggestLineHeight, defaults.suggestLineHeight, 0, 1000), selectionHighlight: _boolean(opts.selectionHighlight, defaults.selectionHighlight), occurrencesHighlight: _boolean(opts.occurrencesHighlight, defaults.occurrencesHighlight), - codeLens: _boolean(opts.codeLens, defaults.codeLens) && _boolean(opts.referenceInfos, true), + codeLens: _boolean(opts.codeLens, defaults.codeLens), folding: _boolean(opts.folding, defaults.folding), foldingStrategy: _stringSet<'auto' | 'indentation'>(opts.foldingStrategy, defaults.foldingStrategy, ['auto', 'indentation']), showFoldingControls: _stringSet<'always' | 'mouseover'>(opts.showFoldingControls, defaults.showFoldingControls, ['always', 'mouseover']), From 88f500e805ecc4efd064f7886c1a5ce8a2a2c087 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 17 Apr 2018 17:32:40 -0700 Subject: [PATCH 0891/1070] Use standard arrays.equals instead of custom function --- src/vs/editor/common/config/editorOptions.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index 082b31e0aaa..8045cc078ee 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -10,6 +10,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable'; import { FontInfo } from 'vs/editor/common/config/fontInfo'; import { Constants } from 'vs/editor/common/core/uint'; import { USUAL_WORD_SEPARATORS } from 'vs/editor/common/model/wordHelper'; +import * as arrays from 'vs/base/common/arrays'; /** * Configuration options for editor scrollbars @@ -1070,7 +1071,7 @@ export class InternalEditorOptions { return ( a.extraEditorClassName === b.extraEditorClassName && a.disableMonospaceOptimizations === b.disableMonospaceOptimizations - && this._equalsNumberArrays(a.rulers, b.rulers) + && arrays.equals(a.rulers, b.rulers) && a.ariaLabel === b.ariaLabel && a.renderLineNumbers === b.renderLineNumbers && a.renderCustomLineNumbers === b.renderCustomLineNumbers @@ -1132,18 +1133,6 @@ export class InternalEditorOptions { ); } - private static _equalsNumberArrays(a: number[], b: number[]): boolean { - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - return false; - } - } - return true; - } - /** * @internal */ From dbe092542216081f7489b66bc8c05c9b52805a2e Mon Sep 17 00:00:00 2001 From: Christopher Leidigh Date: Wed, 18 Apr 2018 02:02:18 -0400 Subject: [PATCH 0892/1070] Selectbox: Remove workbench css ref, add min bottom margin. Fixes: #44915 (#48091) * Add selectBoxOptions * Add range checking * Selectbox: Remove workbench css ref, add minBottomMargin. Fixes: #45915 --- src/vs/base/browser/ui/selectBox/selectBox.ts | 8 ++++-- .../browser/ui/selectBox/selectBoxCustom.ts | 25 ++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/vs/base/browser/ui/selectBox/selectBox.ts b/src/vs/base/browser/ui/selectBox/selectBox.ts index d6f7ee5079c..28828be39de 100644 --- a/src/vs/base/browser/ui/selectBox/selectBox.ts +++ b/src/vs/base/browser/ui/selectBox/selectBox.ts @@ -34,6 +34,10 @@ export interface ISelectBoxDelegate { applyStyles(): void; } +export interface ISelectBoxOptions { + minBottomMargin?: number; +} + export interface ISelectBoxStyles extends IListStyles { selectBackground?: Color; selectListBackground?: Color; @@ -58,7 +62,7 @@ export class SelectBox extends Widget implements ISelectBoxDelegate { private styles: ISelectBoxStyles; private selectBoxDelegate: ISelectBoxDelegate; - constructor(options: string[], selected: number, contextViewProvider: IContextViewProvider, styles: ISelectBoxStyles = deepClone(defaultStyles)) { + constructor(options: string[], selected: number, contextViewProvider: IContextViewProvider, styles: ISelectBoxStyles = deepClone(defaultStyles), selectBoxOptions?: ISelectBoxOptions) { super(); this.toDispose = []; @@ -69,7 +73,7 @@ export class SelectBox extends Widget implements ISelectBoxDelegate { if (isMacintosh) { this.selectBoxDelegate = new SelectBoxNative(options, selected, styles); } else { - this.selectBoxDelegate = new SelectBoxList(options, selected, contextViewProvider, styles); + this.selectBoxDelegate = new SelectBoxList(options, selected, contextViewProvider, styles, selectBoxOptions); } this.toDispose.push(this.selectBoxDelegate); diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts index 4155453489f..f075f3a06a6 100644 --- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts @@ -17,7 +17,7 @@ import { List } from 'vs/base/browser/ui/list/listWidget'; import { IDelegate, IRenderer } from 'vs/base/browser/ui/list/list'; import { domEvent } from 'vs/base/browser/event'; import { ScrollbarVisibility } from 'vs/base/common/scrollable'; -import { ISelectBoxDelegate, ISelectBoxStyles, ISelectData } from 'vs/base/browser/ui/selectBox/selectBox'; +import { ISelectBoxDelegate, ISelectBoxOptions, ISelectBoxStyles, ISelectData } from 'vs/base/browser/ui/selectBox/selectBox'; import { isMacintosh } from 'vs/base/common/platform'; const $ = dom.$; @@ -74,9 +74,10 @@ class SelectListRenderer implements IRenderer { - private static SELECT_DROPDOWN_BOTTOM_MARGIN = 10; + private static readonly DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32; private _isVisible: boolean; + private selectBoxOptions: ISelectBoxOptions; private selectElement: HTMLSelectElement; private options: string[]; private selected: number; @@ -93,10 +94,15 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate Date: Wed, 18 Apr 2018 08:03:47 +0200 Subject: [PATCH 0893/1070] :lipstick: --- src/vs/base/browser/ui/selectBox/selectBoxCustom.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts index f075f3a06a6..d77c5cfd599 100644 --- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts @@ -100,8 +100,10 @@ export class SelectBoxList implements ISelectBoxDelegate, IDelegate Date: Wed, 18 Apr 2018 08:14:38 +0200 Subject: [PATCH 0894/1070] screenshot support --- src/vs/platform/driver/common/driver.ts | 7 +++++ .../platform/driver/electron-main/driver.ts | 12 +++++++++ test/smoke/src/application.ts | 4 +++ test/smoke/src/main.ts | 27 +++++++++++++++++-- test/smoke/src/vscode/code.ts | 5 ++++ 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index e3084f34aa8..b33f4ff2295 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -27,6 +27,7 @@ export interface IDriver { _serviceBrand: any; getWindowIds(): TPromise; + capturePage(windowId: number): TPromise; reloadWindow(windowId: number): TPromise; dispatchKeybinding(windowId: number, keybinding: string): TPromise; click(windowId: number, selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise; @@ -43,6 +44,7 @@ export interface IDriver { export interface IDriverChannel extends IChannel { call(command: 'getWindowIds'): TPromise; + call(command: 'capturePage'): TPromise; call(command: 'reloadWindow', arg: number): TPromise; call(command: 'dispatchKeybinding', arg: [number, string]): TPromise; call(command: 'click', arg: [number, string, number | undefined, number | undefined]): TPromise; @@ -64,6 +66,7 @@ export class DriverChannel implements IDriverChannel { call(command: string, arg?: any): TPromise { switch (command) { case 'getWindowIds': return this.driver.getWindowIds(); + case 'capturePage': return this.driver.capturePage(arg); case 'reloadWindow': return this.driver.reloadWindow(arg); case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg[0], arg[1]); case 'click': return this.driver.click(arg[0], arg[1], arg[2], arg[3]); @@ -91,6 +94,10 @@ export class DriverChannelClient implements IDriver { return this.channel.call('getWindowIds'); } + capturePage(windowId: number): TPromise { + return this.channel.call('capturePage', windowId); + } + reloadWindow(windowId: number): TPromise { return this.channel.call('reloadWindow', windowId); } diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index 858618480d1..d5502509ec5 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -20,6 +20,7 @@ import { Emitter, toPromise } from 'vs/base/common/event'; // TODO@joao: bad layering! import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; import { ScanCodeBinding } from 'vs/workbench/services/keybinding/common/scanCode'; +import { NativeImage } from 'electron'; class WindowRouter implements IClientRouter { @@ -63,6 +64,17 @@ export class Driver implements IDriver, IWindowDriverRegistry { .filter(id => this.registeredWindowIds.has(id) && !this.reloadingWindowIds.has(id)); } + async capturePage(windowId: number): TPromise { + await this.whenUnfrozen(windowId); + + const window = this.windowsService.getWindowById(windowId); + const webContents = window.win.webContents; + const image = await new Promise(c => webContents.capturePage(c)); + const buffer = image.toPNG(); + + return buffer.toString('base64'); + } + async reloadWindow(windowId: number): TPromise { await this.whenUnfrozen(windowId); diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 76e7dd417f4..030c36e1d50 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -93,6 +93,10 @@ export class Application { } } + async capturePage(): Promise { + return this.code.capturePage(); + } + private async startApplication(workspaceOrFolder: string, extraArgs: string[] = []): Promise { this._code = await spawn({ codePath: this.options.codePath, diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index c73fd841400..55039581029 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -38,7 +38,8 @@ const opts = minimist(args, { 'stable-build', 'wait-time', 'test-repo', - 'keybindings' + 'keybindings', + 'screenshots' ], boolean: [ 'verbose' @@ -55,6 +56,12 @@ const keybindingsPath = path.join(testDataPath, 'keybindings.json'); const extensionsPath = path.join(testDataPath, 'extensions-dir'); mkdirp.sync(extensionsPath); +const screenshotsPath = opts.screenshots ? path.resolve(opts.screenshots) : null; + +if (screenshotsPath) { + mkdirp.sync(screenshotsPath); +} + function fail(errorMessage): void { console.error(errorMessage); process.exit(1); @@ -256,7 +263,7 @@ describe('Data Migration', () => { setupDataMigrationTests(userDataDir, createApp); }); -describe('Everything Else', () => { +describe('Test', () => { before(async function () { const app = createApp(quality); await app!.start(); @@ -267,6 +274,22 @@ describe('Everything Else', () => { await this.app.stop(); }); + if (screenshotsPath) { + afterEach(async function () { + if (this.currentTest.state !== 'failed') { + return; + } + + const app = this.app as Application; + const raw = await app.capturePage(); + const buffer = new Buffer(raw, 'base64'); + + const name = this.currentTest.fullTitle().replace(/[^a-z0-9\-]/ig, '_'); + const screenshotPath = path.join(screenshotsPath, `${name}.png`); + fs.writeFileSync(screenshotPath, buffer); + }); + } + setupDataLossTests(); setupDataExplorerTests(); setupDataPreferencesTests(); diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index 14ee5c4a51b..b4415b84384 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -202,6 +202,11 @@ export class Code { } } + async capturePage(): Promise { + const windowId = await this.getActiveWindowId(); + return await this.driver.capturePage(windowId); + } + async waitForWindowIds(fn: (windowIds: number[]) => boolean): Promise { await poll(() => this.driver.getWindowIds(), fn, `get window ids`); } From 315d6842eb79a191f5c75d94e596d151276eddfb Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 08:18:49 +0200 Subject: [PATCH 0895/1070] publish screenshots in TFS --- build/tfs/continuous-build.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 7e75b568ede..ba2b15ea7f4 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -19,8 +19,13 @@ phases: - powershell: | .\scripts\test.bat --tfs .\scripts\test-integration.bat - yarn smoketest + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\screenshots" name: test + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' + ArtifactName: Screenshots + publishLocation: Container - phase: Linux queue: Hosted Linux Preview @@ -75,5 +80,10 @@ phases: - script: | ./scripts/test.sh --tfs ./scripts/test-integration.sh - yarn smoketest + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/screenshots" name: test + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' + ArtifactName: Screenshots + publishLocation: Container From 7dd11a0c955c3bfd79c0babc697b178f105ff399 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 08:59:47 +0200 Subject: [PATCH 0896/1070] publish screenshots --- build/tfs/continuous-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index ba2b15ea7f4..0de0b63b073 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -26,6 +26,7 @@ phases: PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' ArtifactName: Screenshots publishLocation: Container + condition: succeededOrFailed() - phase: Linux queue: Hosted Linux Preview @@ -87,3 +88,4 @@ phases: PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' ArtifactName: Screenshots publishLocation: Container + condition: succeededOrFailed() From a502985ea44dcb731039939645fb5ce4a762ce61 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Wed, 18 Apr 2018 09:07:15 +0200 Subject: [PATCH 0897/1070] refactoring after PR review --- .../files/electron-browser/fileActions.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 3927971926e..d7a91b53a7a 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1357,16 +1357,16 @@ export function validateFileName(parent: ExplorerItem, name: string, allowOverwr } const names: string[] = name.split(/[\\/]/).filter(part => !!part); - const pathMapping = mapPathsToExistingFolders(parent, names); + const analyzedPath = analyzePath(parent, names); // Do not allow to overwrite existing file - if (!allowOverwriting && pathMapping.fullPathAlreadyExists) { + if (!allowOverwriting && analyzedPath.fullPathAlreadyExists) { return nls.localize('fileNameExistsError', "A file or folder **{0}** already exists at this location. Please choose a different name.", name); } // A file must always be a leaf - if (pathMapping.lastExistingPathSegment.isFile) { - return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", pathMapping.lastExistingPathSegment.name); + if (analyzedPath.lastExistingPathSegment.isFile) { + return nls.localize('fileUsedAsFolderError', "**{0}** is a file and cannot have any descendants.", analyzedPath.lastExistingPathSegment.name); } // Invalid File name @@ -1385,16 +1385,7 @@ export function validateFileName(parent: ExplorerItem, name: string, allowOverwr return null; } - -interface IMappedPath { - fullPathAlreadyExists: boolean; - lastExistingPathSegment: { - isFile: boolean; - name: string; - }; -} - -function mapPathsToExistingFolders(parent: ExplorerItem, pathNames: string[]): IMappedPath { +function analyzePath(parent: ExplorerItem, pathNames: string[]): { fullPathAlreadyExists: boolean; lastExistingPathSegment: { isFile: boolean; name: string; } } { let lastExistingPathSegment = { isFile: false, name: '' }; for (const name of pathNames) { From d4b7153524b86de14d7e3883807d8ee81de7c177 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Wed, 18 Apr 2018 09:08:15 +0200 Subject: [PATCH 0898/1070] unit tests for multi-path validation --- .../electron-browser/explorerModel.test.ts | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts index 19cf2bf26c1..60e46754ec4 100644 --- a/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts +++ b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts @@ -194,11 +194,6 @@ suite('Files - View Model', () => { assert(validateFileName(s, '') !== null); assert(validateFileName(s, ' ') !== null); assert(validateFileName(s, 'Read Me') === null, 'name containing space'); - assert(validateFileName(s, 'foo/bar') === null); - assert(validateFileName(s, 'foo\\bar') === null); - assert(validateFileName(s, 'all/slashes/are/same') === null); - assert(validateFileName(s, 'theres/one/different\\slash') === null); - assert(validateFileName(s, '/slashAtBeginning') === null); if (isWindows) { assert(validateFileName(s, 'foo:bar') !== null); @@ -236,6 +231,38 @@ suite('Files - View Model', () => { assert(validateFileName(s, 'foo') === null); }); + test('Validate Multi-Path File Names', function () { + const d = new Date().getTime(); + const wsFolder = createStat('/', 'workspaceFolder', true, false, 8096, d); + + assert(validateFileName(wsFolder, 'foo/bar') === null); + assert(validateFileName(wsFolder, 'foo\\bar') === null); + assert(validateFileName(wsFolder, 'all/slashes/are/same') === null); + assert(validateFileName(wsFolder, 'theres/one/different\\slash') === null); + assert(validateFileName(wsFolder, '/slashAtBeginning') === null); + + // validation should detect if user tries to add a child to a file + const fileInRoot = createStat('/fileInRoot', 'fileInRoot', false, false, 8096, d); + wsFolder.addChild(fileInRoot); + assert(validateFileName(wsFolder, 'fileInRoot/aChild') !== null); + wsFolder.removeChild(fileInRoot); + + // attempting to add a child to a deeply nested file + const s1 = createStat('/path', 'path', true, false, 8096, d); + const s2 = createStat('/path/to', 'to', true, false, 8096, d); + const s3 = createStat('/path/to/stat', 'stat', true, false, 8096, d); + wsFolder.addChild(s1); + s1.addChild(s2); + s2.addChild(s3); + const fileDeeplyNested = createStat('/path/to/stat/fileNested', 'fileNested', false, false, 8096, d); + s3.addChild(fileDeeplyNested); + assert(validateFileName(wsFolder, '/path/to/stat/fileNested/aChild') !== null); + + // detect if path already exists + assert(validateFileName(wsFolder, '/path/to/stat/fileNested') !== null); + assert(validateFileName(wsFolder, '/path/to/stat/') !== null); + }); + test('Merge Local with Disk', function () { const d = new Date().toUTCString(); From 34c74d048e7d6b023f1668b3edd1d13aac2ff235 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Wed, 18 Apr 2018 10:49:15 +0200 Subject: [PATCH 0899/1070] add validation check to allow only relative paths - prevents weird message in inputbox --- src/vs/workbench/parts/files/electron-browser/fileActions.ts | 5 +++++ .../parts/files/test/electron-browser/explorerModel.test.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index d70d714edc0..2deaec06f71 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1355,6 +1355,11 @@ export function validateFileName(parent: ExplorerItem, name: string, allowOverwr return nls.localize('emptyFileNameError', "A file or folder name must be provided."); } + // Relative paths only + if (name[0] === '/' || name[0] === '\\') { + return nls.localize('fileNameStartsWithSlashError', "A file or folder name cannot start with a slash."); + } + const names: string[] = name.split(/[\\/]/).filter(part => !!part); // Do not allow to overwrite existing file diff --git a/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts index 19cf2bf26c1..16c4930e66b 100644 --- a/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts +++ b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts @@ -198,7 +198,7 @@ suite('Files - View Model', () => { assert(validateFileName(s, 'foo\\bar') === null); assert(validateFileName(s, 'all/slashes/are/same') === null); assert(validateFileName(s, 'theres/one/different\\slash') === null); - assert(validateFileName(s, '/slashAtBeginning') === null); + assert(validateFileName(s, '/slashAtBeginning') !== null); if (isWindows) { assert(validateFileName(s, 'foo:bar') !== null); From 857fd206b4d959ccc4fa3b3088ee718fd274ef6a Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Wed, 18 Apr 2018 11:51:17 +0200 Subject: [PATCH 0900/1070] improves validation on rename --- .../workbench/parts/files/electron-browser/fileActions.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index d70d714edc0..bb8899f321f 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -161,6 +161,14 @@ class TriggerRenameFileAction extends BaseFileAction { } public validateFileName(parent: ExplorerItem, name: string): string { + const names: string[] = name.split(/[\\/]/).filter(part => !!part); + if (names.length > 1) { // error only occurs on multi-path + const comparer = isLinux ? strings.compare : strings.compareIgnoreCase; + if (comparer(names[0], this.element.name) === 0) { + return nls.localize('renameWhenSourcePathIsParentOfTargetError', "Cannot move/copy when source path is parent of target path."); + } + } + return this.renameAction.validateFileName(this.element.parent, name); } From 091b44540602eadca7dc724523bb0baf9a213b08 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 11:53:40 +0200 Subject: [PATCH 0901/1070] fixes #48109 --- src/vs/platform/driver/common/driver.ts | 14 +++++++++ .../driver/electron-browser/driver.ts | 25 +++++++++++++-- .../platform/driver/electron-main/driver.ts | 5 +++ .../smoke/src/areas/terminal/terminal.test.ts | 26 ++++++++++++++++ test/smoke/src/areas/terminal/terminal.ts | 31 +++++++++++++++++++ test/smoke/src/areas/workbench/workbench.ts | 3 ++ test/smoke/src/main.ts | 2 ++ test/smoke/src/vscode/code.ts | 10 ++++++ 8 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 test/smoke/src/areas/terminal/terminal.test.ts create mode 100644 test/smoke/src/areas/terminal/terminal.ts diff --git a/src/vs/platform/driver/common/driver.ts b/src/vs/platform/driver/common/driver.ts index b33f4ff2295..b40326a162b 100644 --- a/src/vs/platform/driver/common/driver.ts +++ b/src/vs/platform/driver/common/driver.ts @@ -34,6 +34,7 @@ export interface IDriver { doubleClick(windowId: number, selector: string): TPromise; move(windowId: number, selector: string): TPromise; setValue(windowId: number, selector: string, text: string): TPromise; + paste(windowId: number, selector: string, text: string): TPromise; getTitle(windowId: number): TPromise; isActiveElement(windowId: number, selector: string): TPromise; getElements(windowId: number, selector: string, recursive?: boolean): TPromise; @@ -51,6 +52,7 @@ export interface IDriverChannel extends IChannel { call(command: 'doubleClick', arg: [number, string]): TPromise; call(command: 'move', arg: [number, string]): TPromise; call(command: 'setValue', arg: [number, string, string]): TPromise; + call(command: 'paste', arg: [number, string, string]): TPromise; call(command: 'getTitle', arg: [number]): TPromise; call(command: 'isActiveElement', arg: [number, string]): TPromise; call(command: 'getElements', arg: [number, string, boolean]): TPromise; @@ -73,6 +75,7 @@ export class DriverChannel implements IDriverChannel { case 'doubleClick': return this.driver.doubleClick(arg[0], arg[1]); case 'move': return this.driver.move(arg[0], arg[1]); case 'setValue': return this.driver.setValue(arg[0], arg[1], arg[2]); + case 'paste': return this.driver.paste(arg[0], arg[1], arg[2]); case 'getTitle': return this.driver.getTitle(arg[0]); case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]); case 'getElements': return this.driver.getElements(arg[0], arg[1], arg[2]); @@ -122,6 +125,10 @@ export class DriverChannelClient implements IDriver { return this.channel.call('setValue', [windowId, selector, text]); } + paste(windowId: number, selector: string, text: string): TPromise { + return this.channel.call('paste', [windowId, selector, text]); + } + getTitle(windowId: number): TPromise { return this.channel.call('getTitle', [windowId]); } @@ -188,6 +195,7 @@ export interface IWindowDriver { doubleClick(selector: string): TPromise; move(selector: string): TPromise; setValue(selector: string, text: string): TPromise; + paste(selector: string, text: string): TPromise; getTitle(): TPromise; isActiveElement(selector: string): TPromise; getElements(selector: string, recursive: boolean): TPromise; @@ -200,6 +208,7 @@ export interface IWindowDriverChannel extends IChannel { call(command: 'doubleClick', arg: string): TPromise; call(command: 'move', arg: string): TPromise; call(command: 'setValue', arg: [string, string]): TPromise; + call(command: 'paste', arg: [string, string]): TPromise; call(command: 'getTitle'): TPromise; call(command: 'isActiveElement', arg: string): TPromise; call(command: 'getElements', arg: [string, boolean]): TPromise; @@ -218,6 +227,7 @@ export class WindowDriverChannel implements IWindowDriverChannel { case 'doubleClick': return this.driver.doubleClick(arg); case 'move': return this.driver.move(arg); case 'setValue': return this.driver.setValue(arg[0], arg[1]); + case 'paste': return this.driver.paste(arg[0], arg[1]); case 'getTitle': return this.driver.getTitle(); case 'isActiveElement': return this.driver.isActiveElement(arg); case 'getElements': return this.driver.getElements(arg[0], arg[1]); @@ -251,6 +261,10 @@ export class WindowDriverChannelClient implements IWindowDriver { return this.channel.call('setValue', [selector, text]); } + paste(selector: string, text: string): TPromise { + return this.channel.call('paste', [selector, text]); + } + getTitle(): TPromise { return this.channel.call('getTitle'); } diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index c762963dddc..60bce74b113 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -106,6 +106,21 @@ class WindowDriver implements IWindowDriver { inputElement.dispatchEvent(event); } + async paste(selector: string, text: string): TPromise { + const element = document.querySelector(selector); + + if (!element) { + throw new Error('Element not found'); + } + + const inputElement = element as HTMLInputElement; + const clipboardData = new DataTransfer(); + clipboardData.setData('text/plain', text); + const event = new ClipboardEvent('paste', { clipboardData } as any); + + inputElement.dispatchEvent(event); + } + async getTitle(): TPromise { return document.title; } @@ -154,12 +169,16 @@ class WindowDriver implements IWindowDriver { throw new Error('Terminal not found: ' + selector); } - const buffer = (element as any).xterm.buffer; + const xterm = (element as any).xterm; + + if (!xterm) { + throw new Error('Xterm not found: ' + selector); + } const lines: string[] = []; - for (let i = 0; i < buffer.lines.length; i++) { - lines.push(buffer.translateBufferLineToString(i, true)); + for (let i = 0; i < xterm.buffer.lines.length; i++) { + lines.push(xterm.buffer.translateBufferLineToString(i, true)); } return lines; diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index d5502509ec5..badeeab4a1f 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -155,6 +155,11 @@ export class Driver implements IDriver, IWindowDriverRegistry { return windowDriver.setValue(selector, text); } + async paste(windowId: number, selector: string, text: string): TPromise { + const windowDriver = await this.getWindowDriver(windowId); + return windowDriver.paste(selector, text); + } + async getTitle(windowId: number): TPromise { const windowDriver = await this.getWindowDriver(windowId); return windowDriver.getTitle(); diff --git a/test/smoke/src/areas/terminal/terminal.test.ts b/test/smoke/src/areas/terminal/terminal.test.ts new file mode 100644 index 00000000000..4c8c27e3794 --- /dev/null +++ b/test/smoke/src/areas/terminal/terminal.test.ts @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Application } from '../../application'; + +export function setup() { + describe('Terminal', () => { + it(`opens terminal, runs 'echo' and verifies the output`, async function () { + const app = this.app as Application; + + const expected = new Date().getTime().toString(); + await app.workbench.terminal.showTerminal(); + await app.workbench.terminal.runCommand(`echo ${expected}`); + await app.workbench.terminal.waitForTerminalText(terminalText => { + for (let index = terminalText.length - 2; index >= 0; index--) { + if (!!terminalText[index] && terminalText[index].trim() === expected) { + return true; + } + } + return false; + }); + }); + }); +} \ No newline at end of file diff --git a/test/smoke/src/areas/terminal/terminal.ts b/test/smoke/src/areas/terminal/terminal.ts new file mode 100644 index 00000000000..6e5e02735ca --- /dev/null +++ b/test/smoke/src/areas/terminal/terminal.ts @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Code } from '../../vscode/code'; +import { Commands } from '../workbench/workbench'; + +const PANEL_SELECTOR = 'div[id="workbench.panel.terminal"]'; +const XTERM_SELECTOR = `${PANEL_SELECTOR} .terminal-wrapper`; +const XTERM_TEXTAREA = `${XTERM_SELECTOR} textarea.xterm-helper-textarea`; + +export class Terminal { + + constructor(private code: Code, private commands: Commands) { } + + async showTerminal(): Promise { + await this.commands.runCommand('workbench.action.terminal.toggleTerminal'); + await this.code.waitForActiveElement(XTERM_TEXTAREA); + await this.code.waitForTerminalBuffer(XTERM_SELECTOR, lines => lines.some(line => line.length > 0)); + } + + async runCommand(commandText: string): Promise { + await this.code.waitForPaste(XTERM_TEXTAREA, commandText); + await this.code.dispatchKeybinding('enter'); + } + + async waitForTerminalText(accept: (buffer: string[]) => boolean): Promise { + await this.code.waitForTerminalBuffer(XTERM_SELECTOR, accept); + } +} \ No newline at end of file diff --git a/test/smoke/src/areas/workbench/workbench.ts b/test/smoke/src/areas/workbench/workbench.ts index 7d1e2fa0182..5ea8b5a7f9a 100644 --- a/test/smoke/src/areas/workbench/workbench.ts +++ b/test/smoke/src/areas/workbench/workbench.ts @@ -17,6 +17,7 @@ import { SettingsEditor } from '../preferences/settings'; import { KeybindingsEditor } from '../preferences/keybindings'; import { Editors } from '../editor/editors'; import { Code } from '../../vscode/code'; +import { Terminal } from '../terminal/terminal'; export interface Commands { runCommand(command: string): Promise; @@ -37,6 +38,7 @@ export class Workbench implements Commands { readonly problems: Problems; readonly settingsEditor: SettingsEditor; readonly keybindingsEditor: KeybindingsEditor; + readonly terminal: Terminal; constructor(private code: Code, private keybindings: any[], userDataPath: string) { this.editors = new Editors(code, this); @@ -52,6 +54,7 @@ export class Workbench implements Commands { this.problems = new Problems(code, this); this.settingsEditor = new SettingsEditor(code, userDataPath, this, this.editors, this.editor); this.keybindingsEditor = new KeybindingsEditor(code, this); + this.terminal = new Terminal(code, this); } /** diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index 55039581029..ab2586f5c9e 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -24,6 +24,7 @@ import { setup as setupDataDebugTests } from './areas/debug/debug.test'; import { setup as setupDataGitTests } from './areas/git/git.test'; import { setup as setupDataStatusbarTests } from './areas/statusbar/statusbar.test'; import { setup as setupDataExtensionTests } from './areas/extensions/extensions.test'; +import { setup as setupTerminalTests } from './areas/terminal/terminal.test'; import { setup as setupDataMultirootTests } from './areas/multiroot/multiroot.test'; import { setup as setupDataLocalizationTests } from './areas/workbench/localization.test'; @@ -300,6 +301,7 @@ describe('Test', () => { setupDataGitTests(); setupDataStatusbarTests(); setupDataExtensionTests(); + setupTerminalTests(); setupDataMultirootTests(); setupDataLocalizationTests(); }); diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index b4415b84384..039bd05d4a2 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -247,6 +247,11 @@ export class Code { await poll(() => this.driver.setValue(windowId, selector, value), () => true, `set value '${selector}'`); } + async waitForPaste(selector: string, value: string): Promise { + const windowId = await this.getActiveWindowId(); + await poll(() => this.driver.paste(windowId, selector, value), () => true, `paste '${selector}'`); + } + async waitForElements(selector: string, recursive: boolean, accept: (result: IElement[]) => boolean = result => result.length > 0): Promise { const windowId = await this.getActiveWindowId(); return await poll(() => this.driver.getElements(windowId, selector, recursive), accept, `get elements '${selector}'`); @@ -272,6 +277,11 @@ export class Code { await poll(() => this.driver.typeInEditor(windowId, selector, text), () => true, `type in editor '${selector}'`); } + async waitForTerminalBuffer(selector: string, accept: (result: string[]) => boolean): Promise { + const windowId = await this.getActiveWindowId(); + await poll(() => this.driver.getTerminalBuffer(windowId, selector), accept, `get terminal buffer '${selector}'`); + } + private async getActiveWindowId(): Promise { if (typeof this._activeWindowId !== 'number') { const windows = await this.driver.getWindowIds(); From 6447b567c4c90f931c672a2d5cc421f0818fd0ac Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 12:01:17 +0200 Subject: [PATCH 0902/1070] improve smoketest docs --- test/smoke/README.md | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/test/smoke/README.md b/test/smoke/README.md index 8856e454400..0647f5b9bbd 100644 --- a/test/smoke/README.md +++ b/test/smoke/README.md @@ -4,43 +4,26 @@ ``` # Dev -npm run smoketest +yarn smoketest -# Specific build -npm run smoketest -- --build "path/to/code" - -# Data Migration tests -npm run smoketest -- --build "path/to/code-insiders" --stable-build "path/to/code" +# Build +yarn smoketest --build "path/to/code" ``` -The script calls mocha, so all mocha arguments should work fine. For example, use `-f Git` to only run the `Git` tests. +The script calls mocha, so all mocha arguments should work fine. For example, use `-f Git` to filter all tests except the `Git` tests. -By default, screenshots are not captured. To run tests with screenshots use the argument `--screenshots`. +A `--verbose` flag can be used to log to the console all the low level driver calls make to Code. + +Screenshots can be captured when tests fail. In order to get them,you need to use the argument `--screenshots SCREENSHOT_DIR`. ## Pitfalls -- Beware of **state**. The tests within a single suite will share the same state. +- Beware of workbench **state**. The tests within a single suite will share the same state. - Beware of **singletons**. This evil can, and will, manifest itself under the form of FS paths, TCP ports, IPC handles. Whenever writing a test, or setting up more smoke test architecture, make sure it can run simultaneously with any other tests and even itself. All test suites should be able to run many times in parallel. - Beware of **focus**. **Never** depend on DOM elements having focus using `.focused` classes or `:focus` pseudo-classes, since they will lose that state as soon as another window appears on top of the running VS Code window. A safe approach which avoids this problem is to use the `waitForActiveElement` API. Many tests use this whenever they need to wait for a specific element to _have focus_. -- Beware of **timing**. You need to read from or write to the DOM... yeah I know. But is it the right time to do that? Can you 100% promise that that `input` box will be visible and in the DOM at this point in time? Or are you just hoping that it will be so? Every time you want to interact with the DOM, be absolutely sure that you can. Eg. just because you triggered Quick Open, it doesn't mean that it's open; you must wait for the widget to be in the DOM and for its input field to be the active element. +- Beware of **timing**. You need to read from or write to the DOM... but is it the right time to do that? Can you 100% guarantee that that `input` box will be visible at that point in time? Or are you just hoping that it will be so? Hope is your worst enemy in UI tests. Example: just because you triggered Quick Open with `F1`, it doesn't mean that it's open and you can just start typing; you must first wait for the input element to be in the DOM as well as be the current active element. -- Beware of **waiting**. **Never** wait longer than a couple of seconds for anything, unless it's justified. Think of it as a human using Code. Would a human take 10 minutes to run through the Search viewlet smoke test? Then, the computer should even be faster. **Don't** use `setTimeout` just because. Think about what you should wait for in the DOM to be ready, then wait for that instead. - -## Common Issues - -### Certain keys don't appear in input boxes (eg: Space) - -This is a **waiting** issue. Everytime you send keys to Code, you must be aware that the keybinding service can handle them. Even if you're sure that input box is focused. - -Here's an example: when opening quick open, focus goes from its list to its input. We used to simply wait for the input to have focus and then send some text to be typed, like `Workbench: Show Editor`; yet, only `Workbench:ShowEditor` would be rendered in the input box. This happened due to the fact that the [`ListService` takes 50ms to unset the context key which indicates a list is focused](https://github.com/Microsoft/vscode/blob/c8dee4c016d3a3d475011106e04d8e394d9f138c/src/vs/platform/list/browser/listService.ts#L59). The fix was to [wait 50ms as well on the smoke test](https://github.com/Microsoft/vscode/blob/b82fa8dcb06bbf9c85c1502d0d43322e2e9d1a59/test/smoke/src/areas/quickopen/quickopen.ts#L65). - -### I type in a Monaco editor instance, but the text doesn't appear to be there - -This is a **waiting** issue. When you type in a Monaco editor instance, you're really typing in a `textarea`. The `textarea` is then polled for its contents, then the editor model gets updated and finally the editor view gets updated. It's a good idea to always wait for the text to appear rendered in the editor after you type in it. - -### I type in a Monaco editor instance, but the text appears scrambled - -This is an issue which is **not yet fixed**. Unfortunately this seems to happen whenever the CPU load of the system is high. Rerunning the test will often result in a successful outcome. \ No newline at end of file +- Beware of **waiting**. **Never** wait longer than a couple of seconds for anything, unless it's justified. Think of it as a human using Code. Would a human take 10 minutes to run through the Search viewlet smoke test? Then, the computer should even be faster. **Don't** use `setTimeout` just because. Think about what you should wait for in the DOM to be ready and wait for that instead. From c72b5532e2ccbad3df707e8c1a200584c6c609c7 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Apr 2018 09:37:37 +0200 Subject: [PATCH 0903/1070] add explicit function to register v1 file system provider, #47475 --- src/vs/vscode.proposed.d.ts | 1 + src/vs/workbench/api/node/extHost.api.impl.ts | 3 +++ src/vs/workbench/api/node/extHostFileSystem.ts | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 454722f40c5..3d49702be68 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -304,6 +304,7 @@ declare module 'vscode' { export namespace workspace { export function registerFileSystemProvider(scheme: string, provider: FileSystemProvider, newProvider?: FileSystemProvider2): Disposable; + export function registerDeprecatedFileSystemProvider(scheme: string, provider: FileSystemProvider): Disposable; } //#endregion diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 4e4583d1586..dd52d40145b 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -569,6 +569,9 @@ export function createApiFactory( registerFileSystemProvider: proposedApiFunction(extension, (scheme, provider, newProvider?) => { return extHostFileSystem.registerFileSystemProvider(scheme, provider, newProvider); }), + registerDeprecatedFileSystemProvider: proposedApiFunction(extension, (scheme, provider) => { + return extHostFileSystem.registerDeprecatedFileSystemProvider(scheme, provider); + }), registerSearchProvider: proposedApiFunction(extension, (scheme, provider) => { return extHostSearch.registerSearchProvider(scheme, provider); }) diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index e6114f770a4..43612f7ab34 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -165,6 +165,10 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { extHostLanguageFeatures.registerDocumentLinkProvider('*', this._linkProvider); } + registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider) { + return this.registerFileSystemProvider(scheme, null, new FileSystemProviderShim(provider)); + } + registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { if (newProvider && newProvider._version === 6) { return this._doRegisterFileSystemProvider(scheme, newProvider); From 034b377306991a61ede5ed8aeb73b0ab3d055d8a Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Apr 2018 12:01:52 +0200 Subject: [PATCH 0904/1070] first cut of explict watch, #47475 --- src/vs/platform/files/common/files.ts | 8 +- src/vs/vscode.proposed.d.ts | 15 +- .../electron-browser/mainThreadFileSystem.ts | 14 +- src/vs/workbench/api/node/extHost.protocol.ts | 7 +- .../workbench/api/node/extHostFileSystem.ts | 36 +++-- .../files/electron-browser/fileService.ts | 2 +- .../electron-browser/remoteFileService.ts | 133 +++++++++++++++--- 7 files changed, 177 insertions(+), 38 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index d859f958b2e..cab1972b2e0 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -188,8 +188,14 @@ export interface IStat { type: FileType2; } +export interface IWatchOptions { + recursive?: boolean; + exclude?: string[]; +} + export interface IFileSystemProviderBase { - onDidChange: Event; + onDidChangeFile: Event; + watch(resource: URI, opts: IWatchOptions): IDisposable; stat(resource: URI): TPromise; rename(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise; mkdir(resource: URI): TPromise; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 3d49702be68..6bf0f87445f 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -232,12 +232,21 @@ declare module 'vscode' { // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 6; + _version: 7; /** - * An event to signal that a resource has been created, changed, or deleted. + * An event to signal that a resource has been created, changed, or deleted. This + * event should fire for resources that are being [watched](#FileSystemProvider2.watch) + * by clients of this provider. */ - readonly onDidChange: Event; + readonly onDidChangeFile: Event; + + /** + * Subscribe to events in the file or folder denoted by `uri`. + * @param uri + * @param options + */ + watch(uri: Uri, options: { recursive?: boolean; excludes?: string[] }): Disposable; /** * Retrieve metadata about a file. Must throw an [`ENOENT`](#FileError.ENOENT)-error diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index d48c4b7ba43..0a9f3485f76 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat } from 'vs/platform/files/common/files'; +import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @@ -50,7 +50,7 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP private readonly _onDidChange = new Emitter(); private readonly _registrations: IDisposable[]; - readonly onDidChange: Event = this._onDidChange.event; + readonly onDidChangeFile: Event = this._onDidChange.event; constructor( fileService: IFileService, @@ -66,6 +66,16 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP this._onDidChange.dispose(); } + watch(resource: URI, opts: IWatchOptions) { + const session = Math.random(); + this._proxy.$watch(this._handle, session, resource, opts); + return { + dispose: () => { + this._proxy.$unwatch(this._handle, session); + } + }; + } + $onFileSystemChange(changes: IFileChangeDto[]): void { this._onDidChange.fire(changes.map(RemoteFileSystemProvider._createFileChange)); } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 37f274df23a..bec0acdb06e 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -42,7 +42,7 @@ import { ITreeItem } from 'vs/workbench/common/views'; import { ThemeColor } from 'vs/platform/theme/common/themeService'; import { IDisposable } from 'vs/base/common/lifecycle'; import { SerializedError } from 'vs/base/common/errors'; -import { IStat, FileChangeType, FileOpenFlags } from 'vs/platform/files/common/files'; +import { IStat, FileChangeType, FileOpenFlags, IWatchOptions } from 'vs/platform/files/common/files'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration'; import { ISingleEditOperation } from 'vs/editor/common/model'; @@ -569,15 +569,14 @@ export interface ExtHostWorkspaceShape { export interface ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): TPromise; - $readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise; $writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise; - $rename(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise; $mkdir(handle: number, resource: UriComponents): TPromise; $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; - $delete(handle: number, resource: UriComponents): TPromise; + $watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void; + $unwatch(handle: number, session: number): void; } export interface ExtHostSearchShape { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 43612f7ab34..935c24b8365 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -58,18 +58,24 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 6; + _version: 7 = 7; - onDidChange: vscode.Event; + onDidChangeFile: vscode.Event; constructor(private readonly _delegate: vscode.FileSystemProvider) { if (!this._delegate.onDidChange) { - this.onDidChange = Event.None; + this.onDidChangeFile = Event.None; } else { - this.onDidChange = mapEvent(this._delegate.onDidChange, old => old.map(FileSystemProviderShim._modernizeFileChange)); + this.onDidChangeFile = mapEvent(this._delegate.onDidChange, old => old.map(FileSystemProviderShim._modernizeFileChange)); } } + watch(uri: vscode.Uri, options: {}): vscode.Disposable { + // does nothing because in the old API there was no notion of + // watch and provider decide what file events to generate... + return { dispose() { } }; + } + stat(resource: vscode.Uri): Thenable { return this._delegate.stat(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } @@ -157,6 +163,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { private readonly _proxy: MainThreadFileSystemShape; private readonly _fsProvider = new Map(); private readonly _linkProvider = new FsLinkProvider(); + private readonly _watches = new Map(); private _handlePool: number = 0; @@ -170,12 +177,12 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 6) { + if (newProvider && newProvider._version === 7) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); } else { - throw new Error('IGNORED both provider'); + throw new Error('FAILED to register file system provider, the new provider does not meet the version-constraint and there is no fallback, old provider'); } } @@ -185,8 +192,8 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { this._fsProvider.set(handle, provider); this._proxy.$registerFileSystemProvider(handle, scheme); let reg: IDisposable; - if (provider.onDidChange) { - reg = provider.onDidChange(event => { + if (provider.onDidChangeFile) { + reg = provider.onDidChangeFile(event => { let newEvent = event.map(e => { let { uri: resource, type } = e; let newType: files.FileChangeType; @@ -243,4 +250,17 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $mkdir(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); } + $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void { + asWinJsPromise(token => { + let subscription = this._fsProvider.get(handle).watch(URI.revive(resource), opts); + this._watches.set(session, subscription); + }); + } + $unwatch(handle: number, session: number): void { + let subscription = this._watches.get(session); + if (subscription) { + subscription.dispose(); + this._watches.delete(session); + } + } } diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index df15aa6abad..b6619cd0664 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -93,7 +93,7 @@ export class FileService implements IFileService { protected readonly _onFileChanges: Emitter; protected readonly _onAfterOperation: Emitter; - private toDispose: IDisposable[]; + protected toDispose: IDisposable[]; private activeWorkspaceFileChangeWatcher: IDisposable; private activeFileChangesWatchers: ResourceMap; diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 7728937a544..418cade8906 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -4,25 +4,25 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import URI from 'vs/base/common/uri'; -import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; -import { IContent, IStreamContent, IFileStat, IResolveContentOptions, IUpdateContentOptions, IResolveFileOptions, IResolveFileResult, FileOperationEvent, FileOperation, IFileSystemProvider, IStat, FileType2, FileChangesEvent, ICreateFileOptions, FileOperationError, FileOperationResult, ITextSnapshot, StringSnapshot, FileOpenFlags, FileError } from 'vs/platform/files/common/files'; -import { TPromise } from 'vs/base/common/winjs.base'; import { posix } from 'path'; -import { IDisposable } from 'vs/base/common/lifecycle'; -import { isFalsyOrEmpty, distinct, flatten } from 'vs/base/common/arrays'; -import { Schemas } from 'vs/base/common/network'; -import { toDecodeStream, IDecodeStreamOptions, decodeStream } from 'vs/base/node/encoding'; +import { distinct, flatten, isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TernarySearchTree } from 'vs/base/common/map'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; -import { IStorageService } from 'vs/platform/storage/common/storage'; +import { Schemas } from 'vs/base/common/network'; +import URI from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { IDecodeStreamOptions, decodeStream, toDecodeStream } from 'vs/base/node/encoding'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { localize } from 'vs/nls'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { FileChangesEvent, FileError, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot } from 'vs/platform/files/common/files'; +import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IStorageService } from 'vs/platform/storage/common/storage'; +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { FileService } from 'vs/workbench/services/files/electron-browser/fileService'; import { createReadableOfProvider, createReadableOfSnapshot, createWritableOfProvider } from 'vs/workbench/services/files/electron-browser/streams'; function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise { @@ -72,6 +72,77 @@ export function toDeepIFileStat(provider: IFileSystemProvider, tuple: [URI, ISta }); } +class WorkspaceWatchLogic { + + private _disposables: IDisposable[] = []; + private _watches = new Map(); + + constructor( + private _fileService: RemoteFileService, + @IConfigurationService private _configurationService: IConfigurationService, + @IWorkspaceContextService private _contextService: IWorkspaceContextService, + ) { + this._refresh(); + + this._disposables.push(this._contextService.onDidChangeWorkspaceFolders(e => { + for (const removed of e.removed) { + this._unwatchWorkspace(removed.uri); + } + for (const added of e.added) { + this._watchWorkspace(added.uri); + } + })); + this._disposables.push(this._contextService.onDidChangeWorkbenchState(e => { + this._refresh(); + })); + this._disposables.push(this._configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration('files.watcherExclude')) { + this._refresh(); + } + })); + } + + dispose(): void { + this._unwatchWorkspaces(); + this._disposables = dispose(this._disposables); + } + + private _refresh(): void { + this._unwatchWorkspaces(); + for (const folder of this._contextService.getWorkspace().folders) { + if (folder.uri.scheme !== Schemas.file) { + this._watchWorkspace(folder.uri); + } + } + } + + private _watchWorkspace(resource: URI) { + let exclude: string[] = []; + let config = this._configurationService.getValue({ resource }); + if (config.files && config.files.watcherExclude) { + for (const key in config.files.watcherExclude) { + if (config.files.watcherExclude[key] === true) { + exclude.push(key); + } + } + } + this._watches.set(resource.toString(), resource); + this._fileService.watchFileChanges(resource, { recursive: true, exclude }); + } + + private _unwatchWorkspace(resource: URI) { + if (this._watches.has(resource.toString())) { + this._fileService.unwatchFileChanges(resource); + this._watches.delete(resource.toString()); + } + } + + private _unwatchWorkspaces() { + this._watches.forEach(uri => this._fileService.unwatchFileChanges(uri)); + this._watches.clear(); + } +} + export class RemoteFileService extends FileService { private readonly _provider = new Map(); @@ -98,6 +169,7 @@ export class RemoteFileService extends FileService { ); this._supportedSchemes = JSON.parse(this._storageService.get('remote_schemes', undefined, '[]')); + this.toDispose.push(new WorkspaceWatchLogic(this, configurationService, contextService)); } registerProvider(authority: string, provider: IFileSystemProvider): IDisposable { @@ -109,7 +181,7 @@ export class RemoteFileService extends FileService { this._storageService.store('remote_schemes', JSON.stringify(distinct(this._supportedSchemes))); this._provider.set(authority, provider); - const reg = provider.onDidChange(changes => { + const reg = provider.onDidChangeFile(changes => { // forward change events this._onFileChanges.fire(new FileChangesEvent(changes)); }); @@ -480,15 +552,38 @@ export class RemoteFileService extends FileService { }); } - // TODO@Joh - file watching on demand! - public watchFileChanges(resource: URI): void { + private _activeWatches = new Map, count: number }>(); + + public watchFileChanges(resource: URI, opts: { recursive?: boolean, exclude?: string[] } = {}): void { if (resource.scheme === Schemas.file) { - super.watchFileChanges(resource); + return super.watchFileChanges(resource); } + + const key = resource.toString(); + const entry = this._activeWatches.get(key); + if (entry) { + entry.count += 1; + return; + } + + this._activeWatches.set(key, { + count: 1, + unwatch: this._withProvider(resource).then(provider => { + return provider.watch(resource, opts); + }, err => { + return { dispose() { } }; + }) + }); } + public unwatchFileChanges(resource: URI): void { if (resource.scheme === Schemas.file) { - super.unwatchFileChanges(resource); + return super.unwatchFileChanges(resource); + } + let entry = this._activeWatches.get(resource.toString()); + if (entry && --entry.count === 0) { + entry.unwatch.then(dispose); + this._activeWatches.delete(resource.toString()); } } } From 101c8ed9e337bc2d27ebad3e32ac71820220978d Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 12:13:27 +0200 Subject: [PATCH 0905/1070] Add scheme transformer --- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHostLanguageFeatures.ts | 10 ++++++++++ .../electron-browser/api/extHostApiCommands.test.ts | 2 +- .../api/extHostLanguageFeatures.test.ts | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index dd52d40145b..02fe0073cfe 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -111,7 +111,7 @@ export function createApiFactory( const extHostDebugService = rpcProtocol.set(ExtHostContext.ExtHostDebugService, new ExtHostDebugService(rpcProtocol, extHostWorkspace, extensionService)); rpcProtocol.set(ExtHostContext.ExtHostConfiguration, extHostConfiguration); const extHostDiagnostics = rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, new ExtHostDiagnostics(rpcProtocol)); - const extHostLanguageFeatures = rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, new ExtHostLanguageFeatures(rpcProtocol, extHostDocuments, extHostCommands, extHostHeapService, extHostDiagnostics)); + const extHostLanguageFeatures = rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, new ExtHostLanguageFeatures(rpcProtocol, null, extHostDocuments, extHostCommands, extHostHeapService, extHostDiagnostics)); const extHostFileSystem = rpcProtocol.set(ExtHostContext.ExtHostFileSystem, new ExtHostFileSystem(rpcProtocol, extHostLanguageFeatures)); const extHostFileSystemEvent = rpcProtocol.set(ExtHostContext.ExtHostFileSystemEventService, new ExtHostFileSystemEventService()); const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, new ExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands)); diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 5e99422f862..8e0753d3df4 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -837,10 +837,15 @@ type Adapter = OutlineAdapter | CodeLensAdapter | DefinitionAdapter | HoverAdapt | SuggestAdapter | SignatureHelpAdapter | LinkProviderAdapter | ImplementationAdapter | TypeDefinitionAdapter | ColorProviderAdapter | FoldingProviderAdapter; +export interface ISchemeTransformer { + transformOutgoing(scheme: string): string; +} + export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { private static _handlePool: number = 0; + private readonly _schemeTransformer: ISchemeTransformer; private _proxy: MainThreadLanguageFeaturesShape; private _documents: ExtHostDocuments; private _commands: ExtHostCommands; @@ -850,11 +855,13 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { constructor( mainContext: IMainContext, + schemeTransformer: ISchemeTransformer, documents: ExtHostDocuments, commands: ExtHostCommands, heapMonitor: ExtHostHeapService, diagnostics: ExtHostDiagnostics ) { + this._schemeTransformer = schemeTransformer; this._proxy = mainContext.getProxy(MainContext.MainThreadLanguageFeatures); this._documents = documents; this._commands = commands; @@ -891,6 +898,9 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { } private _transformScheme(scheme: string): string { + if (this._schemeTransformer && typeof scheme === 'string') { + return this._schemeTransformer.transformOutgoing(scheme); + } return scheme; } diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index db8e34b495b..b024891dc84 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -129,7 +129,7 @@ suite('ExtHostLanguageFeatureCommands', function () { const diagnostics = new ExtHostDiagnostics(rpcProtocol); rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, diagnostics); - extHost = new ExtHostLanguageFeatures(rpcProtocol, extHostDocuments, commands, heapService, diagnostics); + extHost = new ExtHostLanguageFeatures(rpcProtocol, null, extHostDocuments, commands, heapService, diagnostics); rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, extHost); mainThread = rpcProtocol.set(MainContext.MainThreadLanguageFeatures, inst.createInstance(MainThreadLanguageFeatures, rpcProtocol)); diff --git a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts index 511e5e963e5..f0748586c5d 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts @@ -111,7 +111,7 @@ suite('ExtHostLanguageFeatures', function () { const diagnostics = new ExtHostDiagnostics(rpcProtocol); rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, diagnostics); - extHost = new ExtHostLanguageFeatures(rpcProtocol, extHostDocuments, commands, heapService, diagnostics); + extHost = new ExtHostLanguageFeatures(rpcProtocol, null, extHostDocuments, commands, heapService, diagnostics); rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, extHost); mainThread = rpcProtocol.set(MainContext.MainThreadLanguageFeatures, inst.createInstance(MainThreadLanguageFeatures, rpcProtocol)); From 9e3f8976f4cf84b91c0fd0d87e24a74bbfb821de Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 12:19:46 +0200 Subject: [PATCH 0906/1070] scm: panel dnd --- src/vs/base/browser/ui/splitview/panelview.ts | 44 ++++++++++++++++--- .../browser/parts/views/viewsViewlet.ts | 4 +- .../parts/scm/electron-browser/scmViewlet.ts | 14 +++++- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/vs/base/browser/ui/splitview/panelview.ts b/src/vs/base/browser/ui/splitview/panelview.ts index 82e35e5f814..d7079513a78 100644 --- a/src/vs/base/browser/ui/splitview/panelview.ts +++ b/src/vs/base/browser/ui/splitview/panelview.ts @@ -239,7 +239,7 @@ class PanelDraggable implements IDisposable { private _onDidDrop = new Emitter<{ from: Panel, to: Panel }>(); readonly onDidDrop = this._onDidDrop.event; - constructor(private panel: Panel, private context: IDndContext) { + constructor(private panel: Panel, private dnd: IPanelDndController, private context: IDndContext) { panel.draggableElement.draggable = true; domEvent(panel.draggableElement, 'dragstart')(this.onDragStart, this, this.disposables); domEvent(panel.dropTargetElement, 'dragenter')(this.onDragEnter, this, this.disposables); @@ -249,6 +249,12 @@ class PanelDraggable implements IDisposable { } private onDragStart(e: DragEvent): void { + if (!this.dnd.canDrag(this.panel)) { + e.preventDefault(); + e.stopPropagation(); + return; + } + e.dataTransfer.effectAllowed = 'move'; const dragImage = append(document.body, $('.monaco-panel-drag-image', {}, this.panel.draggableElement.textContent)); @@ -263,6 +269,10 @@ class PanelDraggable implements IDisposable { return; } + if (!this.dnd.canDrop(this.context.draggable.panel, this.panel)) { + return; + } + this.dragOverCounter++; this.render(); } @@ -272,6 +282,10 @@ class PanelDraggable implements IDisposable { return; } + if (!this.dnd.canDrop(this.context.draggable.panel, this.panel)) { + return; + } + this.dragOverCounter--; if (this.dragOverCounter === 0) { @@ -297,7 +311,7 @@ class PanelDraggable implements IDisposable { this.dragOverCounter = 0; this.render(); - if (this.context.draggable !== this) { + if (this.dnd.canDrop(this.context.draggable.panel, this.panel) && this.context.draggable !== this) { this._onDidDrop.fire({ from: this.context.draggable.panel, to: this.panel }); } @@ -319,8 +333,24 @@ class PanelDraggable implements IDisposable { } } -export class IPanelViewOptions { - dnd?: boolean; +export interface IPanelDndController { + canDrag(panel: Panel): boolean; + canDrop(panel: Panel, overPanel: Panel): boolean; +} + +export class DefaultPanelDndController implements IPanelDndController { + + canDrag(panel: Panel): boolean { + return true; + } + + canDrop(panel: Panel, overPanel: Panel): boolean { + return true; + } +} + +export interface IPanelViewOptions { + dnd?: IPanelDndController; } interface IPanelItem { @@ -330,7 +360,7 @@ interface IPanelItem { export class PanelView implements IDisposable { - private dnd: boolean; + private dnd: IPanelDndController | null; private dndContext: IDndContext = { draggable: null }; private el: HTMLElement; private panelItems: IPanelItem[] = []; @@ -343,7 +373,7 @@ export class PanelView implements IDisposable { readonly onDidSashChange: Event; constructor(container: HTMLElement, options: IPanelViewOptions = {}) { - this.dnd = !!options.dnd; + this.dnd = options.dnd; this.el = append(container, $('.monaco-panel-view')); this.splitview = new SplitView(this.el); this.onDidSashChange = this.splitview.onDidSashChange; @@ -358,7 +388,7 @@ export class PanelView implements IDisposable { this.splitview.addView(panel, size, index); if (this.dnd) { - const draggable = new PanelDraggable(panel, this.dndContext); + const draggable = new PanelDraggable(panel, this.dnd, this.dndContext); disposables.push(draggable); draggable.onDidDrop(this._onDidDrop.fire, this._onDidDrop, disposables); } diff --git a/src/vs/workbench/browser/parts/views/viewsViewlet.ts b/src/vs/workbench/browser/parts/views/viewsViewlet.ts index dbc78516337..d5d242b7f0f 100644 --- a/src/vs/workbench/browser/parts/views/viewsViewlet.ts +++ b/src/vs/workbench/browser/parts/views/viewsViewlet.ts @@ -23,7 +23,7 @@ import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/ import { IContextKeyService, IContextKeyChangeEvent } from 'vs/platform/contextkey/common/contextkey'; import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { PanelViewlet, ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet'; -import { IPanelOptions } from 'vs/base/browser/ui/splitview/panelview'; +import { IPanelOptions, DefaultPanelDndController } from 'vs/base/browser/ui/splitview/panelview'; import { WorkbenchTree, IListService } from 'vs/platform/list/browser/listService'; import { IWorkbenchThemeService, IFileIconTheme } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { ITreeConfiguration, ITreeOptions } from 'vs/base/parts/tree/browser/tree'; @@ -209,7 +209,7 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet { @IContextMenuService protected contextMenuService: IContextMenuService, @IExtensionService protected extensionService: IExtensionService ) { - super(id, { showHeaderInTitleWhenSingleView, dnd: true }, partService, contextMenuService, telemetryService, themeService); + super(id, { showHeaderInTitleWhenSingleView, dnd: new DefaultPanelDndController() }, partService, contextMenuService, telemetryService, themeService); this.viewletSettings = this.getMemento(storageService, Scope.WORKSPACE); } diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 035623c0973..c6a27968135 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -60,6 +60,7 @@ import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IViewDescriptorRef, PersistentContributableViewsModel } from 'vs/workbench/browser/parts/views/contributableViews'; import { ViewLocation, IViewDescriptor } from 'vs/workbench/common/views'; import { ViewsViewletPanel } from 'vs/workbench/browser/parts/views/viewsViewlet'; +import { IPanelDndController, Panel } from '../../../../base/browser/ui/splitview/panelview'; export interface ISpliceEvent { index: number; @@ -1026,6 +1027,17 @@ class InstallAdditionalSCMProvidersAction extends Action { } } +class SCMPanelDndController implements IPanelDndController { + + canDrag(panel: Panel): boolean { + return !(panel instanceof MainPanel) && !(panel instanceof RepositoryPanel); + } + + canDrop(panel: Panel, overPanel: Panel): boolean { + return !(overPanel instanceof MainPanel) && !(overPanel instanceof RepositoryPanel); + } +} + export class SCMViewlet extends PanelViewlet implements IViewModel { private el: HTMLElement; @@ -1072,7 +1084,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { @IExtensionService extensionService: IExtensionService, @IConfigurationService private configurationService: IConfigurationService, ) { - super(VIEWLET_ID, { showHeaderInTitleWhenSingleView: true }, partService, contextMenuService, telemetryService, themeService); + super(VIEWLET_ID, { showHeaderInTitleWhenSingleView: true, dnd: new SCMPanelDndController() }, partService, contextMenuService, telemetryService, themeService); this.menus = instantiationService.createInstance(SCMMenus, undefined); this.menus.onDidChangeTitle(this.updateTitleArea, this, this.disposables); From 31307f2826679b13aceb3a3645b3fc3e90d1843b Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 12:19:52 +0200 Subject: [PATCH 0907/1070] Add uri transformer --- .../extensions/node/extensionPoints.ts | 2 +- .../services/extensions/node/rpcProtocol.ts | 96 ++++++++++++++++++- 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/services/extensions/node/extensionPoints.ts b/src/vs/workbench/services/extensions/node/extensionPoints.ts index cdcc36031bc..2707535072c 100644 --- a/src/vs/workbench/services/extensions/node/extensionPoints.ts +++ b/src/vs/workbench/services/extensions/node/extensionPoints.ts @@ -492,7 +492,7 @@ export class ExtensionScanner { /** * Read the extension defined in `absoluteFolderPath` */ - private static scanExtension(version: string, log: ILog, absoluteFolderPath: string, isBuiltin: boolean, nlsConfig: NlsConfiguration): TPromise { + public static scanExtension(version: string, log: ILog, absoluteFolderPath: string, isBuiltin: boolean, nlsConfig: NlsConfiguration): TPromise { absoluteFolderPath = normalize(absoluteFolderPath); let parser = new ExtensionManifestParser(version, log, absoluteFolderPath, isBuiltin); diff --git a/src/vs/workbench/services/extensions/node/rpcProtocol.ts b/src/vs/workbench/services/extensions/node/rpcProtocol.ts index 2e1ae6d2ee8..b40e5d2d19b 100644 --- a/src/vs/workbench/services/extensions/node/rpcProtocol.ts +++ b/src/vs/workbench/services/extensions/node/rpcProtocol.ts @@ -10,11 +10,88 @@ import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc'; import { LazyPromise } from 'vs/workbench/services/extensions/node/lazyPromise'; import { ProxyIdentifier, IRPCProtocol } from 'vs/workbench/services/extensions/node/proxyIdentifier'; import { CharCode } from 'vs/base/common/charCode'; +import URI, { UriComponents } from 'vs/base/common/uri'; +import { MarshalledObject } from 'vs/base/common/marshalling'; declare var Proxy: any; // TODO@TypeScript +export interface IURITransformer { + transformIncoming(uri: UriComponents): UriComponents; + transformOutgoing(uri: URI): URI; +} + +function _transformOutgoingURIs(obj: any, transformer: IURITransformer, depth: number): any { + + if (!obj || depth > 200) { + return null; + } + + if (typeof obj === 'object') { + if (obj instanceof URI) { + return transformer.transformOutgoing(obj); + } + + // walk object (or array) + for (let key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + const r = _transformOutgoingURIs(obj[key], transformer, depth + 1); + if (r !== null) { + obj[key] = r; + } + } + } + } + + return null; +} + +function transformOutgoingURIs(obj: any, transformer: IURITransformer): any { + const result = _transformOutgoingURIs(obj, transformer, 0); + if (result === null) { + // no change + return obj; + } + return result; +} + +function _transformIncomingURIs(obj: any, transformer: IURITransformer, depth: number): any { + + if (!obj || depth > 200) { + return null; + } + + if (typeof obj === 'object') { + + if ((obj).$mid === 1) { + return transformer.transformIncoming(obj); + } + + // walk object (or array) + for (let key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + const r = _transformIncomingURIs(obj[key], transformer, depth + 1); + if (r !== null) { + obj[key] = r; + } + } + } + } + + return null; +} + +function transformIncomingURIs(obj: any, transformer: IURITransformer): any { + const result = _transformIncomingURIs(obj, transformer, 0); + if (result === null) { + // no change + return obj; + } + return result; +} + export class RPCProtocol implements IRPCProtocol { + private readonly _uriTransformer: IURITransformer; private _isDisposed: boolean; private readonly _locals: { [id: string]: any; }; private readonly _proxies: { [id: string]: any; }; @@ -23,7 +100,8 @@ export class RPCProtocol implements IRPCProtocol { private readonly _pendingRPCReplies: { [msgId: string]: LazyPromise; }; private readonly _multiplexor: RPCMultiplexer; - constructor(protocol: IMessagePassingProtocol) { + constructor(protocol: IMessagePassingProtocol, transformer: IURITransformer = null) { + this._uriTransformer = transformer; this._isDisposed = false; this._locals = Object.create(null); this._proxies = Object.create(null); @@ -43,6 +121,13 @@ export class RPCProtocol implements IRPCProtocol { }); } + public transformIncomingURIs(obj: T): T { + if (!this._uriTransformer) { + return obj; + } + return transformIncomingURIs(obj, this._uriTransformer); + } + public getProxy(identifier: ProxyIdentifier): T { if (!this._proxies[identifier.id]) { this._proxies[identifier.id] = this._createProxy(identifier.id); @@ -84,6 +169,9 @@ export class RPCProtocol implements IRPCProtocol { } let msg = JSON.parse(rawmsg); + if (this._uriTransformer) { + msg = transformIncomingURIs(msg, this._uriTransformer); + } switch (msg.type) { case MessageType.Request: @@ -109,6 +197,9 @@ export class RPCProtocol implements IRPCProtocol { this._invokedHandlers[callId].then((r) => { delete this._invokedHandlers[callId]; + if (this._uriTransformer) { + r = transformOutgoingURIs(r, this._uriTransformer); + } this._multiplexor.send(MessageFactory.replyOK(callId, r)); }, (err) => { delete this._invokedHandlers[callId]; @@ -185,6 +276,9 @@ export class RPCProtocol implements IRPCProtocol { }); this._pendingRPCReplies[callId] = result; + if (this._uriTransformer) { + args = transformOutgoingURIs(args, this._uriTransformer); + } this._multiplexor.send(MessageFactory.request(callId, proxyId, methodName, args)); return result; } From 25e45cae771ff9a89f02be749257e08e6576b043 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 12:21:39 +0200 Subject: [PATCH 0908/1070] Add stop() --- .../node/watcher/unix/chokidarWatcherService.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts index 191689d3615..175ef1a62ec 100644 --- a/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts @@ -19,6 +19,7 @@ import { realcaseSync } from 'vs/base/node/extfs'; import { isMacintosh } from 'vs/base/common/platform'; import * as watcher from 'vs/workbench/services/files/node/watcher/common'; import { IWatcherRequest, IWatcherService } from 'vs/workbench/services/files/node/watcher/unix/watcher'; +import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle'; export class ChokidarWatcherService implements IWatcherService { @@ -28,6 +29,7 @@ export class ChokidarWatcherService implements IWatcherService { private spamCheckStartTime: number; private spamWarningLogged: boolean; private enospcErrorLogged: boolean; + private toDispose: IDisposable[] = []; public watch(request: IWatcherRequest): TPromise { const watcherOpts: chokidar.IOptions = { @@ -62,6 +64,11 @@ export class ChokidarWatcherService implements IWatcherService { let undeliveredFileEvents: watcher.IRawFileChange[] = []; const fileEventDelayer = new ThrottledDelayer(ChokidarWatcherService.FS_EVENT_DELAY); + this.toDispose.push(toDisposable(() => { + chokidarWatcher.close(); + fileEventDelayer.cancel(); + })); + return new TPromise((c, e, p) => { chokidarWatcher.on('all', (type: string, path: string) => { if (isMacintosh) { @@ -156,8 +163,12 @@ export class ChokidarWatcherService implements IWatcherService { } }); }, () => { - chokidarWatcher.close(); - fileEventDelayer.cancel(); + this.toDispose = dispose(this.toDispose); }); } + + public stop(): TPromise { + this.toDispose = dispose(this.toDispose); + return TPromise.as(void 0); + } } From 28d06555e81aee4b0ecec76491dab6ccb3a47dd2 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Apr 2018 12:21:58 +0200 Subject: [PATCH 0909/1070] be more strict when registering a provider, #47475 --- .../workbench/api/node/extHostFileSystem.ts | 70 ++++++++++++------- .../electron-browser/remoteFileService.ts | 12 ++-- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 935c24b8365..e82b05fca20 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -16,6 +16,7 @@ import { asWinJsPromise } from 'vs/base/common/async'; import { values } from 'vs/base/common/map'; import { Range, FileType, FileChangeType, FileChangeType2, FileType2 } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; +import { Schemas } from 'vs/base/common/network'; class FsLinkProvider implements vscode.DocumentLinkProvider { @@ -161,19 +162,30 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { export class ExtHostFileSystem implements ExtHostFileSystemShape { private readonly _proxy: MainThreadFileSystemShape; - private readonly _fsProvider = new Map(); private readonly _linkProvider = new FsLinkProvider(); + private readonly _fsProvider = new Map(); + private readonly _usedSchemes = new Set(); private readonly _watches = new Map(); private _handlePool: number = 0; constructor(mainContext: IMainContext, extHostLanguageFeatures: ExtHostLanguageFeatures) { this._proxy = mainContext.getProxy(MainContext.MainThreadFileSystem); + this._usedSchemes.add(Schemas.file); + this._usedSchemes.add(Schemas.untitled); + this._usedSchemes.add(Schemas.vscode); + this._usedSchemes.add(Schemas.inMemory); + this._usedSchemes.add(Schemas.internal); + this._usedSchemes.add(Schemas.http); + this._usedSchemes.add(Schemas.https); + this._usedSchemes.add(Schemas.mailto); + this._usedSchemes.add(Schemas.data); + extHostLanguageFeatures.registerDocumentLinkProvider('*', this._linkProvider); } registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider) { - return this.registerFileSystemProvider(scheme, null, new FileSystemProviderShim(provider)); + return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { @@ -182,43 +194,47 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); } else { - throw new Error('FAILED to register file system provider, the new provider does not meet the version-constraint and there is no fallback, old provider'); + throw new Error('FAILED to register file system provider, the new provider does not meet the version-constraint and there is no old provider'); } } private _doRegisterFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider2) { + + if (this._usedSchemes.has(scheme)) { + throw new Error(`a provider for the scheme '${scheme}' is already registered`); + } + const handle = this._handlePool++; this._linkProvider.add(scheme); + this._usedSchemes.add(scheme); this._fsProvider.set(handle, provider); this._proxy.$registerFileSystemProvider(handle, scheme); - let reg: IDisposable; - if (provider.onDidChangeFile) { - reg = provider.onDidChangeFile(event => { - let newEvent = event.map(e => { - let { uri: resource, type } = e; - let newType: files.FileChangeType; - switch (type) { - case FileChangeType2.Changed: - newType = files.FileChangeType.UPDATED; - break; - case FileChangeType2.Created: - newType = files.FileChangeType.ADDED; - break; - case FileChangeType2.Deleted: - newType = files.FileChangeType.DELETED; - break; - } - return { resource, type: newType }; - }); - this._proxy.$onFileSystemChange(handle, newEvent); + + const subscription = provider.onDidChangeFile(event => { + let newEvent = event.map(e => { + let { uri: resource, type } = e; + let newType: files.FileChangeType; + switch (type) { + case FileChangeType2.Changed: + newType = files.FileChangeType.UPDATED; + break; + case FileChangeType2.Created: + newType = files.FileChangeType.ADDED; + break; + case FileChangeType2.Deleted: + newType = files.FileChangeType.DELETED; + break; + } + return { resource, type: newType }; }); - } + this._proxy.$onFileSystemChange(handle, newEvent); + }); + return { dispose: () => { - if (reg) { - reg.dispose(); - } + subscription.dispose(); this._linkProvider.delete(scheme); + this._usedSchemes.delete(scheme); this._fsProvider.delete(handle); this._proxy.$unregisterProvider(handle); } diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 418cade8906..322e173fddc 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -172,22 +172,22 @@ export class RemoteFileService extends FileService { this.toDispose.push(new WorkspaceWatchLogic(this, configurationService, contextService)); } - registerProvider(authority: string, provider: IFileSystemProvider): IDisposable { - if (this._provider.has(authority)) { - throw new Error(); + registerProvider(scheme: string, provider: IFileSystemProvider): IDisposable { + if (this._provider.has(scheme)) { + throw new Error('a provider for that scheme is already registered'); } - this._supportedSchemes.push(authority); + this._supportedSchemes.push(scheme); this._storageService.store('remote_schemes', JSON.stringify(distinct(this._supportedSchemes))); - this._provider.set(authority, provider); + this._provider.set(scheme, provider); const reg = provider.onDidChangeFile(changes => { // forward change events this._onFileChanges.fire(new FileChangesEvent(changes)); }); return { dispose: () => { - this._provider.delete(authority); + this._provider.delete(scheme); reg.dispose(); } }; From 1e8cd162171bc6010d9344d5b6cf691931d292e4 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 12:35:03 +0200 Subject: [PATCH 0910/1070] debug: only respect column breakpoints for column > 1 fixes #46784 --- src/vs/workbench/parts/debug/browser/debugCommands.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugCommands.ts b/src/vs/workbench/parts/debug/browser/debugCommands.ts index 98653f91eec..0055357ca3e 100644 --- a/src/vs/workbench/parts/debug/browser/debugCommands.ts +++ b/src/vs/workbench/parts/debug/browser/debugCommands.ts @@ -188,13 +188,13 @@ export function registerCommands(): void { const position = control.getPosition(); const modelUri = control.getModel().uri; const bp = debugService.getModel().getBreakpoints() - .filter(bp => bp.lineNumber === position.lineNumber && bp.column === position.column && bp.uri.toString() === modelUri.toString()).pop(); + .filter(bp => bp.lineNumber === position.lineNumber && (bp.column === position.column || !bp.column && position.column <= 1) && bp.uri.toString() === modelUri.toString()).pop(); if (bp) { return TPromise.as(null); } if (debugService.getConfigurationManager().canSetBreakpointsIn(control.getModel())) { - return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber, column: position.column }]); + return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber, column: position.column > 1 ? position.column : undefined }]); } } From b41b482e41919976a706a065acbbdd87bb82e354 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 12:44:34 +0200 Subject: [PATCH 0911/1070] scm: move views --- .../browser/parts/views/contributableViews.ts | 41 +++++++++++-------- .../parts/scm/electron-browser/scmViewlet.ts | 23 ++++++----- .../parts/views/contributableViews.test.ts | 2 - 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/contributableViews.ts b/src/vs/workbench/browser/parts/views/contributableViews.ts index dfcb0227897..b835271fc11 100644 --- a/src/vs/workbench/browser/parts/views/contributableViews.ts +++ b/src/vs/workbench/browser/parts/views/contributableViews.ts @@ -186,8 +186,6 @@ export interface IViewDescriptorRef { export class ContributableViewsModel { - protected viewStates = new Map(); - readonly viewDescriptors: IViewDescriptor[] = []; get visibleViewDescriptors(): IViewDescriptor[] { return this.viewDescriptors.filter(v => this.viewStates.get(v.id).visible); @@ -206,7 +204,8 @@ export class ContributableViewsModel { constructor( location: ViewLocation, - @IContextKeyService contextKeyService: IContextKeyService + @IContextKeyService contextKeyService: IContextKeyService, + protected viewStates = new Map() ) { const viewDescriptorCollection = new ViewDescriptorCollection(location, contextKeyService); this.disposables.push(viewDescriptorCollection); @@ -366,15 +365,31 @@ interface ISerializedViewState { export class PersistentContributableViewsModel extends ContributableViewsModel { + private viewletStateStorageId: string; + private storageService: IStorageService; + private contextService: IWorkspaceContextService; + constructor( location: ViewLocation, - private readonly viewletStateStorageId: string, + viewletStateStorageId: string, @IContextKeyService contextKeyService: IContextKeyService, - @IStorageService private storageService: IStorageService, - @IWorkspaceContextService private contextService: IWorkspaceContextService + @IStorageService storageService: IStorageService, + @IWorkspaceContextService contextService: IWorkspaceContextService ) { - super(location, contextKeyService); - this.loadViewsStates(); + const scope = contextService.getWorkbenchState() !== WorkbenchState.EMPTY ? StorageScope.WORKSPACE : StorageScope.GLOBAL; + const raw = storageService.get(viewletStateStorageId, scope, '[]'); + const serializedViewsStates = JSON.parse(raw) as ISerializedViewState[]; + const viewStates = new Map(); + + for (const { id, state } of serializedViewsStates) { + viewStates.set(id, state); + } + + super(location, contextKeyService, viewStates); + + this.viewletStateStorageId = viewletStateStorageId; + this.storageService = storageService; + this.contextService = contextService; } saveViewsStates(): void { @@ -386,16 +401,6 @@ export class PersistentContributableViewsModel extends ContributableViewsModel { this.storageService.store(this.viewletStateStorageId, raw, scope); } - private loadViewsStates(): void { - const scope = this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY ? StorageScope.WORKSPACE : StorageScope.GLOBAL; - const raw = this.storageService.get(this.viewletStateStorageId, scope, '[]'); - const serializedViewsStates = JSON.parse(raw) as ISerializedViewState[]; - - for (const { id, state } of serializedViewsStates) { - this.viewStates.set(id, state); - } - } - dispose(): void { this.saveViewsStates(); super.dispose(); diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index c6a27968135..8672f0abb17 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -51,7 +51,7 @@ import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import * as platform from 'vs/base/common/platform'; import { format } from 'vs/base/common/strings'; import { ISpliceable, ISequence, ISplice } from 'vs/base/common/sequence'; -import { firstIndex, move } from 'vs/base/common/arrays'; +import { firstIndex } from 'vs/base/common/arrays'; import { WorkbenchList } from 'vs/platform/list/browser/listService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ThrottledDelayer } from 'vs/base/common/async'; @@ -1112,7 +1112,6 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.contributedViews.onDidAdd(this.onDidAddContributedView, this, this.disposables); this.contributedViews.onDidRemove(this.onDidRemoveContributedView, this, this.disposables); - this.contributedViews.onDidMove(this.onDidMoveContributedView, this, this.disposables); let index = this.getContributedViewsStartIndex(); for (const viewDescriptor of this.contributedViews.visibleViewDescriptors) { @@ -1250,6 +1249,17 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this._height = dimension.height; } + movePanel(from: ViewletPanel, to: ViewletPanel): void { + const start = this.getContributedViewsStartIndex(); + const fromIndex = firstIndex(this.panels, panel => panel === from) - start; + const toIndex = firstIndex(this.panels, panel => panel === to) - start; + const fromViewDescriptor = this.contributedViews.viewDescriptors[fromIndex]; + const toViewDescriptor = this.contributedViews.viewDescriptors[toIndex]; + + super.movePanel(from, to); + this.contributedViews.move(fromViewDescriptor.id, toViewDescriptor.id); + } + private onSelectionChange(repositories: ISCMRepository[]): void { const wasSingleView = this.isSingleView(); const contributableViewsHeight = this.getContributableViewsSize(); @@ -1385,15 +1395,6 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { disposable.dispose(); } - onDidMoveContributedView({ from, to }: { from: IViewDescriptorRef, to: IViewDescriptorRef }): void { - const start = this.getContributedViewsStartIndex(); - const fromPanel = this.panels[start + from.index]; - const toPanel = this.panels[start + to.index]; - - this.movePanel(fromPanel, toPanel); - move(this.contextMenuDisposables, from.index, to.index); - } - protected isSingleView(): boolean { return super.isSingleView() && this.repositoryPanels.length + this.contributedViews.visibleViewDescriptors.length === 1; } diff --git a/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts b/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts index 9921a6a754b..f4fafe80f43 100644 --- a/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts +++ b/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts @@ -10,7 +10,6 @@ import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyServ import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { SimpleConfigurationService } from 'vs/editor/standalone/browser/simpleServices'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { move } from 'vs/base/common/arrays'; const location = new ViewLocation('test'); @@ -23,7 +22,6 @@ class ViewDescriptorSequence { this.elements = [...model.visibleViewDescriptors]; model.onDidAdd(({ viewDescriptor, index }) => this.elements.splice(index, 0, viewDescriptor), null, this.disposables); model.onDidRemove(({ viewDescriptor, index }) => this.elements.splice(index, 1), null, this.disposables); - model.onDidMove(({ from, to }) => move(this.elements, from.index, to.index), null, this.disposables); } dispose() { From b677f10beb9bb8caddac526a2943cfaeec444093 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 13:25:20 +0200 Subject: [PATCH 0912/1070] Fix #47478 --- src/vs/base/node/zip.ts | 29 ++++++++++++------- .../node/extensionManagementService.ts | 16 +++++----- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/vs/base/node/zip.ts b/src/vs/base/node/zip.ts index a5e7abca5d8..7561e28471f 100644 --- a/src/vs/base/node/zip.ts +++ b/src/vs/base/node/zip.ts @@ -26,10 +26,7 @@ interface IOptions { sourcePathRegex: RegExp; } -export enum ExtractErrorType { - Undefined, - CorruptZip -} +export type ExtractErrorType = 'CorruptZip' | 'Incomplete'; export class ExtractError extends Error { @@ -40,7 +37,7 @@ export class ExtractError extends Error { let message = cause.message; switch (type) { - case ExtractErrorType.CorruptZip: message = `Corrupt ZIP: ${message}`; break; + case 'CorruptZip': message = `Corrupt ZIP: ${message}`; break; } super(message); @@ -58,10 +55,14 @@ function modeFromEntry(entry: Entry) { } function toExtractError(err: Error): ExtractError { - let type = ExtractErrorType.CorruptZip; + if (err instanceof ExtractError) { + return err; + } + + let type: ExtractErrorType = void 0; if (/end of central directory record signature not found/.test(err.message)) { - type = ExtractErrorType.CorruptZip; + type = 'CorruptZip'; } return new ExtractError(type, err); @@ -89,18 +90,26 @@ function extractEntry(stream: Readable, fileName: string, mode: number, targetPa function extractZip(zipfile: ZipFile, targetPath: string, options: IOptions): TPromise { let isCanceled = false; let last = TPromise.wrap(null); + let extractedEntriesCount = 0; return new TPromise((c, e) => { const throttler = new SimpleThrottler(); zipfile.once('error', e); - zipfile.once('close', () => last.then(c, e)); + zipfile.once('close', () => last.then(() => { + if (isCanceled || zipfile.entryCount === extractedEntriesCount) { + c(null); + } else { + e(new ExtractError('Incomplete', new Error(nls.localize('incompleteExtract', "Incomplete. Extracted {0} of {1} entries", extractedEntriesCount, zipfile.entryCount)))); + } + }, e)); zipfile.on('entry', (entry: Entry) => { if (isCanceled) { return; } if (!options.sourcePathRegex.test(entry.fileName)) { + extractedEntriesCount++; return; } @@ -109,14 +118,14 @@ function extractZip(zipfile: ZipFile, targetPath: string, options: IOptions): TP // directory file names end with '/' if (/\/$/.test(fileName)) { const targetFileName = path.join(targetPath, fileName); - last = mkdirp(targetFileName); + last = mkdirp(targetFileName).then(() => extractedEntriesCount++); return; } const stream = ninvoke(zipfile, zipfile.openReadStream, entry); const mode = modeFromEntry(entry); - last = throttler.queue(() => stream.then(stream => extractEntry(stream, fileName, mode, targetPath, options))); + last = throttler.queue(() => stream.then(stream => extractEntry(stream, fileName, mode, targetPath, options).then(() => extractedEntriesCount++))); }); }, () => { isCanceled = true; diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 29940b2d94e..321f8861d9e 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -12,7 +12,7 @@ import * as errors from 'vs/base/common/errors'; import { assign } from 'vs/base/common/objects'; import { toDisposable, Disposable } from 'vs/base/common/lifecycle'; import { flatten, distinct } from 'vs/base/common/arrays'; -import { extract, buffer } from 'vs/base/node/zip'; +import { extract, buffer, ExtractError } from 'vs/base/node/zip'; import { TPromise } from 'vs/base/common/winjs.base'; import { IExtensionManagementService, IExtensionGalleryService, ILocalExtension, @@ -444,17 +444,19 @@ export class ExtensionManagementService extends Disposable implements IExtension .then( () => this.logService.info(`Extracted extension to ${extractPath}:`, id), e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, e instanceof ExtractError ? e.type : INSTALL_ERROR_EXTRACTING)))), e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private rename(id: string, extractPath: string, renamePath: string, retryUntil: number): TPromise { return pfs.rename(extractPath, renamePath) - .then(null, error => - isWindows && error && error.code === 'EPERM' && Date.now() < retryUntil - ? this.rename(id, extractPath, renamePath, retryUntil) - : TPromise.wrapError(new ExtensionManagementError(error.message || nls.localize('renameError', "Unknown error while"), error.code || INSTALL_ERROR_RENAMING)) - ); + .then(null, error => { + if (isWindows && error && error.code === 'EPERM' && Date.now() < retryUntil) { + this.logService.info(`Failed renaming ${extractPath} to ${renamePath} with 'EPERM' error. Trying again...`); + return this.rename(id, extractPath, renamePath, retryUntil); + } + return TPromise.wrapError(new ExtensionManagementError(error.message || nls.localize('renameError', "Unknown error while"), error.code || INSTALL_ERROR_RENAMING)); + }); } private rollback(extensions: IGalleryExtension[]): TPromise { From 8bd32b4fa88f8209b934f6b1ff32b8974be6eadc Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 13:28:01 +0200 Subject: [PATCH 0913/1070] Fix #47566 --- .../extensionManagement/node/extensionManagementService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 321f8861d9e..8ee83cc3a4c 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -455,7 +455,7 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.info(`Failed renaming ${extractPath} to ${renamePath} with 'EPERM' error. Trying again...`); return this.rename(id, extractPath, renamePath, retryUntil); } - return TPromise.wrapError(new ExtensionManagementError(error.message || nls.localize('renameError', "Unknown error while"), error.code || INSTALL_ERROR_RENAMING)); + return TPromise.wrapError(new ExtensionManagementError(error.message || nls.localize('renameError', "Unknown error while renaming {0} to {1}", extractPath, renamePath), error.code || INSTALL_ERROR_RENAMING)); }); } From 50316e6b8f1266b5ba692bc55baf87a931f0328a Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 14:34:02 +0200 Subject: [PATCH 0914/1070] Fix layout --- .../workbench/parts/markers/electron-browser/markersPanel.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts index 34c5ce22c69..7c11d749c64 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts @@ -96,9 +96,8 @@ export class MarkersPanel extends Panel { } public layout(dimension: dom.Dimension): void { - const height = dimension.height - 38; - this.treeContainer.style.height = `${height}px`; - this.tree.layout(height, dimension.width); + this.treeContainer.style.height = `${dimension.height}px`; + this.tree.layout(dimension.height, dimension.width); this.filterInputActionItem.toggleLayout(dimension.width < 1200); } From 2353f6f30c93eb33820045f9cbaf45ce5396849d Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 15:02:11 +0200 Subject: [PATCH 0915/1070] FIx #47828 --- .../node/extensionGalleryService.ts | 13 ++++--------- .../node/extensionManagementService.ts | 4 ++++ .../platform/extensions/node/extensionValidator.ts | 6 ++++++ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index 694f98da3e4..92c29975c2b 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -18,7 +18,7 @@ import { IPager } from 'vs/base/common/paging'; import { IRequestOptions, IRequestContext, download, asJson, asText } from 'vs/base/node/request'; import pkg from 'vs/platform/node/package'; import product from 'vs/platform/node/product'; -import { isVersionValid } from 'vs/platform/extensions/node/extensionValidator'; +import { isEngineValid } from 'vs/platform/extensions/node/extensionValidator'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { readFile } from 'vs/base/node/pfs'; import { writeFileAndFlushSync } from 'vs/base/node/extfs'; @@ -520,7 +520,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { } loadCompatibleVersion(extension: IGalleryExtension): TPromise { - if (extension.properties.engine && this.isEngineValid(extension.properties.engine)) { + if (extension.properties.engine && isEngineValid(extension.properties.engine)) { return TPromise.wrap(extension); } @@ -682,7 +682,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { if (!engine) { return null; } - if (this.isEngineValid(engine)) { + if (isEngineValid(engine)) { return TPromise.wrap(version); } } @@ -703,7 +703,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { .then(manifest => { const engine = manifest.engines.vscode; - if (!this.isEngineValid(engine)) { + if (!isEngineValid(engine)) { return this.getLastValidExtensionVersionReccursively(extension, versions.slice(1)); } @@ -713,11 +713,6 @@ export class ExtensionGalleryService implements IExtensionGalleryService { }); } - private isEngineValid(engine: string): boolean { - // TODO@joao: discuss with alex '*' doesn't seem to be a valid engine version - return engine === '*' || isVersionValid(pkg.version, engine); - } - private static hasExtensionByName(extensions: IGalleryExtension[], name: string): boolean { for (const extension of extensions) { if (`${extension.publisher}.${extension.name}` === name) { diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 8ee83cc3a4c..96e5006095a 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -38,6 +38,7 @@ import Severity from 'vs/base/common/severity'; import { ExtensionsLifecycle } from 'vs/platform/extensionManagement/node/extensionLifecycle'; import { toErrorMessage } from 'vs/base/common/errorMessage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { isEngineValid } from 'vs/platform/extensions/node/extensionValidator'; const SystemExtensionsRoot = path.normalize(path.join(URI.parse(require.toUrl('')).fsPath, '..', 'extensions')); const ERROR_SCANNING_SYS_EXTENSIONS = 'scanningSystem'; @@ -149,6 +150,9 @@ export class ExtensionManagementService extends Disposable implements IExtension return validateLocalExtension(zipPath) .then(manifest => { const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; + if (manifest.engines && manifest.engines.vscode && !isEngineValid(manifest.engines.vscode)) { + return TPromise.wrapError(new Error(nls.localize('incompatible', "Unable to install Extension '{0}' as it is not compatible with Code '{1}'.", identifier.id, pkg.version))); + } return this.removeIfExists(identifier.id) .then( () => this.checkOutdated(manifest) diff --git a/src/vs/platform/extensions/node/extensionValidator.ts b/src/vs/platform/extensions/node/extensionValidator.ts index 0b98d38572d..a500010b134 100644 --- a/src/vs/platform/extensions/node/extensionValidator.ts +++ b/src/vs/platform/extensions/node/extensionValidator.ts @@ -5,6 +5,7 @@ 'use strict'; import * as nls from 'vs/nls'; +import pkg from 'vs/platform/node/package'; export interface IParsedVersion { hasCaret: boolean; @@ -219,6 +220,11 @@ export function isValidExtensionVersion(version: string, extensionDesc: IReduced return isVersionValid(version, extensionDesc.engines.vscode, notices); } +export function isEngineValid(engine: string): boolean { + // TODO@joao: discuss with alex '*' doesn't seem to be a valid engine version + return engine === '*' || isVersionValid(pkg.version, engine); +} + export function isVersionValid(currentVersion: string, requestedVersion: string, notices: string[] = []): boolean { let desiredVersion = normalizeVersion(parseVersion(requestedVersion)); From 89163a5f5911a943de52919d538fc9ad6fc4d377 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 15:12:54 +0200 Subject: [PATCH 0916/1070] debug: terminate thread as a context menu and command palette action fixes #29549 --- .../parts/debug/browser/debugActions.ts | 21 +++++++++++++++++++ src/vs/workbench/parts/debug/common/debug.ts | 2 ++ .../parts/debug/common/debugModel.ts | 4 ++++ .../debug/electron-browser/callStackView.ts | 6 +++++- .../electron-browser/debug.contribution.ts | 3 ++- .../debug/electron-browser/rawDebugSession.ts | 4 ++++ .../parts/debug/test/common/mockDebug.ts | 5 +++++ 7 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugActions.ts b/src/vs/workbench/parts/debug/browser/debugActions.ts index 5b4232955dc..51849684254 100644 --- a/src/vs/workbench/parts/debug/browser/debugActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugActions.ts @@ -388,6 +388,27 @@ export class PauseAction extends AbstractDebugAction { } } +export class TerminateThreadAction extends AbstractDebugAction { + static readonly ID = 'workbench.action.debug.terminateThread'; + static LABEL = nls.localize('terminateThread', "Terminate Thread"); + + constructor(id: string, label: string, @IDebugService debugService: IDebugService, @IKeybindingService keybindingService: IKeybindingService) { + super(id, label, undefined, debugService, keybindingService); + } + + public run(thread: IThread): TPromise { + if (!(thread instanceof Thread)) { + thread = this.debugService.getViewModel().focusedThread; + } + + return thread ? thread.terminate() : TPromise.as(null); + } + + protected isEnabled(state: State): boolean { + return super.isEnabled(state) && (state === State.Running || state === State.Stopped); + } +} + export class RestartFrameAction extends AbstractDebugAction { static readonly ID = 'workbench.action.debug.restartFrame'; static LABEL = nls.localize('restartFrame', "Restart Frame"); diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 5b177840f30..6477133f88a 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -123,6 +123,7 @@ export interface ISession { stepOut(args: DebugProtocol.StepOutArguments): TPromise; continue(args: DebugProtocol.ContinueArguments): TPromise; pause(args: DebugProtocol.PauseArguments): TPromise; + terminateThreads(args: DebugProtocol.TerminateThreadsArguments): TPromise; stepBack(args: DebugProtocol.StepBackArguments): TPromise; reverseContinue(args: DebugProtocol.ReverseContinueArguments): TPromise; @@ -199,6 +200,7 @@ export interface IThread extends ITreeElement { stepBack(): TPromise; continue(): TPromise; pause(): TPromise; + terminate(): TPromise; reverseContinue(): TPromise; } diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts index 3007f9cafbf..f15a2b56c47 100644 --- a/src/vs/workbench/parts/debug/common/debugModel.ts +++ b/src/vs/workbench/parts/debug/common/debugModel.ts @@ -525,6 +525,10 @@ export class Thread implements IThread { return this.process.session.pause({ threadId: this.threadId }); } + public terminate(): TPromise { + return this.process.session.terminateThreads({ threadIds: [this.threadId] }); + } + public reverseContinue(): TPromise { return this.process.session.reverseContinue({ threadId: this.threadId }); } diff --git a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts index 8e3b75e7f39..6703b2b0c70 100644 --- a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts @@ -18,7 +18,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { BaseDebugController, twistiePixels, renderViewTree } from 'vs/workbench/parts/debug/browser/baseDebugView'; import { ITree, IActionProvider, IDataSource, IRenderer, IAccessibilityProvider } from 'vs/base/parts/tree/browser/tree'; import { IAction, IActionItem } from 'vs/base/common/actions'; -import { RestartAction, StopAction, ContinueAction, StepOverAction, StepIntoAction, StepOutAction, PauseAction, RestartFrameAction } from 'vs/workbench/parts/debug/browser/debugActions'; +import { RestartAction, StopAction, ContinueAction, StepOverAction, StepIntoAction, StepOutAction, PauseAction, RestartFrameAction, TerminateThreadAction } from 'vs/workbench/parts/debug/browser/debugActions'; import { CopyStackTraceAction } from 'vs/workbench/parts/debug/electron-browser/electronDebugActions'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; @@ -27,6 +27,7 @@ import { basenameOrAuthority } from 'vs/base/common/resources'; import { TreeResourceNavigator, WorkbenchTree } from 'vs/platform/list/browser/listService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; const $ = dom.$; @@ -268,6 +269,9 @@ class CallStackActionProvider implements IActionProvider { } else { actions.push(new PauseAction(PauseAction.ID, PauseAction.LABEL, this.debugService, this.keybindingService)); } + + actions.push(new Separator()); + actions.push(new TerminateThreadAction(TerminateThreadAction.ID, TerminateThreadAction.LABEL, this.debugService, this.keybindingService)); } else if (element instanceof StackFrame) { if (element.thread.process.session.capabilities.supportsRestartFrame) { actions.push(new RestartFrameAction(RestartFrameAction.ID, RestartFrameAction.LABEL, this.debugService, this.keybindingService)); diff --git a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts index 2b6f3550af8..89cdf27b9b4 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts @@ -30,7 +30,7 @@ import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { DebugEditorModelManager } from 'vs/workbench/parts/debug/browser/debugEditorModelManager'; import { StepOverAction, ClearReplAction, FocusReplAction, StepIntoAction, StepOutAction, StartAction, RestartAction, ContinueAction, StopAction, DisconnectAction, PauseAction, AddFunctionBreakpointAction, - ConfigureAction, DisableAllBreakpointsAction, EnableAllBreakpointsAction, RemoveAllBreakpointsAction, RunAction, ReapplyBreakpointsAction, SelectAndStartAction + ConfigureAction, DisableAllBreakpointsAction, EnableAllBreakpointsAction, RemoveAllBreakpointsAction, RunAction, ReapplyBreakpointsAction, SelectAndStartAction, TerminateThreadAction } from 'vs/workbench/parts/debug/browser/debugActions'; import { DebugActionsWidget } from 'vs/workbench/parts/debug/browser/debugActionsWidget'; import * as service from 'vs/workbench/parts/debug/electron-browser/debugService'; @@ -134,6 +134,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(StopAction, StopAction registry.registerWorkbenchAction(new SyncActionDescriptor(DisconnectAction, DisconnectAction.ID, DisconnectAction.LABEL), 'Debug: Disconnect', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(ContinueAction, ContinueAction.ID, ContinueAction.LABEL, { primary: KeyCode.F5 }, CONTEXT_IN_DEBUG_MODE), 'Debug: Continue', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(PauseAction, PauseAction.ID, PauseAction.LABEL, { primary: KeyCode.F6 }, CONTEXT_IN_DEBUG_MODE), 'Debug: Pause', debugCategory); +registry.registerWorkbenchAction(new SyncActionDescriptor(TerminateThreadAction, TerminateThreadAction.ID, TerminateThreadAction.LABEL, undefined, CONTEXT_IN_DEBUG_MODE), 'Debug: Terminate Thread', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(ConfigureAction, ConfigureAction.ID, ConfigureAction.LABEL), 'Debug: Open launch.json', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(AddFunctionBreakpointAction, AddFunctionBreakpointAction.ID, AddFunctionBreakpointAction.LABEL), 'Debug: Add Function Breakpoint', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(ReapplyBreakpointsAction, ReapplyBreakpointsAction.ID, ReapplyBreakpointsAction.LABEL), 'Debug: Reapply All Breakpoints', debugCategory); diff --git a/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts b/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts index 80b235858b0..dd96720d946 100644 --- a/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts +++ b/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts @@ -350,6 +350,10 @@ export class RawDebugSession implements debug.ISession { return this.send('pause', args); } + public terminateThreads(args: DebugProtocol.TerminateThreadsArguments): TPromise { + return this.send('terminateThreads', args); + } + public setVariable(args: DebugProtocol.SetVariableArguments): TPromise { return this.send('setVariable', args); } diff --git a/src/vs/workbench/parts/debug/test/common/mockDebug.ts b/src/vs/workbench/parts/debug/test/common/mockDebug.ts index e626309a642..6db8bef34f6 100644 --- a/src/vs/workbench/parts/debug/test/common/mockDebug.ts +++ b/src/vs/workbench/parts/debug/test/common/mockDebug.ts @@ -111,6 +111,7 @@ export class MockDebugService implements IDebugService { } export class MockSession implements ISession { + public readyForBreakpoints = true; public emittedStopped = true; @@ -217,6 +218,10 @@ export class MockSession implements ISession { return TPromise.as(null); } + public terminateThreads(args: DebugProtocol.TerminateThreadsArguments): TPromise { + return TPromise.as(null); + } + public setVariable(args: DebugProtocol.SetVariableArguments): TPromise { return TPromise.as(null); } From 12dfca846f10ef2b575f7e615a5649ec285df7fa Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Wed, 18 Apr 2018 15:17:24 +0200 Subject: [PATCH 0917/1070] fixes: single trailing slash results in a confusing message --- .../parts/files/electron-browser/views/explorerViewer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 65595830517..30c28198689 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -345,7 +345,7 @@ export class FileRenderer implements IRenderer { private displayCurrentPath(inputBox: InputBox, initialRelPath: string, projectFolderName: string = '', actionID: string) { if (inputBox.validate()) { const value = inputBox.value; - if (value && value.search(/[\\/]/) !== -1) { // only show if there's a slash + if (value && /.[\\/]./.test(value)) { // only show if there's at least one slash enclosed in the string let displayPath = path.normalize(path.join(projectFolderName, initialRelPath, value)); displayPath = rtrim(displayPath, paths.nativeSep); From 528efc5bbb82f9861900818fbf2c03f9a89d16f4 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 15:23:43 +0200 Subject: [PATCH 0918/1070] smoketest: log last poll message --- test/smoke/src/main.ts | 3 +++ test/smoke/src/vscode/code.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index ab2586f5c9e..ea4f1365bf2 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -27,6 +27,7 @@ import { setup as setupDataExtensionTests } from './areas/extensions/extensions. import { setup as setupTerminalTests } from './areas/terminal/terminal.test'; import { setup as setupDataMultirootTests } from './areas/multiroot/multiroot.test'; import { setup as setupDataLocalizationTests } from './areas/workbench/localization.test'; +import { polling } from './vscode/code'; const tmpDir = tmp.dirSync({ prefix: 't' }) as { name: string; removeCallback: Function; }; const testDataPath = tmpDir.name; @@ -287,6 +288,8 @@ describe('Test', () => { const name = this.currentTest.fullTitle().replace(/[^a-z0-9\-]/ig, '_'); const screenshotPath = path.join(screenshotsPath, `${name}.png`); + + console.log('Last poll message: ', polling.lastTimeoutMessage); fs.writeFileSync(screenshotPath, buffer); }); } diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index 039bd05d4a2..5240380e776 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -139,6 +139,10 @@ export async function spawn(options: SpawnOptions): Promise { return connect(child, outPath, handle, options.verbose); } +export const polling = { + lastTimeoutMessage: '' +}; + async function poll( fn: () => Promise, acceptFn: (result: T) => boolean, @@ -155,6 +159,7 @@ async function poll( let result; try { + polling.lastTimeoutMessage = timeoutMessage; result = await fn(); if (acceptFn(result)) { From a1bb202eb66de3b3158d4fee9dd31318e0e9277e Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 18 Apr 2018 15:26:43 +0200 Subject: [PATCH 0919/1070] incorperate folding api feedback --- .../client/src/cssMain.ts | 18 ++- .../client/src/htmlMain.ts | 18 ++- .../client/src/jsonMain.ts | 18 ++- .../src/extension.ts | 2 +- .../src/features/foldingProvider.ts | 14 ++- .../src/test/foldingProvider.test.ts | 36 +++--- .../src/features/foldingProvider.ts | 8 +- .../src/languageProvider.ts | 2 +- src/vs/editor/common/modes.ts | 55 ++++----- src/vs/editor/contrib/folding/folding.ts | 12 +- .../contrib/folding/syntaxRangeProvider.ts | 36 +++--- src/vs/vscode.proposed.d.ts | 108 ++++++++++-------- .../mainThreadLanguageFeatures.ts | 4 +- src/vs/workbench/api/node/extHost.api.impl.ts | 7 +- src/vs/workbench/api/node/extHost.protocol.ts | 4 +- .../api/node/extHostLanguageFeatures.ts | 16 +-- .../api/node/extHostTypeConverters.ts | 8 +- src/vs/workbench/api/node/extHostTypes.ts | 46 ++++---- 18 files changed, 232 insertions(+), 180 deletions(-) diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts index ac1a1b7493e..c03c44b6cd6 100644 --- a/extensions/css-language-features/client/src/cssMain.ts +++ b/extensions/css-language-features/client/src/cssMain.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -import { languages, window, commands, ExtensionContext, Range, Position, TextDocument, CompletionItem, CompletionItemKind, TextEdit, SnippetString, FoldingRangeList, FoldingRange, FoldingContext, CancellationToken } from 'vscode'; +import { languages, window, commands, ExtensionContext, Range, Position, TextDocument, CompletionItem, CompletionItemKind, TextEdit, SnippetString, FoldingRangeKind, FoldingRange, FoldingContext, CancellationToken } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient'; import { FoldingRangeRequest, FoldingRangeRequestParam, FoldingRangeClientCapabilities } from 'vscode-languageserver-protocol-foldingprovider'; @@ -117,14 +117,26 @@ export function activate(context: ExtensionContext) { } function initFoldingProvider(): Disposable { - return languages.registerFoldingProvider(documentSelector, { + const kinds: { [value: string]: FoldingRangeKind } = Object.create(null); + function getKind(value: string | undefined) { + if (!value) { + return void 0; + } + let kind = kinds[value]; + if (!kind) { + kind = new FoldingRangeKind(value); + kinds[value] = kind; + } + return kind; + } + return languages.registerFoldingRangeProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { if (Array.isArray(ranges)) { - return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); + return ranges.map(r => new FoldingRange(r.startLine, r.endLine, getKind(r.kind))); } return null; }, error => { diff --git a/extensions/html-language-features/client/src/htmlMain.ts b/extensions/html-language-features/client/src/htmlMain.ts index 1cde186c175..6e25547a896 100644 --- a/extensions/html-language-features/client/src/htmlMain.ts +++ b/extensions/html-language-features/client/src/htmlMain.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -import { languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, FoldingRangeList, FoldingRange, FoldingContext } from 'vscode'; +import { languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, FoldingRangeKind, FoldingRange, FoldingContext } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, TextDocumentPositionParams, Disposable, CancellationToken } from 'vscode-languageclient'; import { EMPTY_ELEMENTS } from './htmlEmptyTagsShared'; import { activateTagClosing } from './tagClosing'; @@ -174,14 +174,26 @@ export function activate(context: ExtensionContext) { }); function initFoldingProvider(): Disposable { - return languages.registerFoldingProvider(documentSelector, { + const kinds: { [value: string]: FoldingRangeKind } = Object.create(null); + function getKind(value: string | undefined) { + if (!value) { + return void 0; + } + let kind = kinds[value]; + if (!kind) { + kind = new FoldingRangeKind(value); + kinds[value] = kind; + } + return kind; + } + return languages.registerFoldingRangeProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { if (Array.isArray(ranges)) { - return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); + return ranges.map(r => new FoldingRange(r.startLine, r.endLine, getKind(r.kind))); } return null; }, error => { diff --git a/extensions/json-language-features/client/src/jsonMain.ts b/extensions/json-language-features/client/src/jsonMain.ts index ee895024bae..53c19c4c22f 100644 --- a/extensions/json-language-features/client/src/jsonMain.ts +++ b/extensions/json-language-features/client/src/jsonMain.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -import { workspace, languages, ExtensionContext, extensions, Uri, LanguageConfiguration, TextDocument, FoldingRangeList, FoldingRange, Disposable, FoldingContext } from 'vscode'; +import { workspace, languages, ExtensionContext, extensions, Uri, LanguageConfiguration, TextDocument, FoldingRangeKind, FoldingRange, Disposable, FoldingContext } from 'vscode'; import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification, CancellationToken } from 'vscode-languageclient'; import TelemetryReporter from 'vscode-extension-telemetry'; @@ -156,14 +156,26 @@ export function activate(context: ExtensionContext) { languages.setLanguageConfiguration('jsonc', languageConfiguration); function initFoldingProvider(): Disposable { - return languages.registerFoldingProvider(documentSelector, { + const kinds: { [value: string]: FoldingRangeKind } = Object.create(null); + function getKind(value: string | undefined) { + if (!value) { + return void 0; + } + let kind = kinds[value]; + if (!kind) { + kind = new FoldingRangeKind(value); + kinds[value] = kind; + } + return kind; + } + return languages.registerFoldingRangeProvider(documentSelector, { provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken) { const param: FoldingRangeRequestParam = { textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) }; return client.sendRequest(FoldingRangeRequest.type, param, token).then(ranges => { if (Array.isArray(ranges)) { - return new FoldingRangeList(ranges.map(r => new FoldingRange(r.startLine, r.endLine, r.kind))); + return ranges.map(r => new FoldingRange(r.startLine, r.endLine, getKind(r.kind))); } return null; }, error => { diff --git a/extensions/markdown-language-features/src/extension.ts b/extensions/markdown-language-features/src/extension.ts index 6bac15639fb..e260737797b 100644 --- a/extensions/markdown-language-features/src/extension.ts +++ b/extensions/markdown-language-features/src/extension.ts @@ -39,7 +39,7 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(selector, symbolProvider)); context.subscriptions.push(vscode.languages.registerDocumentLinkProvider(selector, new LinkProvider())); - context.subscriptions.push(vscode.languages.registerFoldingProvider(selector, new MarkdownFoldingProvider(engine))); + context.subscriptions.push(vscode.languages.registerFoldingRangeProvider(selector, new MarkdownFoldingProvider(engine))); context.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(new MarkdownWorkspaceSymbolProvider(symbolProvider))); const previewSecuritySelector = new PreviewSecuritySelector(cspArbiter, previewManager); diff --git a/extensions/markdown-language-features/src/features/foldingProvider.ts b/extensions/markdown-language-features/src/features/foldingProvider.ts index 637cdb11d14..236908a1f1f 100644 --- a/extensions/markdown-language-features/src/features/foldingProvider.ts +++ b/extensions/markdown-language-features/src/features/foldingProvider.ts @@ -8,7 +8,9 @@ import * as vscode from 'vscode'; import { MarkdownEngine } from '../markdownEngine'; import { TableOfContentsProvider } from '../tableOfContentsProvider'; -export default class MarkdownFoldingProvider implements vscode.FoldingProvider { +const rangeLimit = 5000; + +export default class MarkdownFoldingProvider implements vscode.FoldingRangeProvider { constructor( private readonly engine: MarkdownEngine @@ -16,13 +18,13 @@ export default class MarkdownFoldingProvider implements vscode.FoldingProvider { public async provideFoldingRanges( document: vscode.TextDocument, - context: vscode.FoldingContext, + _: vscode.FoldingContext, _token: vscode.CancellationToken - ): Promise { + ): Promise { const tocProvider = new TableOfContentsProvider(this.engine, document); let toc = await tocProvider.getToc(); - if (context.maxRanges && toc.length > context.maxRanges) { - toc = toc.slice(0, context.maxRanges); + if (toc.length > rangeLimit) { + toc = toc.slice(0, rangeLimit); } const foldingRanges = toc.map((entry, startIndex) => { @@ -43,6 +45,6 @@ export default class MarkdownFoldingProvider implements vscode.FoldingProvider { }); - return new vscode.FoldingRangeList(foldingRanges); + return foldingRanges; } } \ No newline at end of file diff --git a/extensions/markdown-language-features/src/test/foldingProvider.test.ts b/extensions/markdown-language-features/src/test/foldingProvider.test.ts index 5095bcbbed0..44c570d64d4 100644 --- a/extensions/markdown-language-features/src/test/foldingProvider.test.ts +++ b/extensions/markdown-language-features/src/test/foldingProvider.test.ts @@ -16,7 +16,7 @@ const testFileName = vscode.Uri.parse('test.md'); suite('markdown.FoldingProvider', () => { test('Should not return anything for empty document', async () => { const folds = await getFoldsForDocument(``); - assert.strictEqual(folds.ranges.length, 0); + assert.strictEqual(folds.length, 0); }); test('Should not return anything for document without headers', async () => { @@ -24,7 +24,7 @@ suite('markdown.FoldingProvider', () => { **b** afas a#b a`); - assert.strictEqual(folds.ranges.length, 0); + assert.strictEqual(folds.length, 0); }); test('Should fold from header to end of document', async () => { @@ -32,10 +32,10 @@ a`); # b c d`); - assert.strictEqual(folds.ranges.length, 1); - const firstFold = folds.ranges[0]; - assert.strictEqual(firstFold.startLine, 1); - assert.strictEqual(firstFold.endLine, 3); + assert.strictEqual(folds.length, 1); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 1); + assert.strictEqual(firstFold.end, 3); }); test('Should leave single newline before next header', async () => { @@ -45,10 +45,10 @@ x # b y`); - assert.strictEqual(folds.ranges.length, 2); - const firstFold = folds.ranges[0]; - assert.strictEqual(firstFold.startLine, 1); - assert.strictEqual(firstFold.endLine, 3); + assert.strictEqual(folds.length, 2); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 1); + assert.strictEqual(firstFold.end, 3); }); test('Should collapse multuple newlines to single newline before next header', async () => { @@ -60,10 +60,10 @@ x # b y`); - assert.strictEqual(folds.ranges.length, 2); - const firstFold = folds.ranges[0]; - assert.strictEqual(firstFold.startLine, 1); - assert.strictEqual(firstFold.endLine, 5); + assert.strictEqual(folds.length, 2); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 1); + assert.strictEqual(firstFold.end, 5); }); test('Should not collapse if there is no newline before next header', async () => { @@ -72,10 +72,10 @@ y`); x # b y`); - assert.strictEqual(folds.ranges.length, 2); - const firstFold = folds.ranges[0]; - assert.strictEqual(firstFold.startLine, 1); - assert.strictEqual(firstFold.endLine, 2); + assert.strictEqual(folds.length, 2); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 1); + assert.strictEqual(firstFold.end, 2); }); }); diff --git a/extensions/typescript-language-features/src/features/foldingProvider.ts b/extensions/typescript-language-features/src/features/foldingProvider.ts index b5ad3d23199..20c1ec40647 100644 --- a/extensions/typescript-language-features/src/features/foldingProvider.ts +++ b/extensions/typescript-language-features/src/features/foldingProvider.ts @@ -9,7 +9,7 @@ import * as Proto from '../protocol'; import * as typeConverters from '../utils/typeConverters'; import { ITypeScriptServiceClient } from '../typescriptService'; -export default class TypeScriptFoldingProvider implements vscode.FoldingProvider { +export default class TypeScriptFoldingProvider implements vscode.FoldingRangeProvider { public constructor( private readonly client: ITypeScriptServiceClient ) { } @@ -18,7 +18,7 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider document: vscode.TextDocument, _context: vscode.FoldingContext, token: vscode.CancellationToken - ): Promise { + ): Promise { if (!this.client.apiVersion.has280Features()) { return; } @@ -34,13 +34,13 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider return; } - return new vscode.FoldingRangeList(response.body.map(span => { + return response.body.map(span => { const range = typeConverters.Range.fromTextSpan(span.textSpan); // workaround for #47240 if (range.end.character > 0 && document.getText(new vscode.Range(range.end.translate(0, -1), range.end)) === '}') { return new vscode.FoldingRange(range.start.line, Math.max(range.end.line - 1, range.start.line)); } return new vscode.FoldingRange(range.start.line, range.end.line); - })); + }); } } diff --git a/extensions/typescript-language-features/src/languageProvider.ts b/extensions/typescript-language-features/src/languageProvider.ts index 5efb11d5a63..f23c7fab620 100644 --- a/extensions/typescript-language-features/src/languageProvider.ts +++ b/extensions/typescript-language-features/src/languageProvider.ts @@ -159,7 +159,7 @@ export default class LanguageProvider { let enable = workspace.getConfiguration().get(foldingSetting, false); if (enable && this.client.apiVersion.has280Features()) { if (!this.foldingProviderRegistration) { - this.foldingProviderRegistration = languages.registerFoldingProvider(this.documentSelector, new (await import('./features/foldingProvider')).default(this.client)); + this.foldingProviderRegistration = languages.registerFoldingRangeProvider(this.documentSelector, new (await import('./features/foldingProvider')).default(this.client)); } } else { if (this.foldingProviderRegistration) { diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 46e81803edc..76d62264ebc 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -835,7 +835,6 @@ export interface DocumentColorProvider { * @internal */ export interface FoldingContext { - maxRanges?: number; } /** @@ -844,59 +843,61 @@ export interface FoldingContext { /** * @internal */ -export interface FoldingProvider { +export interface FoldingRangeProvider { /** * Provides the color ranges for a specific model. */ - provideFoldingRanges(model: model.ITextModel, context: FoldingContext, token: CancellationToken): IFoldingRangeList | Thenable; + provideFoldingRanges(model: model.ITextModel, context: FoldingContext, token: CancellationToken): IFoldingRange[] | Thenable; } -/** - * @internal - */ -export interface IFoldingRangeList { - ranges: IFoldingRange[]; -} /** * @internal */ export interface IFoldingRange { /** - * The start line number + * The zero-based start line of the range to fold. The folded area starts after the line's last character. */ - startLineNumber: number; + start: number; /** - * The end line number + * The zero-based end line of the range to fold. The folded area ends with the line's last character. */ - endLineNumber: number; + end: number; /** - * The optional type of the folding range + * Describes the [Kind](#FoldingRangeKind) of the folding range such as [Comment](#FoldingRangeKind.Comment) or + * [Region](#FoldingRangeKind.Region). The kind is used to categorize folding ranges and used by commands + * like 'Fold all comments'. See + * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. */ - type?: FoldingRangeType | string; - - // auto-collapse - // header span - + kind?: FoldingRangeKind; } /** * @internal */ -export enum FoldingRangeType { +export class FoldingRangeKind { /** - * Folding range for a comment + * Kind for folding range representing a comment. The value of the kind is 'comment'. */ - Comment = 'comment', + static readonly Comment = new FoldingRangeKind('comment'); /** - * Folding range for a imports or includes + * Kind for folding range representing a import. The value of the kind is 'imports'. */ - Imports = 'imports', + static readonly Imports = new FoldingRangeKind('imports'); /** - * Folding range for a region (e.g. `#region`) + * Kind for folding range representing regions (for example marked by `#region`, `#endregion`). + * The value of the kind is 'region'. */ - Region = 'region' + static readonly Region = new FoldingRangeKind('region'); + + /** + * Creates a new [FoldingRangeKind](#FoldingRangeKind). + * + * @param value of the kind. + */ + public constructor(public value: string) { + } } /** @@ -1047,7 +1048,7 @@ export const ColorProviderRegistry = new LanguageFeatureRegistry(); +export const FoldingRangeProviderRegistry = new LanguageFeatureRegistry(); /** * @internal diff --git a/src/vs/editor/contrib/folding/folding.ts b/src/vs/editor/contrib/folding/folding.ts index e4237e2afd6..4d54fef449f 100644 --- a/src/vs/editor/contrib/folding/folding.ts +++ b/src/vs/editor/contrib/folding/folding.ts @@ -28,7 +28,7 @@ import { IRange } from 'vs/editor/common/core/range'; import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { IndentRangeProvider } from 'vs/editor/contrib/folding/indentRangeProvider'; import { IPosition } from 'vs/editor/common/core/position'; -import { FoldingProviderRegistry, FoldingRangeType } from 'vs/editor/common/modes'; +import { FoldingRangeProviderRegistry, FoldingRangeKind } from 'vs/editor/common/modes'; import { SyntaxRangeProvider } from './syntaxRangeProvider'; import { CancellationToken } from 'vs/base/common/cancellation'; @@ -82,7 +82,7 @@ export class FoldingController implements IEditorContribution { this.foldingDecorationProvider.autoHideFoldingControls = this._autoHideFoldingControls; this.globalToDispose.push(this.editor.onDidChangeModel(() => this.onModelChanged())); - this.globalToDispose.push(FoldingProviderRegistry.onDidChange(() => this.onFoldingStrategyChanged())); + this.globalToDispose.push(FoldingRangeProviderRegistry.onDidChange(() => this.onFoldingStrategyChanged())); this.globalToDispose.push(this.editor.onDidChangeConfiguration((e: IConfigurationChangedEvent) => { if (e.contribInfo) { @@ -205,7 +205,7 @@ export class FoldingController implements IEditorContribution { private getRangeProvider(): RangeProvider { if (!this.rangeProvider) { if (this._useFoldingProviders) { - let foldingProviders = FoldingProviderRegistry.ordered(this.foldingModel.textModel); + let foldingProviders = FoldingRangeProviderRegistry.ordered(this.foldingModel.textModel); this.rangeProvider = foldingProviders.length ? new SyntaxRangeProvider(foldingProviders) : new IndentRangeProvider(); } else { this.rangeProvider = new IndentRangeProvider(); @@ -584,7 +584,7 @@ class FoldAllBlockCommentsAction extends FoldingAction { invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void { if (foldingModel.regions.hasTypes()) { - setCollapseStateForType(foldingModel, FoldingRangeType.Comment, true); + setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true); } else { let comments = LanguageConfigurationRegistry.getComments(editor.getModel().getLanguageIdentifier().id); if (comments && comments.blockCommentStartToken) { @@ -612,7 +612,7 @@ class FoldAllRegionsAction extends FoldingAction { invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void { if (foldingModel.regions.hasTypes()) { - setCollapseStateForType(foldingModel, FoldingRangeType.Region, true); + setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true); } else { let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editor.getModel().getLanguageIdentifier().id); if (foldingRules && foldingRules.markers && foldingRules.markers.start) { @@ -640,7 +640,7 @@ class UnfoldAllRegionsAction extends FoldingAction { invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void { if (foldingModel.regions.hasTypes()) { - setCollapseStateForType(foldingModel, FoldingRangeType.Region, false); + setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false); } else { let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editor.getModel().getLanguageIdentifier().id); if (foldingRules && foldingRules.markers && foldingRules.markers.start) { diff --git a/src/vs/editor/contrib/folding/syntaxRangeProvider.ts b/src/vs/editor/contrib/folding/syntaxRangeProvider.ts index 7d5d7447929..7131c02d583 100644 --- a/src/vs/editor/contrib/folding/syntaxRangeProvider.ts +++ b/src/vs/editor/contrib/folding/syntaxRangeProvider.ts @@ -5,7 +5,7 @@ 'use strict'; -import { FoldingProvider, IFoldingRange, FoldingContext } from 'vs/editor/common/modes'; +import { FoldingRangeProvider, IFoldingRange, FoldingContext } from 'vs/editor/common/modes'; import { onUnexpectedExternalError } from 'vs/base/common/errors'; import { toThenable } from 'vs/base/common/async'; import { ITextModel } from 'vs/editor/common/model'; @@ -26,7 +26,7 @@ const foldingContext: FoldingContext = { export class SyntaxRangeProvider implements RangeProvider { - constructor(private providers: FoldingProvider[]) { + constructor(private providers: FoldingRangeProvider[]) { } compute(model: ITextModel, cancellationToken: CancellationToken): Thenable { @@ -41,23 +41,23 @@ export class SyntaxRangeProvider implements RangeProvider { } -function collectSyntaxRanges(providers: FoldingProvider[], model: ITextModel, cancellationToken: CancellationToken): Thenable { +function collectSyntaxRanges(providers: FoldingRangeProvider[], model: ITextModel, cancellationToken: CancellationToken): Thenable { let promises = providers.map(provider => toThenable(provider.provideFoldingRanges(model, foldingContext, cancellationToken))); - return TPromise.join(promises).then(lists => { + return TPromise.join(promises).then(results => { let rangeData: IFoldingRangeData[] = null; if (cancellationToken.isCancellationRequested) { return null; } - for (let i = 0; i < lists.length; i++) { - let list = lists[i]; - if (list && Array.isArray(list.ranges)) { + for (let i = 0; i < results.length; i++) { + let ranges = results[i]; + if (Array.isArray(ranges)) { if (!Array.isArray(rangeData)) { rangeData = []; } let nLines = model.getLineCount(); - for (let r of list.ranges) { - if (r.startLineNumber > 0 && r.endLineNumber > r.startLineNumber && r.endLineNumber <= nLines) { - rangeData.push({ startLineNumber: r.startLineNumber, endLineNumber: r.endLineNumber, rank: i, type: r.type }); + for (let r of ranges) { + if (r.start > 0 && r.end > r.start && r.end <= nLines) { + rangeData.push({ start: r.start, end: r.end, rank: i, kind: r.kind }); } } } @@ -145,7 +145,7 @@ export class RangesCollector { export function sanitizeRanges(rangeData: IFoldingRangeData[]): FoldingRegions { let sorted = rangeData.sort((d1, d2) => { - let diff = d1.startLineNumber - d2.startLineNumber; + let diff = d1.start - d2.start; if (diff === 0) { diff = d1.rank - d2.rank; } @@ -158,20 +158,20 @@ export function sanitizeRanges(rangeData: IFoldingRangeData[]): FoldingRegions { for (let entry of sorted) { if (!top) { top = entry; - collector.add(entry.startLineNumber, entry.endLineNumber, entry.type, previous.length); + collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length); } else { - if (entry.startLineNumber > top.startLineNumber) { - if (entry.endLineNumber <= top.endLineNumber) { + if (entry.start > top.start) { + if (entry.end <= top.end) { previous.push(top); top = entry; - collector.add(entry.startLineNumber, entry.endLineNumber, entry.type, previous.length); - } else if (entry.startLineNumber > top.endLineNumber) { + collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length); + } else if (entry.start > top.end) { do { top = previous.pop(); - } while (top && entry.startLineNumber > top.endLineNumber); + } while (top && entry.start > top.end); previous.push(top); top = entry; - collector.add(entry.startLineNumber, entry.endLineNumber, entry.type, previous.length); + collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length); } } } diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 6bf0f87445f..793919f0a11 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -13,88 +13,104 @@ declare module 'vscode' { //#region Aeschli: folding - export class FoldingRangeList { - - /** - * The folding ranges. - */ - ranges: FoldingRange[]; - - /** - * Creates new folding range list. - * - * @param ranges The folding ranges - */ - constructor(ranges: FoldingRange[]); - } - - export class FoldingRange { /** - * The start line number (zero-based) of the range to fold. The hidden area starts after the last character of that line. + * The zero-based start line of the range to fold. The folded area starts after the line's last character. */ - startLine: number; + start: number; /** - * The end line number (0-based) of the range to fold. The hidden area ends at the last character of that line. + * The zero-based end line of the range to fold. The folded area ends with the line's last character. */ - endLine: number; + end: number; /** - * The actual color value for this color range. + * Describes the [Kind](#FoldingRangeKind) of the folding range such as [Comment](#FoldingRangeKind.Comment) or + * [Region](#FoldingRangeKind.Region). The kind is used to categorize folding ranges and used by commands + * like 'Fold all comments'. See + * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. */ - type?: FoldingRangeType | string; + kind?: FoldingRangeKind; /** * Creates a new folding range. * - * @param startLineNumber The first line of the fold - * @param type The last line of the fold + * @param start The start line of the folded range. + * @param end The end line of the folded range. + * @param kind The kind of the folding range. */ - constructor(startLineNumber: number, endLineNumber: number, type?: FoldingRangeType | string); + constructor(start: number, end: number, kind?: FoldingRangeKind); } - export enum FoldingRangeType { + export class FoldingRangeKind { /** - * Folding range for a comment + * Kind for folding range representing a comment. The value of the kind is 'comment'. */ - Comment = 'comment', + static readonly Comment: FoldingRangeKind; /** - * Folding range for a imports or includes + * Kind for folding range representing a import. The value of the kind is 'imports'. */ - Imports = 'imports', + static readonly Imports: FoldingRangeKind; /** - * Folding range for a region (e.g. `#region`) + * Kind for folding range representing regions (for example a folding range marked by `#region` and `#endregion`). + * The value of the kind is 'region'. */ - Region = 'region' + static readonly Region: FoldingRangeKind; + /** + * String value of the kind, e.g. `comment`. + */ + readonly value: string; + /** + * Creates a new [FoldingRangeKind](#FoldingRangeKind). + * + * @param value of the kind. + */ + public constructor(value: string); } export namespace languages { /** - * Register a folding provider. + * Register a folding range provider. * * Multiple folding can be registered for a language. In that case providers are sorted * by their [score](#languages.match) and the best-matching provider is used. Failure * of the selected provider will cause a failure of the whole operation. * * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A folding provider. + * @param provider A folding range provider. + * @param metadata Metadata about the kind of code actions the provider providers. * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ - export function registerFoldingProvider(selector: DocumentSelector, provider: FoldingProvider): Disposable; + export function registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider, metadata?: FoldingRangeProviderMetadata): Disposable; } - export interface FoldingContext { - maxRanges?: number; - } - - export interface FoldingProvider { + /** + * Metadata about the kind of folding ranges that a [FoldingRangeProvider](#FoldingRangeProvider) providers uses. + */ + export interface FoldingRangeProviderMetadata { /** - * Returns a list of folding ranges or null if the provider does not want to participate or was cancelled. + * [FoldingRangeKind](#FoldingRangeKind) that this provider may return. */ - provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult; + readonly providedFoldingRangeKinds?: ReadonlyArray; + } + + /** + * Folding context (for future use) + */ + export interface FoldingContext { + } + + export interface FoldingRangeProvider { + /** + * Returns a list of folding ranges or null and undefined if the provider + * does not want to participate or was cancelled. + * @param document The document in which the command was invoked. + * @param context Additional context information (for future use) + * @param token A cancellation token. + */ + provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult; } //#endregion @@ -242,9 +258,9 @@ declare module 'vscode' { readonly onDidChangeFile: Event; /** - * Subscribe to events in the file or folder denoted by `uri`. - * @param uri - * @param options + * Subscribe to events in the file or folder denoted by `uri`. + * @param uri + * @param options */ watch(uri: Uri, options: { recursive?: boolean; excludes?: string[] }): Disposable; @@ -269,7 +285,7 @@ declare module 'vscode' { /** * Create a new directory. *Note* that new files are created via `write`-calls. - * + * * @param uri The uri of the *new* folder. * @param token A cancellation token. */ diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index edebb1a5bd2..34fb61eea6a 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -349,9 +349,9 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- folding - $registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void { + $registerFoldingRangeProvider(handle: number, selector: ISerializedDocumentFilter[]): void { const proxy = this._proxy; - this._registrations[handle] = modes.FoldingProviderRegistry.register(toLanguageSelector(selector), { + this._registrations[handle] = modes.FoldingRangeProviderRegistry.register(toLanguageSelector(selector), { provideFoldingRanges: (model, context, token) => { return wireCancellationToken(token, proxy.$provideFoldingRanges(handle, model.uri, context)); } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 02fe0073cfe..2790ad78549 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -328,8 +328,8 @@ export function createApiFactory( registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable { return extHostLanguageFeatures.registerColorProvider(checkSelector(selector), provider); }, - registerFoldingProvider: proposedApiFunction(extension, (selector: vscode.DocumentSelector, provider: vscode.FoldingProvider): vscode.Disposable => { - return extHostLanguageFeatures.registerFoldingProvider(checkSelector(selector), provider); + registerFoldingRangeProvider: proposedApiFunction(extension, (selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable => { + return extHostLanguageFeatures.registerFoldingRangeProvider(checkSelector(selector), provider); }), setLanguageConfiguration: (language: string, configuration: vscode.LanguageConfiguration): vscode.Disposable => { return extHostLanguageFeatures.setLanguageConfiguration(language, configuration); @@ -714,9 +714,8 @@ export function createApiFactory( FileType2: extHostTypes.FileType2, FileOpenFlags: files.FileOpenFlags, FileError: files.FileError, - FoldingRangeList: extHostTypes.FoldingRangeList, FoldingRange: extHostTypes.FoldingRange, - FoldingRangeType: extHostTypes.FoldingRangeType + FoldingRangeKind: extHostTypes.FoldingRangeKind }; }; } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index bec0acdb06e..fb05930446c 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -283,7 +283,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable { $registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void; $registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void; $registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void; - $registerFoldingProvider(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerFoldingRangeProvider(handle: number, selector: ISerializedDocumentFilter[]): void; $setLanguageConfiguration(handle: number, languageId: string, configuration: ISerializedLanguageConfiguration): void; } @@ -722,7 +722,7 @@ export interface ExtHostLanguageFeaturesShape { $resolveDocumentLink(handle: number, link: modes.ILink): TPromise; $provideDocumentColors(handle: number, resource: UriComponents): TPromise; $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo): TPromise; - $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise; + $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise; } export interface ExtHostQuickOpenShape { diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 8e0753d3df4..3d5e2fe57ad 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -817,16 +817,16 @@ class FoldingProviderAdapter { constructor( private _documents: ExtHostDocuments, - private _provider: vscode.FoldingProvider + private _provider: vscode.FoldingRangeProvider ) { } - provideFoldingRanges(resource: URI, context: modes.FoldingContext): TPromise { + provideFoldingRanges(resource: URI, context: modes.FoldingContext): TPromise { const doc = this._documents.getDocumentData(resource).document; - return asWinJsPromise(token => this._provider.provideFoldingRanges(doc, context, token)).then(list => { - if (!Array.isArray(list.ranges)) { + return asWinJsPromise(token => this._provider.provideFoldingRanges(doc, context, token)).then(ranges => { + if (!Array.isArray(ranges)) { return void 0; } - return TypeConverters.FoldingRangeList.from(list); + return ranges.map(TypeConverters.FoldingRange.from); }); } } @@ -1178,13 +1178,13 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._withAdapter(handle, ColorProviderAdapter, adapter => adapter.provideColorPresentations(URI.revive(resource), colorInfo)); } - registerFoldingProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingProvider): vscode.Disposable { + registerFoldingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable { const handle = this._addNewAdapter(new FoldingProviderAdapter(this._documents, provider)); - this._proxy.$registerFoldingProvider(handle, this._transformDocumentSelector(selector)); + this._proxy.$registerFoldingRangeProvider(handle, this._transformDocumentSelector(selector)); return this._createDisposable(handle); } - $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext): TPromise { + $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext): TPromise { return this._withAdapter(handle, FoldingProviderAdapter, adapter => adapter.provideFoldingRanges(URI.revive(resource), context)); } diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index 0f412156674..b77f77279db 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -623,11 +623,9 @@ export namespace ProgressLocation { } } -export namespace FoldingRangeList { - export function from(rangeList: vscode.FoldingRangeList): modes.IFoldingRangeList { - return { - ranges: rangeList.ranges.map(r => ({ startLineNumber: r.startLine + 1, endLineNumber: r.endLine + 1, type: r.type })) - }; +export namespace FoldingRange { + export function from(r: vscode.FoldingRange): modes.IFoldingRange { + return { start: r.start + 1, end: r.end + 1, kind: r.kind }; } } diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index d988a15447d..d4da587fb9e 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1841,43 +1841,43 @@ export enum FileType2 { //#region folding api -export class FoldingRangeList { - - ranges: FoldingRange[]; - - constructor(ranges: FoldingRange[]) { - this.ranges = ranges; - } -} - export class FoldingRange { - startLine: number; + start: number; - endLine: number; + end: number; - type?: FoldingRangeType | string; + kind?: FoldingRangeKind; - constructor(startLine: number, endLine: number, type?: FoldingRangeType | string) { - this.startLine = startLine; - this.endLine = endLine; - this.type = type; + constructor(start: number, end: number, kind?: FoldingRangeKind) { + this.start = start; + this.end = end; + this.kind = kind; } } -export enum FoldingRangeType { +export class FoldingRangeKind { /** - * Folding range for a comment + * Kind for folding range representing a comment. The value of the kind is 'comment'. */ - Comment = 'comment', + static readonly Comment = new FoldingRangeKind('comment'); /** - * Folding range for a imports or includes + * Kind for folding range representing a import. The value of the kind is 'imports'. */ - Imports = 'imports', + static readonly Imports = new FoldingRangeKind('imports'); /** - * Folding range for a region (e.g. `#region`) + * Kind for folding range representing regions (for example marked by `#region`, `#endregion`). + * The value of the kind is 'region'. */ - Region = 'region' + static readonly Region = new FoldingRangeKind('region'); + + /** + * Creates a new [FoldingRangeKind](#FoldingRangeKind). + * + * @param value of the kind. + */ + public constructor(public value: string) { + } } //#endregion From 7adef9d244e1b6c56091d9f9ec477824906b2825 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 15:45:27 +0200 Subject: [PATCH 0920/1070] log file --- test/smoke/src/application.ts | 8 ++++-- test/smoke/src/logger.ts | 42 ++++++++++++++++++++++++++++++++ test/smoke/src/main.ts | 31 ++++++++++++++++++++--- test/smoke/src/vscode/code.ts | 46 +++++++++++++---------------------- 4 files changed, 92 insertions(+), 35 deletions(-) create mode 100644 test/smoke/src/logger.ts diff --git a/test/smoke/src/application.ts b/test/smoke/src/application.ts index 030c36e1d50..cd63330d0ab 100644 --- a/test/smoke/src/application.ts +++ b/test/smoke/src/application.ts @@ -7,6 +7,7 @@ import { Workbench } from './areas/workbench/workbench'; import * as fs from 'fs'; import * as cp from 'child_process'; import { Code, spawn, SpawnOptions } from './vscode/code'; +import { Logger } from './logger'; export enum Quality { Dev, @@ -19,7 +20,6 @@ export interface ApplicationOptions extends SpawnOptions { workspacePath: string; workspaceFilePath: string; waitTime: number; - verbose: boolean; } export class Application { @@ -42,6 +42,10 @@ export class Application { return this._workbench; } + get logger(): Logger { + return this.options.logger; + } + get workspacePath(): string { return this.options.workspacePath; } @@ -103,7 +107,7 @@ export class Application { workspacePath: workspaceOrFolder, userDataDir: this.options.userDataDir, extensionsPath: this.options.extensionsPath, - verbose: this.options.verbose, + logger: this.options.logger, extraArgs }); diff --git a/test/smoke/src/logger.ts b/test/smoke/src/logger.ts new file mode 100644 index 00000000000..b36b502d6ae --- /dev/null +++ b/test/smoke/src/logger.ts @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { appendFileSync, writeFileSync } from 'fs'; +import { format } from 'util'; +import { EOL } from 'os'; + +export interface Logger { + log(message: string, ...args: any[]): void; +} + +export class ConsoleLogger implements Logger { + + log(message: string, ...args: any[]): void { + console.log('**', message, ...args); + } +} + +export class FileLogger implements Logger { + + constructor(private path: string) { + writeFileSync(path, ''); + } + + log(message: string, ...args: any[]): void { + const date = new Date().toISOString(); + appendFileSync(this.path, `[${date}] ${format(message, ...args)}${EOL}`); + } +} + +export class MultiLogger implements Logger { + + constructor(private loggers: Logger[]) { } + + log(message: string, ...args: any[]): void { + for (const logger of this.loggers) { + logger.log(message, ...args); + } + } +} \ No newline at end of file diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index ea4f1365bf2..8398e0d3944 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -27,7 +27,7 @@ import { setup as setupDataExtensionTests } from './areas/extensions/extensions. import { setup as setupTerminalTests } from './areas/terminal/terminal.test'; import { setup as setupDataMultirootTests } from './areas/multiroot/multiroot.test'; import { setup as setupDataLocalizationTests } from './areas/workbench/localization.test'; -import { polling } from './vscode/code'; +import { MultiLogger, Logger, ConsoleLogger, FileLogger } from './logger'; const tmpDir = tmp.dirSync({ prefix: 't' }) as { name: string; removeCallback: Function; }; const testDataPath = tmpDir.name; @@ -41,7 +41,8 @@ const opts = minimist(args, { 'wait-time', 'test-repo', 'keybindings', - 'screenshots' + 'screenshots', + 'log' ], boolean: [ 'verbose' @@ -238,6 +239,16 @@ async function setup(): Promise { } function createApp(quality: Quality): Application { + const loggers: Logger[] = []; + + if (opts.verbose) { + loggers.push(new ConsoleLogger()); + } + + if (opts.log) { + loggers.push(new FileLogger(opts.log)); + } + return new Application({ quality, codePath: opts.build, @@ -246,7 +257,7 @@ function createApp(quality: Quality): Application { extensionsPath, workspaceFilePath, waitTime: parseInt(opts['wait-time'] || '0') || 20, - verbose: opts.verbose + logger: new MultiLogger(loggers) }); } @@ -289,11 +300,23 @@ describe('Test', () => { const name = this.currentTest.fullTitle().replace(/[^a-z0-9\-]/ig, '_'); const screenshotPath = path.join(screenshotsPath, `${name}.png`); - console.log('Last poll message: ', polling.lastTimeoutMessage); + if (opts.log) { + app.logger.log('*** Scr eenshot recorded:', screenshotPath); + } + fs.writeFileSync(screenshotPath, buffer); }); } + if (opts.log) { + beforeEach(async function () { + const app = this.app as Application; + const title = this.currentTest.fullTitle(); + + app.logger.log('***', title.replace(/./g, '=')); + }); + } + setupDataLossTests(); setupDataExplorerTests(); setupDataPreferencesTests(); diff --git a/test/smoke/src/vscode/code.ts b/test/smoke/src/vscode/code.ts index 5240380e776..c60984c6441 100644 --- a/test/smoke/src/vscode/code.ts +++ b/test/smoke/src/vscode/code.ts @@ -8,6 +8,7 @@ import * as cp from 'child_process'; import * as os from 'os'; import { tmpName } from 'tmp'; import { IDriver, connect as connectDriver, IDisposable, IElement } from './driver'; +import { Logger } from '../logger'; const repoPath = path.join(__dirname, '../../../..'); @@ -57,13 +58,13 @@ function getBuildOutPath(root: string): string { } } -async function connect(child: cp.ChildProcess, outPath: string, handlePath: string, verbose: boolean): Promise { +async function connect(child: cp.ChildProcess, outPath: string, handlePath: string, logger: Logger): Promise { let errCount = 0; while (true) { try { const { client, driver } = await connectDriver(outPath, handlePath); - return new Code(child, client, driver, verbose); + return new Code(child, client, driver, logger); } catch (err) { if (++errCount > 50) { child.kill(); @@ -85,7 +86,7 @@ export interface SpawnOptions { workspacePath: string; userDataDir: string; extensionsPath: string; - verbose: boolean; + logger: Logger; extraArgs?: string[]; } @@ -127,22 +128,14 @@ export async function spawn(options: SpawnOptions): Promise { const spawnOptions: cp.SpawnOptions = {}; - if (options.verbose) { - spawnOptions.stdio = 'inherit'; - } - const child = cp.spawn(electronPath, args, spawnOptions); instances.add(child); child.once('exit', () => instances.delete(child)); - return connect(child, outPath, handle, options.verbose); + return connect(child, outPath, handle, options.logger); } -export const polling = { - lastTimeoutMessage: '' -}; - async function poll( fn: () => Promise, acceptFn: (result: T) => boolean, @@ -159,7 +152,6 @@ async function poll( let result; try { - polling.lastTimeoutMessage = timeoutMessage; result = await fn(); if (acceptFn(result)) { @@ -187,24 +179,20 @@ export class Code { private process: cp.ChildProcess, private client: IDisposable, driver: IDriver, - verbose: boolean + readonly logger: Logger ) { - if (verbose) { - this.driver = new Proxy(driver, { - get(target, prop, receiver) { - if (typeof target[prop] !== 'function') { - return target[prop]; - } - - return function (...args) { - console.log('** ', prop, ...args.filter(a => typeof a === 'string')); - return target[prop].apply(this, args); - }; + this.driver = new Proxy(driver, { + get(target, prop, receiver) { + if (typeof target[prop] !== 'function') { + return target[prop]; } - }); - } else { - this.driver = driver; - } + + return function (...args) { + logger.log(`${prop}`, ...args.filter(a => typeof a === 'string')); + return target[prop].apply(this, args); + }; + } + }); } async capturePage(): Promise { From f7b8b1ad2db28cc95254dd0f1fcd8487b28b7b52 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 15:47:12 +0200 Subject: [PATCH 0921/1070] publish log files --- build/tfs/continuous-build.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 0de0b63b073..20fe203c25a 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -19,12 +19,18 @@ phases: - powershell: | .\scripts\test.bat --tfs .\scripts\test-integration.bat - yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\screenshots" + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\screenshots" --log "$(Build.ArtifactStagingDirectory)\smoketest.log" name: test - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' - ArtifactName: Screenshots + ArtifactName: screenshots-win32 + publishLocation: Container + condition: succeededOrFailed() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/smoketest.log' + ArtifactName: logfile-win32 publishLocation: Container condition: succeededOrFailed() @@ -81,11 +87,17 @@ phases: - script: | ./scripts/test.sh --tfs ./scripts/test-integration.sh - yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/screenshots" + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/screenshots" --log "$(Build.ArtifactStagingDirectory)/smoketest.log" name: test - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' - ArtifactName: Screenshots + ArtifactName: screenshots-darwin + publishLocation: Container + condition: succeededOrFailed() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/smoketest.log' + ArtifactName: logfile-darwin publishLocation: Container condition: succeededOrFailed() From 8623ddad7a7aa4744c7faee252afbea76a40f20f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 15:55:27 +0200 Subject: [PATCH 0922/1070] scm: save sizes --- .../browser/parts/views/contributableViews.ts | 33 +++++++++++-- .../parts/scm/electron-browser/scmViewlet.ts | 48 +++++++++++++++++-- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/contributableViews.ts b/src/vs/workbench/browser/parts/views/contributableViews.ts index b835271fc11..3a449130604 100644 --- a/src/vs/workbench/browser/parts/views/contributableViews.ts +++ b/src/vs/workbench/browser/parts/views/contributableViews.ts @@ -177,6 +177,7 @@ export interface IView { export interface IViewState { visible: boolean; order?: number; + size?: number; } export interface IViewDescriptorRef { @@ -184,6 +185,10 @@ export interface IViewDescriptorRef { index: number; } +export interface IAddedViewDescriptorRef extends IViewDescriptorRef { + size?: number; +} + export class ContributableViewsModel { readonly viewDescriptors: IViewDescriptor[] = []; @@ -191,8 +196,8 @@ export class ContributableViewsModel { return this.viewDescriptors.filter(v => this.viewStates.get(v.id).visible); } - private _onDidAdd = new Emitter(); - readonly onDidAdd: Event = this._onDidAdd.event; + private _onDidAdd = new Emitter(); + readonly onDidAdd: Event = this._onDidAdd.event; private _onDidRemove = new Emitter(); readonly onDidRemove: Event = this._onDidRemove.event; @@ -228,7 +233,7 @@ export class ContributableViewsModel { const { visibleIndex, viewDescriptor, state } = this.find(id); if (!viewDescriptor.canToggleVisibility) { - throw new Error('Can\'t toggle this view\'s visibility'); + throw new Error(`Can't toggle this view's visibility`); } if (state.visible === visible) { @@ -238,12 +243,32 @@ export class ContributableViewsModel { state.visible = visible; if (visible) { - this._onDidAdd.fire({ index: visibleIndex, viewDescriptor }); + this._onDidAdd.fire({ index: visibleIndex, viewDescriptor, size: state.size }); } else { this._onDidRemove.fire({ index: visibleIndex, viewDescriptor }); } } + getSize(id: string): number | undefined { + const state = this.viewStates.get(id); + + if (!state) { + throw new Error(`Unknown view ${id}`); + } + + return state.size; + } + + setSize(id: string, size: number): void { + const { viewDescriptor, state } = this.find(id); + + if (!viewDescriptor.canToggleVisibility) { + throw new Error(`Can't resize this view ${id}`); + } + + state.size = size; + } + move(from: string, to: string): void { const fromIndex = firstIndex(this.viewDescriptors, v => v.id === from); const toIndex = firstIndex(this.viewDescriptors, v => v.id === to); diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 8672f0abb17..037a0f29fab 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -57,7 +57,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ThrottledDelayer } from 'vs/base/common/async'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { IViewDescriptorRef, PersistentContributableViewsModel } from 'vs/workbench/browser/parts/views/contributableViews'; +import { IViewDescriptorRef, PersistentContributableViewsModel, IAddedViewDescriptorRef } from 'vs/workbench/browser/parts/views/contributableViews'; import { ViewLocation, IViewDescriptor } from 'vs/workbench/common/views'; import { ViewsViewletPanel } from 'vs/workbench/browser/parts/views/viewsViewlet'; import { IPanelDndController, Panel } from '../../../../base/browser/ui/splitview/panelview'; @@ -1117,6 +1117,8 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { for (const viewDescriptor of this.contributedViews.visibleViewDescriptors) { this.onDidAddContributedView({ viewDescriptor, index: index++ }); } + + this.onDidSashChange(this.saveContributedViewSizes, this, this.disposables); } private onDidAddRepository(repository: ISCMRepository): void { @@ -1244,9 +1246,17 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { return new ContextAwareMenuItemActionItem(action, this.keybindingService, this.notificationService, this.contextMenuService); } + private didLayout = false; layout(dimension: Dimension): void { super.layout(dimension); this._height = dimension.height; + + if (this.didLayout) { + // this.saveViewSizes(); + } else { + this.didLayout = true; + this.restoreContributedViewSizes(); + } } movePanel(from: ViewletPanel, to: ViewletPanel): void { @@ -1302,6 +1312,9 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.resizePanel(panel, size); } + // Resize contributed view sizes + this.restoreContributedViewSizes(); + // React to menu changes for single view mode if (wasSingleView !== this.isSingleView()) { this.singleRepositoryPanelTitleActionsDisposable.dispose(); @@ -1324,7 +1337,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { return value; } - onDidAddContributedView({ viewDescriptor, index }: IViewDescriptorRef): void { + onDidAddContributedView({ viewDescriptor, index, size }: IAddedViewDescriptorRef): void { const start = this.getContributedViewsStartIndex(); const panel = this.instantiationService.createInstance(viewDescriptor.ctor, { id: viewDescriptor.id, @@ -1334,7 +1347,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { viewletSettings: {}//this.viewletSettings }) as ViewsViewletPanel; - this.addPanel(panel, /* (viewState && viewState.size) ||*/ 200, start + index); + this.addPanel(panel, size || panel.minimumSize, start + index); const contextMenuDisposable = addDisposableListener(panel.draggableElement, 'contextmenu', e => { e.stopPropagation(); @@ -1395,6 +1408,35 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { disposable.dispose(); } + private saveContributedViewSizes(): void { + const start = this.getContributedViewsStartIndex(); + + for (let i = 0; i < this.contributedViews.viewDescriptors.length; i++) { + const viewDescriptor = this.contributedViews.viewDescriptors[i]; + const size = this.getPanelSize(this.panels[start + i]); + + this.contributedViews.setSize(viewDescriptor.id, size); + } + } + + private restoreContributedViewSizes(): void { + if (!this.didLayout) { + return; + } + + const start = this.getContributedViewsStartIndex(); + + for (let i = 0; i < this.contributedViews.viewDescriptors.length; i++) { + const panel = this.panels[start + i]; + const viewDescriptor = this.contributedViews.viewDescriptors[i]; + const size = this.contributedViews.getSize(viewDescriptor.id); + + if (typeof size === 'number') { + this.resizePanel(panel, size); + } + } + } + protected isSingleView(): boolean { return super.isSingleView() && this.repositoryPanels.length + this.contributedViews.visibleViewDescriptors.length === 1; } From 2d0626eadbf9f3f2dd7c326b42588ad55882e66d Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 15:58:40 +0200 Subject: [PATCH 0923/1070] debug: prompt before removing breakpoint with condtion or message fixes #47643 --- .../debugEditorContribution.ts | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts index b700d3e313d..4e33173f300 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts @@ -11,6 +11,7 @@ import * as lifecycle from 'vs/base/common/lifecycle'; import * as env from 'vs/base/common/platform'; import uri from 'vs/base/common/uri'; import { visit } from 'vs/base/common/json'; +import severity from 'vs/base/common/severity'; import { Constants } from 'vs/editor/common/core/uint'; import { IAction, Action } from 'vs/base/common/actions'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -43,6 +44,7 @@ import { IMarginData } from 'vs/editor/browser/controller/mouseTarget'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ContextSubMenu } from 'vs/base/browser/contextmenu'; import { memoize } from 'vs/base/common/decorators'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; const HOVER_DELAY = 300; const LAUNCH_JSON_REGEX = /launch\.json$/; @@ -77,7 +79,8 @@ export class DebugEditorContribution implements IDebugEditorContribution { @ITelemetryService private telemetryService: ITelemetryService, @IConfigurationService private configurationService: IConfigurationService, @IThemeService themeService: IThemeService, - @IKeybindingService private keybindingService: IKeybindingService + @IKeybindingService private keybindingService: IKeybindingService, + @IDialogService private dialogService: IDialogService, ) { this.breakpointHintDecoration = []; this.hoverWidget = new DebugHoverWidget(this.editor, this.debugService, this.instantiationService, themeService); @@ -145,7 +148,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { )); actions.push(new Action( 'addConditionalBreakpoint', - nls.localize('conditionalBreakpoint', "Add Conditional Breakpoint..."), + nls.localize('addConditionalBreakpoint', "Add Conditional Breakpoint..."), null, true, () => TPromise.as(this.editor.getContribution(EDITOR_CONTRIBUTION_ID).showBreakpointWidget(lineNumber, undefined)) @@ -190,7 +193,24 @@ export class DebugEditorContribution implements IDebugEditorContribution { .filter(bp => bp.uri.toString() === uri.toString() && bp.lineNumber === lineNumber); if (breakpoints.length) { - breakpoints.forEach(bp => this.debugService.removeBreakpoints(bp.getId())); + if (breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { + const logPoint = breakpoints.every(bp => !!bp.logMessage); + this.dialogService.show(severity.Info, nls.localize('breakpointHasCondition', "This {0} has a valuable {1} that will get lost on remove. Consider disabling the {0} instead.", + logPoint ? nls.localize('logPoint', "log point") : nls.localize('breakpoint', "breakpoint"), logPoint ? nls.localize('message', "message") : nls.localize('condition', "condition")), [ + logPoint ? nls.localize('removeLogPoint', "Remove Log Point") : nls.localize('removeBreakpoint', "Remove Breakpoint"), + logPoint ? nls.localize('disableLogPoint', "Disable Log Point") : nls.localize('disableBreakpoint', "Disable Breakpoint"), + nls.localize('cancel', "Cancel") + ], { cancelId: 2 }).then(choice => { + if (choice === 0) { + breakpoints.forEach(bp => this.debugService.removeBreakpoints(bp.getId())); + } + if (choice === 1) { + breakpoints.forEach(bp => this.debugService.enableOrDisableBreakpoints(false, bp)); + } + }); + } else { + breakpoints.forEach(bp => this.debugService.removeBreakpoints(bp.getId())); + } } else if (canSetBreakpoints) { this.debugService.addBreakpoints(uri, [{ lineNumber }]); } From aa9f65089d9e28d92c52d0287355de067a0cf1cb Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 16:11:54 +0200 Subject: [PATCH 0924/1070] save collapsed state --- .../browser/parts/views/contributableViews.ts | 31 +++++++++++++------ .../parts/scm/electron-browser/scmViewlet.ts | 25 +++++++++------ 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/contributableViews.ts b/src/vs/workbench/browser/parts/views/contributableViews.ts index 3a449130604..42c9ea86328 100644 --- a/src/vs/workbench/browser/parts/views/contributableViews.ts +++ b/src/vs/workbench/browser/parts/views/contributableViews.ts @@ -176,6 +176,7 @@ export interface IView { export interface IViewState { visible: boolean; + collapsed: boolean; order?: number; size?: number; } @@ -186,6 +187,7 @@ export interface IViewDescriptorRef { } export interface IAddedViewDescriptorRef extends IViewDescriptorRef { + collapsed: boolean; size?: number; } @@ -243,12 +245,27 @@ export class ContributableViewsModel { state.visible = visible; if (visible) { - this._onDidAdd.fire({ index: visibleIndex, viewDescriptor, size: state.size }); + this._onDidAdd.fire({ index: visibleIndex, viewDescriptor, size: state.size, collapsed: state.collapsed }); } else { this._onDidRemove.fire({ index: visibleIndex, viewDescriptor }); } } + isCollapsed(id: string): boolean { + const state = this.viewStates.get(id); + + if (!state) { + throw new Error(`Unknown view ${id}`); + } + + return state.collapsed; + } + + setCollapsed(id: string, collapsed: boolean): void { + const { state } = this.find(id); + state.collapsed = collapsed; + } + getSize(id: string): number | undefined { const state = this.viewStates.get(id); @@ -260,12 +277,7 @@ export class ContributableViewsModel { } setSize(id: string, size: number): void { - const { viewDescriptor, state } = this.find(id); - - if (!viewDescriptor.canToggleVisibility) { - throw new Error(`Can't resize this view ${id}`); - } - + const { state } = this.find(id); state.size = size; } @@ -341,7 +353,8 @@ export class ContributableViewsModel { for (const viewDescriptor of viewDescriptors) { if (!this.viewStates.has(viewDescriptor.id)) { this.viewStates.set(viewDescriptor.id, { - visible: true + visible: true, + collapsed: false }); } } @@ -370,7 +383,7 @@ export class ContributableViewsModel { const state = this.viewStates.get(viewDescriptor.id); if (state.visible) { - this._onDidAdd.fire({ index: startIndex++, viewDescriptor }); + this._onDidAdd.fire({ index: startIndex++, viewDescriptor, size: state.size, collapsed: state.collapsed }); } } } diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 037a0f29fab..24668ee7847 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -8,7 +8,7 @@ import 'vs/css!./media/scmViewlet'; import { localize } from 'vs/nls'; import { TPromise } from 'vs/base/common/winjs.base'; -import { Event, Emitter, chain, mapEvent, anyEvent, filterEvent } from 'vs/base/common/event'; +import { Event, Emitter, chain, mapEvent, anyEvent, filterEvent, latch } from 'vs/base/common/event'; import { domEvent, stop } from 'vs/base/browser/event'; import { basename } from 'vs/base/common/paths'; import { onUnexpectedError } from 'vs/base/common/errors'; @@ -1063,7 +1063,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { get selectedRepositories(): ISCMRepository[] { return this.repositoryPanels.map(p => p.repository); } private contributedViews: PersistentContributableViewsModel; - private contextMenuDisposables: IDisposable[] = []; + private contributedViewDisposables: IDisposable[] = []; constructor( @IPartService partService: IPartService, @@ -1115,7 +1115,10 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { let index = this.getContributedViewsStartIndex(); for (const viewDescriptor of this.contributedViews.visibleViewDescriptors) { - this.onDidAddContributedView({ viewDescriptor, index: index++ }); + const size = this.contributedViews.getSize(viewDescriptor.id); + const collapsed = this.contributedViews.isCollapsed(viewDescriptor.id); + + this.onDidAddContributedView({ viewDescriptor, index: index++, size, collapsed }); } this.onDidSashChange(this.saveContributedViewSizes, this, this.disposables); @@ -1337,14 +1340,14 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { return value; } - onDidAddContributedView({ viewDescriptor, index, size }: IAddedViewDescriptorRef): void { + onDidAddContributedView({ viewDescriptor, index, size, collapsed }: IAddedViewDescriptorRef): void { const start = this.getContributedViewsStartIndex(); const panel = this.instantiationService.createInstance(viewDescriptor.ctor, { id: viewDescriptor.id, name: viewDescriptor.name, actionRunner: this.getActionRunner(), - expanded: true, //!(viewState ? viewState.collapsed : viewDescriptor.collapsed), - viewletSettings: {}//this.viewletSettings + expanded: !collapsed, + viewletSettings: {} // what is this }) as ViewsViewletPanel; this.addPanel(panel, size || panel.minimumSize, start + index); @@ -1355,7 +1358,11 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.onViewHeaderContextMenu(new StandardMouseEvent(e), viewDescriptor); }); - this.contextMenuDisposables.splice(index, 0, contextMenuDisposable); + const collapseDisposable = latch(mapEvent(panel.onDidChange, () => !panel.isExpanded()))(collapsed => { + this.contributedViews.setCollapsed(viewDescriptor.id, collapsed); + }); + + this.contributedViewDisposables.splice(index, 0, combinedDisposable([contextMenuDisposable, collapseDisposable])); } private onViewHeaderContextMenu(event: StandardMouseEvent, viewDescriptor: IViewDescriptor): void { @@ -1404,7 +1411,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { this.removePanel(panel); - const [disposable] = this.contextMenuDisposables.splice(index, 1); + const [disposable] = this.contributedViewDisposables.splice(index, 1); disposable.dispose(); } @@ -1456,7 +1463,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { dispose(): void { this.disposables = dispose(this.disposables); - this.contextMenuDisposables = dispose(this.contextMenuDisposables); + this.contributedViewDisposables = dispose(this.contributedViewDisposables); this.mainPanelDisposable.dispose(); super.dispose(); } From 2be3fd376d26e9c9533548bfd590380059380c8e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 16:13:25 +0200 Subject: [PATCH 0925/1070] fix bad log --- test/smoke/src/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index 8398e0d3944..eb74ad61c79 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -301,7 +301,7 @@ describe('Test', () => { const screenshotPath = path.join(screenshotsPath, `${name}.png`); if (opts.log) { - app.logger.log('*** Scr eenshot recorded:', screenshotPath); + app.logger.log('*** Screenshot recorded:', screenshotPath); } fs.writeFileSync(screenshotPath, buffer); @@ -313,7 +313,7 @@ describe('Test', () => { const app = this.app as Application; const title = this.currentTest.fullTitle(); - app.logger.log('***', title.replace(/./g, '=')); + app.logger.log('*** Test start:', title); }); } From fbdc0496a8c16ec9c910e7fb3bf1638d113e64c7 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 16:15:39 +0200 Subject: [PATCH 0926/1070] single build artifacts folder --- build/tfs/continuous-build.yml | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index 20fe203c25a..cd59b418084 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -19,18 +19,12 @@ phases: - powershell: | .\scripts\test.bat --tfs .\scripts\test-integration.bat - yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\screenshots" --log "$(Build.ArtifactStagingDirectory)\smoketest.log" + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\artifacts" --log "$(Build.ArtifactStagingDirectory)\artifacts\smoketest.log" name: test - task: PublishBuildArtifacts@1 inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' - ArtifactName: screenshots-win32 - publishLocation: Container - condition: succeededOrFailed() - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/smoketest.log' - ArtifactName: logfile-win32 + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + ArtifactName: build-artifacts-win32 publishLocation: Container condition: succeededOrFailed() @@ -87,17 +81,11 @@ phases: - script: | ./scripts/test.sh --tfs ./scripts/test-integration.sh - yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/screenshots" --log "$(Build.ArtifactStagingDirectory)/smoketest.log" + yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/artifacts" --log "$(Build.ArtifactStagingDirectory)/artifacts/smoketest.log" name: test - task: PublishBuildArtifacts@1 inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/screenshots' - ArtifactName: screenshots-darwin + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + ArtifactName: build-artifacts-darwin publishLocation: Container - condition: succeededOrFailed() - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/smoketest.log' - ArtifactName: logfile-darwin - publishLocation: Container - condition: succeededOrFailed() + condition: succeededOrFailed() \ No newline at end of file From e524652273f6419c692fdebe172168e8ad0a1c75 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Apr 2018 15:42:33 +0200 Subject: [PATCH 0927/1070] go a little slower on well-defined errors, #47475 --- src/vs/platform/files/common/files.ts | 13 ++--- src/vs/vscode.proposed.d.ts | 55 ++++++++++--------- .../electron-browser/mainThreadFileSystem.ts | 10 +++- .../electron-browser/remoteFileService.ts | 4 +- 4 files changed, 43 insertions(+), 39 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index cab1972b2e0..0c4dbfe44af 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -158,14 +158,13 @@ export enum FileType2 { export class FileError extends Error { + static readonly EntryExists = new FileError('EEXIST'); + static readonly EntryNotFound = new FileError('ENOENT'); + static readonly EntryNotADirectory = new FileError('ENOTDIR'); + static readonly EntryIsADirectory = new FileError('EISDIR'); - static readonly EEXIST = new FileError('EEXIST'); - static readonly ENOENT = new FileError('ENOENT'); - static readonly ENOTDIR = new FileError('ENOTDIR'); - static readonly EISDIR = new FileError('EISDIR'); - - constructor(readonly code: string) { - super(code); + constructor(readonly code: string, message?: string) { + super(message || code); } is(err: any): err is FileError { if (!err || typeof err !== 'object') { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 6bf0f87445f..ab7e16db4ce 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -172,32 +172,32 @@ declare module 'vscode' { // create(resource: Uri): Thenable; } - export class FileError extends Error { + // export class FileError extends Error { - /** - * Entry already exists. - */ - static readonly EEXIST: FileError; + // /** + // * Entry already exists, e.g. when creating a file or folder. + // */ + // static readonly EntryExists: FileError; - /** - * Entry does not exist. - */ - static readonly ENOENT: FileError; + // /** + // * Entry does not exist. + // */ + // static readonly EntryNotFound: FileError; - /** - * Entry is not a directory. - */ - static readonly ENOTDIR: FileError; + // /** + // * Entry is not a directory. + // */ + // static readonly EntryNotADirectory: FileError; - /** - * Entry is a directory. - */ - static readonly EISDIR: FileError; + // /** + // * Entry is a directory. + // */ + // static readonly EntryIsADirectory: FileError; - readonly code: string; + // readonly code: string; - constructor(code: string, message?: string); - } + // constructor(code: string, message?: string); + // } export enum FileChangeType2 { Changed = 1, @@ -229,7 +229,9 @@ declare module 'vscode' { Exclusive = 0b1000 } - // todo@joh add open/close calls? + /** + * + */ export interface FileSystemProvider2 { _version: 7; @@ -242,15 +244,14 @@ declare module 'vscode' { readonly onDidChangeFile: Event; /** - * Subscribe to events in the file or folder denoted by `uri`. - * @param uri - * @param options + * Subscribe to events in the file or folder denoted by `uri`. + * @param uri + * @param options */ watch(uri: Uri, options: { recursive?: boolean; excludes?: string[] }): Disposable; /** - * Retrieve metadata about a file. Must throw an [`ENOENT`](#FileError.ENOENT)-error - * when the file doesn't exist. + * Retrieve metadata about a file. * * @param uri The uri of the file to retrieve meta data about. * @param token A cancellation token. @@ -269,7 +270,7 @@ declare module 'vscode' { /** * Create a new directory. *Note* that new files are created via `write`-calls. - * + * * @param uri The uri of the *new* folder. * @param token A cancellation token. */ diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 0a9f3485f76..f62ded3f536 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files'; +import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat, IWatchOptions, FileError } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @@ -86,8 +86,10 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP // --- forwarding calls - stat(resource: URI): TPromise { - return this._proxy.$stat(this._handle, resource); + stat(resource: URI): TPromise { + return this._proxy.$stat(this._handle, resource).then(undefined, err => { + throw err; + }); } readFile(resource: URI, opts: { flags: FileOpenFlags }): TPromise { return this._proxy.$readFile(this._handle, resource, opts.flags).then(encoded => { @@ -112,4 +114,6 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP readdir(resource: URI): TPromise<[string, IStat][], any> { return this._proxy.$readdir(this._handle, resource); } + + } diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 322e173fddc..b7143cff479 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -369,8 +369,8 @@ export class RemoteFileService extends FileService { this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, fileStat)); return fileStat; }, err => { - if (FileError.EEXIST.is(err)) { - return TPromise.wrapError(new FileOperationError('EEXIST', FileOperationResult.FILE_MODIFIED_SINCE, options)); + if (FileError.EntryExists.is(err)) { + return TPromise.wrapError(new FileOperationError(err.code, FileOperationResult.FILE_MODIFIED_SINCE, options)); } throw err; }); From 5292f76fcd83c374376778b77d5968c323abece4 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Apr 2018 16:23:28 +0200 Subject: [PATCH 0928/1070] add (optional) copy function #47475 --- src/vs/platform/files/common/files.ts | 36 ++++++------ src/vs/vscode.proposed.d.ts | 16 ++++-- .../electron-browser/mainThreadFileSystem.ts | 28 +++++++--- src/vs/workbench/api/node/extHost.protocol.ts | 5 +- .../workbench/api/node/extHostFileSystem.ts | 20 ++++++- .../electron-browser/remoteFileService.ts | 56 +++++++++++-------- .../files/electron-browser/streams.ts | 29 ++++++---- 7 files changed, 122 insertions(+), 68 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 0c4dbfe44af..25d4550d7fa 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -192,31 +192,35 @@ export interface IWatchOptions { exclude?: string[]; } -export interface IFileSystemProviderBase { +export enum FileSystemProviderCapabilities { + FileReadWrite = 0b1, + FileOpenReadWriteClose = 0b10, + FileFolderCopy = 0b100 +} + +export interface IFileSystemProvider { + + readonly capabilities: FileSystemProviderCapabilities; + onDidChangeFile: Event; watch(resource: URI, opts: IWatchOptions): IDisposable; + stat(resource: URI): TPromise; - rename(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise; mkdir(resource: URI): TPromise; readdir(resource: URI): TPromise<[string, IStat][]>; delete(resource: URI): TPromise; -} -export interface ISimpleReadWriteProvider { - _type: 'simple'; - readFile(resource: URI, opts: { flags: FileOpenFlags }): TPromise; - writeFile(resource: URI, content: Uint8Array, opts: { flags: FileOpenFlags }): TPromise; -} + rename(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise; + copy?(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise; -export interface IReadWriteProvider { - _type: 'chunked'; - open(resource: URI, opts: { flags: FileOpenFlags }): TPromise; - close(fd: number): TPromise; - read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise; - write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise; -} + readFile?(resource: URI, opts: { flags: FileOpenFlags }): TPromise; + writeFile?(resource: URI, content: Uint8Array, opts: { flags: FileOpenFlags }): TPromise; -export type IFileSystemProvider = (IFileSystemProviderBase & ISimpleReadWriteProvider) | (IFileSystemProviderBase & IReadWriteProvider); + open?(resource: URI, opts: { flags: FileOpenFlags }): TPromise; + close?(fd: number): TPromise; + read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise; + write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise; +} export enum FileOperation { CREATE, diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index ab7e16db4ce..704e11b1a6b 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -297,15 +297,21 @@ declare module 'vscode' { /** * Rename a file or folder. * - * @param oldUri The exiting file or folder - * @param newUri The target location + * @param oldUri The existing file or folder. + * @param newUri The target location. * @param token A cancellation token. */ rename(oldUri: Uri, newUri: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable; - // todo@remote - // helps with performance bigly - // copy?(from: Uri, to: Uri): FileStat2 | Thenable; + /** + * Copy files or folders. Implementing this function is optional but it will speedup + * the copy operation. + * + * @param uri The existing file or folder. + * @param target The target location. + * @param token A cancellation token. + */ + copy?(uri: Uri, target: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable; // todo@remote // ? useTrash, expose trash diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index f62ded3f536..b3aedaab4a2 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileOpenFlags, IFileChange, IFileService, IFileSystemProviderBase, ISimpleReadWriteProvider, IStat, IWatchOptions, FileError } from 'vs/platform/files/common/files'; +import { FileOpenFlags, IFileChange, IFileService, IStat, IWatchOptions, FileError, FileSystemProviderCapabilities, IFileSystemProvider } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @@ -30,9 +30,10 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { this._fileProvider.clear(); } - $registerFileSystemProvider(handle: number, scheme: string): void { - this._fileProvider.set(handle, new RemoteFileSystemProvider(this._fileService, scheme, handle, this._proxy)); + $registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void { + this._fileProvider.set(handle, new RemoteFileSystemProvider(this._fileService, scheme, capabilities, handle, this._proxy)); } + $unregisterProvider(handle: number): void { dispose(this._fileProvider.get(handle)); this._fileProvider.delete(handle); @@ -43,21 +44,22 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { } } -class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemProviderBase { - - _type: 'simple' = 'simple'; +class RemoteFileSystemProvider implements IFileSystemProvider { private readonly _onDidChange = new Emitter(); private readonly _registrations: IDisposable[]; readonly onDidChangeFile: Event = this._onDidChange.event; + readonly capabilities: FileSystemProviderCapabilities; constructor( fileService: IFileService, scheme: string, + capabilities: FileSystemProviderCapabilities, private readonly _handle: number, private readonly _proxy: ExtHostFileSystemShape ) { + this.capabilities = capabilities; this._registrations = [fileService.registerProvider(scheme, this)]; } @@ -91,29 +93,37 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP throw err; }); } + readFile(resource: URI, opts: { flags: FileOpenFlags }): TPromise { return this._proxy.$readFile(this._handle, resource, opts.flags).then(encoded => { return Buffer.from(encoded, 'base64'); }); } + writeFile(resource: URI, content: Uint8Array, opts: { flags: FileOpenFlags }): TPromise { let encoded = Buffer.isBuffer(content) ? content.toString('base64') : Buffer.from(content.buffer, content.byteOffset, content.byteLength).toString('base64'); return this._proxy.$writeFile(this._handle, resource, encoded, opts.flags); } + delete(resource: URI): TPromise { return this._proxy.$delete(this._handle, resource); } - rename(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise { - return this._proxy.$rename(this._handle, resource, target, opts.flags); - } + mkdir(resource: URI): TPromise { return this._proxy.$mkdir(this._handle, resource); } + readdir(resource: URI): TPromise<[string, IStat][], any> { return this._proxy.$readdir(this._handle, resource); } + rename(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise { + return this._proxy.$rename(this._handle, resource, target, opts.flags); + } + copy(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise { + return this._proxy.$copy(this._handle, resource, target, opts.flags); + } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index bec0acdb06e..42ef9f86a07 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -42,7 +42,7 @@ import { ITreeItem } from 'vs/workbench/common/views'; import { ThemeColor } from 'vs/platform/theme/common/themeService'; import { IDisposable } from 'vs/base/common/lifecycle'; import { SerializedError } from 'vs/base/common/errors'; -import { IStat, FileChangeType, FileOpenFlags, IWatchOptions } from 'vs/platform/files/common/files'; +import { IStat, FileChangeType, FileOpenFlags, IWatchOptions, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration'; import { ISingleEditOperation } from 'vs/editor/common/model'; @@ -382,7 +382,7 @@ export interface IFileChangeDto { } export interface MainThreadFileSystemShape extends IDisposable { - $registerFileSystemProvider(handle: number, scheme: string): void; + $registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void; $unregisterProvider(handle: number): void; $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; } @@ -572,6 +572,7 @@ export interface ExtHostFileSystemShape { $readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise; $writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise; $rename(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise; + $copy(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise; $mkdir(handle: number, resource: UriComponents): TPromise; $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; $delete(handle: number, resource: UriComponents): TPromise; diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index e82b05fca20..78d27342c02 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -208,7 +208,13 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { this._linkProvider.add(scheme); this._usedSchemes.add(scheme); this._fsProvider.set(handle, provider); - this._proxy.$registerFileSystemProvider(handle, scheme); + + let capabilites = files.FileSystemProviderCapabilities.FileReadWrite; + if (typeof provider.copy === 'function') { + capabilites += files.FileSystemProviderCapabilities.FileFolderCopy; + } + + this._proxy.$registerFileSystemProvider(handle, scheme, capabilites); const subscription = provider.onDidChangeFile(event => { let newEvent = event.map(e => { @@ -244,9 +250,11 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } + $readdir(handle: number, resource: UriComponents): TPromise<[string, files.IStat][], any> { return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); } + $readFile(handle: number, resource: UriComponents, flags: files.FileOpenFlags): TPromise { return asWinJsPromise(token => { return this._fsProvider.get(handle).readFile(URI.revive(resource), { flags }, token); @@ -254,24 +262,34 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return Buffer.isBuffer(data) ? data.toString('base64') : Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString('base64'); }); } + $writeFile(handle: number, resource: UriComponents, base64Content: string, flags: files.FileOpenFlags): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), { flags }, token)); } + $delete(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token)); } + $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); } + + $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise { + return asWinJsPromise(token => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); + } + $mkdir(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); } + $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void { asWinJsPromise(token => { let subscription = this._fsProvider.get(handle).watch(URI.revive(resource), opts); this._watches.set(session, subscription); }); } + $unwatch(handle: number, session: number): void { let subscription = this._watches.get(session); if (subscription) { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index b7143cff479..3d6d056a71b 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -16,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileError, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileError, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -522,31 +522,39 @@ export class RemoteFileService extends FileService { return super.copyFile(source, target, overwrite); } - const prepare = overwrite - ? this.del(target).then(undefined, err => { /*ignore*/ }) - : TPromise.as(null); + return this._withProvider(target).then(provider => { - return prepare.then(() => { - // todo@ben, can only copy text files - // https://github.com/Microsoft/vscode/issues/41543 - return this.resolveContent(source, { acceptTextOnly: true }).then(content => { - return this._withProvider(target).then(provider => { - return this._writeFile( - provider, target, - new StringSnapshot(content.value), - { encoding: content.encoding }, - FileOpenFlags.Create | FileOpenFlags.Write - ).then(fileStat => { - this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.COPY, fileStat)); - return fileStat; + if (source.scheme === target.scheme && (provider.capabilities & FileSystemProviderCapabilities.FileFolderCopy)) { + // good: provider supports copy withing scheme + return provider.copy(source, target, { flags: 0 }).then(stat => toIFileStat(provider, [target, stat])); + } + + const prepare = overwrite + ? this.del(target).then(undefined, err => { /*ignore*/ }) + : TPromise.as(null); + + return prepare.then(() => { + // todo@ben, can only copy text files + // https://github.com/Microsoft/vscode/issues/41543 + return this.resolveContent(source, { acceptTextOnly: true }).then(content => { + return this._withProvider(target).then(provider => { + return this._writeFile( + provider, target, + new StringSnapshot(content.value), + { encoding: content.encoding }, + FileOpenFlags.Create | FileOpenFlags.Write + ).then(fileStat => { + this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.COPY, fileStat)); + return fileStat; + }); + }, err => { + if (err instanceof Error && err.name === 'ENOPRO') { + // file scheme + return super.updateContent(target, content.value, { encoding: content.encoding }); + } else { + return TPromise.wrapError(err); + } }); - }, err => { - if (err instanceof Error && err.name === 'ENOPRO') { - // file scheme - return super.updateContent(target, content.value, { encoding: content.encoding }); - } else { - return TPromise.wrapError(err); - } }); }); }); diff --git a/src/vs/workbench/services/files/electron-browser/streams.ts b/src/vs/workbench/services/files/electron-browser/streams.ts index 4af45b17119..ce1f4e50d54 100644 --- a/src/vs/workbench/services/files/electron-browser/streams.ts +++ b/src/vs/workbench/services/files/electron-browser/streams.ts @@ -7,16 +7,20 @@ import { Readable, Writable } from 'stream'; import { UTF8 } from 'vs/base/node/encoding'; import URI from 'vs/base/common/uri'; -import { IFileSystemProvider, ITextSnapshot, ISimpleReadWriteProvider, IReadWriteProvider, FileOpenFlags } from 'vs/platform/files/common/files'; +import { IFileSystemProvider, ITextSnapshot, FileSystemProviderCapabilities, FileOpenFlags } from 'vs/platform/files/common/files'; +import { illegalArgument } from 'vs/base/common/errors'; export function createWritableOfProvider(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { - switch (provider._type) { - case 'simple': return createSimpleWritable(provider, resource, flags); - case 'chunked': return createWritable(provider, resource, flags); + if (provider.capabilities & FileSystemProviderCapabilities.FileOpenReadWriteClose) { + return createWritable(provider, resource, flags); + } else if (provider.capabilities & FileSystemProviderCapabilities.FileReadWrite) { + return createSimpleWritable(provider, resource, flags); + } else { + throw illegalArgument(); } } -function createSimpleWritable(provider: ISimpleReadWriteProvider, resource: URI, flags: FileOpenFlags): Writable { +function createSimpleWritable(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { return new class extends Writable { _chunks: Buffer[] = []; constructor(opts?) { @@ -37,7 +41,7 @@ function createSimpleWritable(provider: ISimpleReadWriteProvider, resource: URI, }; } -function createWritable(provider: IReadWriteProvider, resource: URI, flags: FileOpenFlags): Writable { +function createWritable(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { return new class extends Writable { _fd: number; _pos: number; @@ -67,13 +71,16 @@ function createWritable(provider: IReadWriteProvider, resource: URI, flags: File } export function createReadableOfProvider(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { - switch (provider._type) { - case 'simple': return createSimpleReadable(provider, resource, position, flags); - case 'chunked': return createReadable(provider, resource, position, flags); + if (provider.capabilities & FileSystemProviderCapabilities.FileOpenReadWriteClose) { + return createReadable(provider, resource, position, flags); + } else if (provider.capabilities & FileSystemProviderCapabilities.FileReadWrite) { + return createSimpleReadable(provider, resource, position, flags); + } else { + throw illegalArgument(); } } -function createReadable(provider: IReadWriteProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { +function createReadable(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { return new class extends Readable { _fd: number; _pos: number = position; @@ -117,7 +124,7 @@ function createReadable(provider: IReadWriteProvider, resource: URI, position: n }; } -function createSimpleReadable(provider: ISimpleReadWriteProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { +function createSimpleReadable(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { return new class extends Readable { _readOperation: Thenable; _read(size?: number): void { From 28f57593c75edb6c344dac358bbc83fd4a535d85 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 16:35:21 +0200 Subject: [PATCH 0929/1070] smoketest: improve preferences smoketest reliability --- test/smoke/src/areas/editor/editor.test.ts | 6 +- test/smoke/src/areas/editor/editor.ts | 62 ++++++++++--------- test/smoke/src/areas/preferences/settings.ts | 4 +- .../src/areas/statusbar/statusbar.test.ts | 2 +- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/test/smoke/src/areas/editor/editor.test.ts b/test/smoke/src/areas/editor/editor.test.ts index b892c49d5da..af9f49cf4c6 100644 --- a/test/smoke/src/areas/editor/editor.test.ts +++ b/test/smoke/src/areas/editor/editor.test.ts @@ -19,7 +19,7 @@ export function setup() { const app = this.app as Application; await app.workbench.quickopen.openFile('www'); - const references = await app.workbench.editor.findReferences('app', 7); + const references = await app.workbench.editor.findReferences('www', 'app', 7); await references.waitForReferencesCountInTitle(3); await references.waitForReferencesCount(3); @@ -53,7 +53,7 @@ export function setup() { const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); - await app.workbench.editor.gotoDefinition('express', 11); + await app.workbench.editor.gotoDefinition('app.js', 'express', 11); await app.workbench.editors.waitForActiveTab('index.d.ts'); }); @@ -62,7 +62,7 @@ export function setup() { const app = this.app as Application; await app.workbench.quickopen.openFile('app.js'); - const peek = await app.workbench.editor.peekDefinition('express', 11); + const peek = await app.workbench.editor.peekDefinition('app.js', 'express', 11); await peek.waitForFile('index.d.ts'); }); diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index 41a04d85412..0482c94bfd6 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -10,18 +10,18 @@ import { Code } from '../../vscode/code'; const RENAME_BOX = '.monaco-editor .monaco-editor.rename-box'; const RENAME_INPUT = `${RENAME_BOX} .rename-input`; const EDITOR = filename => `.monaco-editor[data-uri$="${filename}"]`; +const VIEW_LINES = filename => `${EDITOR(filename)} .view-lines`; +const LINE_NUMBERS = filename => `${EDITOR(filename)} .margin .margin-view-overlays .line-numbers`; export class Editor { - private static readonly VIEW_LINES = '.monaco-editor .view-lines'; - private static readonly LINE_NUMBERS = '.monaco-editor .margin .margin-view-overlays .line-numbers'; private static readonly FOLDING_EXPANDED = '.monaco-editor .margin .margin-view-overlays>:nth-child(${INDEX}) .folding'; private static readonly FOLDING_COLLAPSED = `${Editor.FOLDING_EXPANDED}.collapsed`; constructor(private code: Code, private commands: Commands) { } - async findReferences(term: string, line: number): Promise { - await this.clickOnTerm(term, line); + async findReferences(filename: string, term: string, line: number): Promise { + await this.clickOnTerm(filename, term, line); await this.commands.runCommand('Find All References'); const references = new References(this.code); await references.waitUntilOpen(); @@ -29,7 +29,7 @@ export class Editor { } async rename(filename: string, line: number, from: string, to: string): Promise { - await this.clickOnTerm(from, line); + await this.clickOnTerm(filename, from, line); await this.commands.runCommand('Rename Symbol'); await this.code.waitForActiveElement(RENAME_INPUT); @@ -38,21 +38,21 @@ export class Editor { await this.code.dispatchKeybinding('enter'); } - async gotoDefinition(term: string, line: number): Promise { - await this.clickOnTerm(term, line); + async gotoDefinition(filename: string, term: string, line: number): Promise { + await this.clickOnTerm(filename, term, line); await this.commands.runCommand('Go to Definition'); } - async peekDefinition(term: string, line: number): Promise { - await this.clickOnTerm(term, line); + async peekDefinition(filename: string, term: string, line: number): Promise { + await this.clickOnTerm(filename, term, line); await this.commands.runCommand('Peek Definition'); const peek = new References(this.code); await peek.waitUntilOpen(); return peek; } - async waitForHighlightingLine(line: number): Promise { - const currentLineIndex = await this.getViewLineIndex(line); + async waitForHighlightingLine(filename: string, line: number): Promise { + const currentLineIndex = await this.getViewLineIndex(filename, line); if (currentLineIndex) { await this.code.waitForElement(`.monaco-editor .view-overlays>:nth-child(${currentLineIndex}) .current-line`); return; @@ -60,31 +60,37 @@ export class Editor { throw new Error('Cannot find line ' + line); } - async getSelector(term: string, line: number): Promise { - const lineIndex = await this.getViewLineIndex(line); - const classNames = await this.getClassSelectors(term, lineIndex); - return `${Editor.VIEW_LINES}>:nth-child(${lineIndex}) span span.${classNames[0]}`; + private async getSelector(filename: string, term: string, line: number): Promise { + const lineIndex = await this.getViewLineIndex(filename, line); + const classNames = await this.getClassSelectors(filename, term, lineIndex); + + return `${VIEW_LINES(filename)}>:nth-child(${lineIndex}) span span.${classNames[0]}`; } - async foldAtLine(line: number): Promise { - const lineIndex = await this.getViewLineIndex(line); + async foldAtLine(filename: string, line: number): Promise { + const lineIndex = await this.getViewLineIndex(filename, line); await this.code.waitAndClick(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); await this.code.waitForElement(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); } - async unfoldAtLine(line: number): Promise { - const lineIndex = await this.getViewLineIndex(line); + async unfoldAtLine(filename: string, line: number): Promise { + const lineIndex = await this.getViewLineIndex(filename, line); await this.code.waitAndClick(Editor.FOLDING_COLLAPSED.replace('${INDEX}', '' + lineIndex)); await this.code.waitForElement(Editor.FOLDING_EXPANDED.replace('${INDEX}', '' + lineIndex)); } - async waitUntilShown(line: number): Promise { - await this.getViewLineIndex(line); + private async clickOnTerm(filename: string, term: string, line: number): Promise { + const selector = await this.getSelector(filename, term, line); + await this.code.waitAndClick(selector); } - async clickOnTerm(term: string, line: number): Promise { - const selector = await this.getSelector(term, line); - await this.code.waitAndClick(selector); + async waitForEditorFocus(filename: string, lineNumber: number, selectorPrefix = ''): Promise { + const editor = [selectorPrefix || '', EDITOR(filename)].join(' '); + const line = `${editor} .view-lines > .view-line:nth-child(${lineNumber})`; + const textarea = `${editor} textarea`; + + await this.code.waitAndClick(line); + await this.code.waitForActiveElement(textarea); } async waitForTypeInEditor(filename: string, text: string, selectorPrefix = ''): Promise { @@ -105,14 +111,14 @@ export class Editor { return this.code.waitForTextContent(selector, undefined, c => accept(c.replace(/\u00a0/g, ' '))); } - private async getClassSelectors(term: string, viewline: number): Promise { - const elements = await this.code.waitForElements(`${Editor.VIEW_LINES}>:nth-child(${viewline}) span span`, false, els => els.some(el => el.textContent === term)); + private async getClassSelectors(filename: string, term: string, viewline: number): Promise { + const elements = await this.code.waitForElements(`${VIEW_LINES(filename)}>:nth-child(${viewline}) span span`, false, els => els.some(el => el.textContent === term)); const { className } = elements.filter(r => r.textContent === term)[0]; return className.split(/\s/g); } - private async getViewLineIndex(line: number): Promise { - const elements = await this.code.waitForElements(Editor.LINE_NUMBERS, false, els => { + private async getViewLineIndex(filename: string, line: number): Promise { + const elements = await this.code.waitForElements(LINE_NUMBERS(filename), false, els => { return els.some(el => el.textContent === `${line}`); }); diff --git a/test/smoke/src/areas/preferences/settings.ts b/test/smoke/src/areas/preferences/settings.ts index 3ac98059629..7d398598f30 100644 --- a/test/smoke/src/areas/preferences/settings.ts +++ b/test/smoke/src/areas/preferences/settings.ts @@ -16,7 +16,6 @@ export enum ActivityBarPosition { } const SEARCH_INPUT = '.settings-search-input input'; -const EDITOR = '.editable-preferences-editor-container .monaco-editor textarea'; export class SettingsEditor { @@ -27,8 +26,7 @@ export class SettingsEditor { await this.code.waitAndClick(SEARCH_INPUT); await this.code.waitForActiveElement(SEARCH_INPUT); - await this.code.dispatchKeybinding('down'); - await this.code.waitForActiveElement(EDITOR); + await this.editor.waitForEditorFocus('settings.json', 1, '.editable-preferences-editor-container'); await this.code.dispatchKeybinding('right'); await this.editor.waitForTypeInEditor('settings.json', `"${setting}": ${value}`, '.editable-preferences-editor-container'); diff --git a/test/smoke/src/areas/statusbar/statusbar.test.ts b/test/smoke/src/areas/statusbar/statusbar.test.ts index b5c119c0539..9fcd47bf9b5 100644 --- a/test/smoke/src/areas/statusbar/statusbar.test.ts +++ b/test/smoke/src/areas/statusbar/statusbar.test.ts @@ -75,7 +75,7 @@ export function setup() { await app.workbench.quickopen.waitForQuickOpenOpened(); await app.workbench.quickopen.submit(':15'); - await app.workbench.editor.waitForHighlightingLine(15); + await app.workbench.editor.waitForHighlightingLine('app.js', 15); }); it(`verifies if changing EOL is reflected in the status bar`, async function () { From 7f043c268e8cfb70246d9e446e8d6c2e5ce18bf4 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 07:48:02 -0700 Subject: [PATCH 0930/1070] Pass terminal shell launch config through --- .../mainThreadTerminalService.ts | 25 ++++--- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- .../api/node/extHostTerminalService.ts | 65 ++++++++++++++---- .../parts/terminal/common/terminal.ts | 11 ++- .../parts/terminal/common/terminalService.ts | 8 +-- .../electron-browser/terminalInstance.ts | 1 + .../terminalProcessManager.ts | 68 +++++++++---------- .../electron-browser/terminalService.ts | 5 +- .../terminal/node/terminalEnvironment.ts | 1 - .../node/terminalProcessExtHostProxy.ts | 7 +- 10 files changed, 123 insertions(+), 70 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 4aea9d9d787..4ea4d4eeeaf 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -5,9 +5,9 @@ 'use strict'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalProcessExtHostProxy, ITerminalProcessExtHostRequest } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; -import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext } from '../node/extHost.protocol'; +import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext, ShellLaunchConfigDto } from '../node/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; @extHostNamedCustomer(MainContext.MainThreadTerminalService) @@ -31,7 +31,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape })); this._toDispose.push(terminalService.onInstanceDisposed(terminalInstance => this._onTerminalDisposed(terminalInstance))); this._toDispose.push(terminalService.onInstanceProcessIdReady(terminalInstance => this._onTerminalProcessIdReady(terminalInstance))); - this._toDispose.push(terminalService.onInstanceRequestExtHostProcess(proxy => this._onTerminalRequestExtHostProcess(proxy))); + this._toDispose.push(terminalService.onInstanceRequestExtHostProcess(request => this._onTerminalRequestExtHostProcess(request))); // Set initial ext host state this.terminalService.terminalInstances.forEach(t => { @@ -100,14 +100,21 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape this._proxy.$acceptTerminalProcessId(terminalInstance.id, terminalInstance.processId); } - private _onTerminalRequestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void { + private _onTerminalRequestExtHostProcess(request: ITerminalProcessExtHostRequest): void { console.log('mainThreadTerminalService#_onTerminalRequestExtHostProcess', arguments); - this._terminalProcesses[proxy.terminalId] = proxy; - this._proxy.$createProcess(proxy.terminalId, null, 0, 0); + this._terminalProcesses[request.proxy.terminalId] = request.proxy; + const shellLaunchConfigDto: ShellLaunchConfigDto = { + name: request.shellLaunchConfig.name, + executable: request.shellLaunchConfig.executable, + args: request.shellLaunchConfig.args, + cwd: request.shellLaunchConfig.cwd, + env: request.shellLaunchConfig.env + }; + this._proxy.$createProcess(request.proxy.terminalId, shellLaunchConfigDto, request.cols, request.rows); // TODO: Dispose of this properly when the terminal/process dies - this._toDispose.push(proxy.onInput(data => this._proxy.$acceptTerminalProcessInput(proxy.terminalId, data))); - this._toDispose.push(proxy.onResize((cols, rows) => this._proxy.$acceptTerminalProcessResize(proxy.terminalId, cols, rows))); - this._toDispose.push(proxy.onShutdown(() => this._proxy.$acceptTerminalProcessShutdown(proxy.terminalId))); + this._toDispose.push(request.proxy.onInput(data => this._proxy.$acceptTerminalProcessInput(request.proxy.terminalId, data))); + this._toDispose.push(request.proxy.onResize((cols, rows) => this._proxy.$acceptTerminalProcessResize(request.proxy.terminalId, cols, rows))); + this._toDispose.push(request.proxy.onShutdown(() => this._proxy.$acceptTerminalProcessShutdown(request.proxy.terminalId))); } public $sendProcessTitle(terminalId: number, title: string): void { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 4e4583d1586..13822da3edb 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -115,7 +115,7 @@ export function createApiFactory( const extHostFileSystem = rpcProtocol.set(ExtHostContext.ExtHostFileSystem, new ExtHostFileSystem(rpcProtocol, extHostLanguageFeatures)); const extHostFileSystemEvent = rpcProtocol.set(ExtHostContext.ExtHostFileSystemEventService, new ExtHostFileSystemEventService()); const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, new ExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands)); - const extHostTerminalService = rpcProtocol.set(ExtHostContext.ExtHostTerminalService, new ExtHostTerminalService(rpcProtocol)); + const extHostTerminalService = rpcProtocol.set(ExtHostContext.ExtHostTerminalService, new ExtHostTerminalService(rpcProtocol, extHostConfiguration, extHostLogService)); const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostLogService)); const extHostSearch = rpcProtocol.set(ExtHostContext.ExtHostSearch, new ExtHostSearch(rpcProtocol)); const extHostTask = rpcProtocol.set(ExtHostContext.ExtHostTask, new ExtHostTask(rpcProtocol, extHostWorkspace)); diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 16b62bd5e39..db3f40dd119 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -7,10 +7,13 @@ import * as vscode from 'vscode'; import * as cp from 'child_process'; import * as path from 'path'; +import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import { Event, Emitter } from 'vs/base/common/event'; import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IMainContext, ShellLaunchConfigDto } from 'vs/workbench/api/node/extHost.protocol'; import { IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; +import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration'; +import { ILogService } from 'vs/platform/log/common/log'; export class ExtHostTerminal implements vscode.Terminal { @@ -116,7 +119,11 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { public get terminals(): ExtHostTerminal[] { return this._terminals; } - constructor(mainContext: IMainContext) { + constructor( + mainContext: IMainContext, + private _extHostConfiguration: ExtHostConfiguration, + private _logService: ILogService + ) { this._onDidCloseTerminal = new Emitter(); this._onDidOpenTerminal = new Emitter(); this._proxy = mainContext.getProxy(MainContext.MainThreadTerminalService); @@ -176,28 +183,61 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void { - shellLaunchConfig = { - env: {}, - executable: 'bash' - }; + // TODO: This function duplicates a lot of TerminalProcessManager.createProcess, ideally + // they would be merged into a single implementation. + + const terminalConfig = this._extHostConfiguration.getConfiguration('terminal.integrated'); + + const locale = terminalConfig.get('setLocaleVariables') ? platform.locale : undefined; + if (!shellLaunchConfig.executable) { + // TODO: This duplicates some of TerminalConfigHelper.mergeDefaultShellPathAndArgs and should be merged + // this._configHelper.mergeDefaultShellPathAndArgs(shellLaunchConfig); + + const platformKey = platform.isWindows ? 'windows' : platform.isMacintosh ? 'osx' : 'linux'; + const shellConfigValue: string = terminalConfig.get(`shell.${platformKey}`); + const shellArgsConfigValue: string = terminalConfig.get(`shellArgs.${platformKey}`); + + shellLaunchConfig.executable = shellConfigValue; + shellLaunchConfig.args = shellArgsConfigValue; + } + this._logService.info('$createProcess', id, shellLaunchConfig, cols, rows); + + // const lastActiveWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot('file'); + // this.initialCwd = terminalEnvironment.getCwd(shellLaunchConfig, lastActiveWorkspaceRootUri, this._configHelper); + + // // Resolve env vars from config and shell + // const lastActiveWorkspaceRoot = this._workspaceContextService.getWorkspaceFolder(lastActiveWorkspaceRootUri); + // const platformKey = platform.isWindows ? 'windows' : (platform.isMacintosh ? 'osx' : 'linux'); + // const envFromConfig = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...this._configHelper.config.env[platformKey] }, lastActiveWorkspaceRoot); + // const envFromShell = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...shellLaunchConfig.env }, lastActiveWorkspaceRoot); + // shellLaunchConfig.env = envFromShell; + + // // Merge process env with the env from config + // const parentEnv = { ...process.env }; + // terminalEnvironment.mergeEnvironments(parentEnv, envFromConfig); + + // // Continue env initialization, merging in the env from the launch + // // config and adding keys that are needed to create the process + // const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, this.initialCwd, locale, cols, rows); + // const cwd = Uri.parse(paths.dirname(require.toUrl('../node/terminalProcess'))).fsPath; + // const options = { env, cwd }; + + + // TODO: Launch process // TODO: Associate the process with the terminal object/id // TODO: terminal has incorrect name/options, fix up const parentEnv = { ...process.env }; - const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, '/home/daniel', undefined, cols, rows); + const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, '/home/daniel', locale, cols, rows); // TODO: Use Uri? let cwd = path.dirname(require.toUrl('../../parts/terminal/node/terminalProcess')).replace('file://', ''); - console.log(cwd); const options = { env, cwd, execArgv: [] }; let bootstrapUri = require.toUrl('bootstrap').replace('file://', '') + '.js'; - console.log(bootstrapUri); - // cwd = '/home/daniel/dev/Microsoft/vscode/out/vs/workbench/parts/terminal/node'; - // bootstrapUri = '/home/daniel/dev/Microsoft/vscode/out/bootstrap'; - // env['AMD_ENTRYPOINT'] = 'vs/workbench/parts/terminal/node/terminalProcess'; + this._logService.debug(`Terminal process launching on ext host`, options); this._terminalProcesses[id] = cp.fork(bootstrapUri, ['--type=terminal'], options); this._terminalProcesses[id].on('message', (message: IMessageFromTerminalProcess) => { @@ -207,9 +247,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { case 'data': this._proxy.$sendProcessData(id, message.content); break; } }); - - const terminal = this._getTerminalById(id); - console.log('$createProcess terminal: ' + terminal.name); } public $acceptTerminalProcessInput(id: number, data: string): void { diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 946bfb8ef2d..8ec70a197d4 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -165,7 +165,7 @@ export interface ITerminalService { onInstanceCreated: Event; onInstanceDisposed: Event; onInstanceProcessIdReady: Event; - onInstanceRequestExtHostProcess: Event; + onInstanceRequestExtHostProcess: Event; onInstancesChanged: Event; onInstanceTitleChanged: Event; terminalInstances: ITerminalInstance[]; @@ -207,7 +207,7 @@ export interface ITerminalService { selectDefaultWindowsShell(): TPromise; setWorkspaceShellAllowed(isAllowed: boolean): void; - requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void; + requestExtHostProcess(proxy: ITerminalProcessExtHostProxy, shellLaunchConfig: IShellLaunchConfig, cols: number, rows: number): void; } export const enum Direction { @@ -533,3 +533,10 @@ export interface ITerminalProcessExtHostProxy { onResize(listener: (cols: number, rows: number) => void): IDisposable; onShutdown(listener: () => void): IDisposable; } + +export interface ITerminalProcessExtHostRequest { + proxy: ITerminalProcessExtHostProxy; + shellLaunchConfig: IShellLaunchConfig; + cols: number; + rows: number; +} \ No newline at end of file diff --git a/src/vs/workbench/parts/terminal/common/terminalService.ts b/src/vs/workbench/parts/terminal/common/terminalService.ts index 92a91bcf5ac..e294388516b 100644 --- a/src/vs/workbench/parts/terminal/common/terminalService.ts +++ b/src/vs/workbench/parts/terminal/common/terminalService.ts @@ -9,7 +9,7 @@ import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/c import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE, TERMINAL_PANEL_ID, ITerminalTab, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE, TERMINAL_PANEL_ID, ITerminalTab, ITerminalProcessExtHostProxy, ITerminalProcessExtHostRequest } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; @@ -39,8 +39,8 @@ export abstract class TerminalService implements ITerminalService { public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } protected readonly _onInstanceProcessIdReady: Emitter = new Emitter(); public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } - protected readonly _onInstanceRequestExtHostProcess: Emitter = new Emitter(); - public get onInstanceRequestExtHostProcess(): Event { return this._onInstanceRequestExtHostProcess.event; } + protected readonly _onInstanceRequestExtHostProcess: Emitter = new Emitter(); + public get onInstanceRequestExtHostProcess(): Event { return this._onInstanceRequestExtHostProcess.event; } protected readonly _onInstancesChanged: Emitter = new Emitter(); public get onInstancesChanged(): Event { return this._onInstancesChanged.event; } protected readonly _onInstanceTitleChanged: Emitter = new Emitter(); @@ -75,7 +75,7 @@ export abstract class TerminalService implements ITerminalService { public abstract getActiveOrCreateInstance(wasNewTerminalAction?: boolean): ITerminalInstance; public abstract selectDefaultWindowsShell(): TPromise; public abstract setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; - public abstract requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void; + public abstract requestExtHostProcess(proxy: ITerminalProcessExtHostProxy, shellLaunchConfig: IShellLaunchConfig, cols: number, rows: number): void; private _restoreTabs(): void { if (!this.configHelper.config.experimentalRestore) { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index cfbbcd194b3..cdc1f00c8a8 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -109,6 +109,7 @@ export class TerminalInstance implements ITerminalInstance { @IConfigurationService private readonly _configurationService: IConfigurationService, @ILogService private _logService: ILogService ) { + // TODO: Delete me this._shellLaunchConfig.extensionHostOwned = true; this._disposables = []; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index bfeef947e40..b50fa001bac 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as cp from 'child_process'; -import * as path from 'path'; +import * as paths from 'vs/base/common/paths'; import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import Uri from 'vs/base/common/uri'; @@ -59,6 +59,12 @@ export class TerminalProcessManager implements ITerminalProcessManager { @IInstantiationService private readonly _instantiationService: IInstantiationService, @ILogService private _logService: ILogService ) { + this.ptyProcessReady = new TPromise(c => { + this.onProcessReady(() => { + this._logService.debug(`Terminal process ready (shellProcessId: ${this.shellProcessId})`); + c(void 0); + }); + }); } public dispose(): void { @@ -85,41 +91,35 @@ export class TerminalProcessManager implements ITerminalProcessManager { cols: number, rows: number ): void { - this.ptyProcessReady = new TPromise(c => { - this.onProcessReady(() => { - this._logService.debug(`Terminal process ready (shellProcessId: ${this.shellProcessId})`); - c(void 0); - }); - }); - - const locale = this._configHelper.config.setLocaleVariables ? platform.locale : undefined; - if (!shellLaunchConfig.executable) { - this._configHelper.mergeDefaultShellPathAndArgs(shellLaunchConfig); - } - - const lastActiveWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot('file'); - this.initialCwd = terminalEnvironment.getCwd(shellLaunchConfig, lastActiveWorkspaceRootUri, this._configHelper); - - // Resolve env vars from config and shell - const lastActiveWorkspaceRoot = this._workspaceContextService.getWorkspaceFolder(lastActiveWorkspaceRootUri); - const platformKey = platform.isWindows ? 'windows' : (platform.isMacintosh ? 'osx' : 'linux'); - const envFromConfig = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...this._configHelper.config.env[platformKey] }, lastActiveWorkspaceRoot); - const envFromShell = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...shellLaunchConfig.env }, lastActiveWorkspaceRoot); - shellLaunchConfig.env = envFromShell; - - // Merge process env with the env from config - const parentEnv = { ...process.env }; - terminalEnvironment.mergeEnvironments(parentEnv, envFromConfig); - - // Continue env initialization, merging in the env from the launch - // config and adding keys that are needed to create the process - const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, this.initialCwd, locale, cols, rows); - const cwd = Uri.parse(path.dirname(require.toUrl('../node/terminalProcess'))).fsPath; - const options = { env, cwd }; - this._logService.debug(`Terminal process launching`, options); if (shellLaunchConfig.extensionHostOwned) { - this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy, this._terminalId); + this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy, this._terminalId, shellLaunchConfig, cols, rows); } else { + const locale = this._configHelper.config.setLocaleVariables ? platform.locale : undefined; + if (!shellLaunchConfig.executable) { + this._configHelper.mergeDefaultShellPathAndArgs(shellLaunchConfig); + } + + const lastActiveWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot('file'); + this.initialCwd = terminalEnvironment.getCwd(shellLaunchConfig, lastActiveWorkspaceRootUri, this._configHelper); + + // Resolve env vars from config and shell + const lastActiveWorkspaceRoot = this._workspaceContextService.getWorkspaceFolder(lastActiveWorkspaceRootUri); + const platformKey = platform.isWindows ? 'windows' : (platform.isMacintosh ? 'osx' : 'linux'); + const envFromConfig = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...this._configHelper.config.env[platformKey] }, lastActiveWorkspaceRoot); + const envFromShell = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...shellLaunchConfig.env }, lastActiveWorkspaceRoot); + shellLaunchConfig.env = envFromShell; + + // Merge process env with the env from config + const parentEnv = { ...process.env }; + terminalEnvironment.mergeEnvironments(parentEnv, envFromConfig); + + // Continue env initialization, merging in the env from the launch + // config and adding keys that are needed to create the process + const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, this.initialCwd, locale, cols, rows); + const cwd = Uri.parse(paths.dirname(require.toUrl('../node/terminalProcess'))).fsPath; + const options = { env, cwd }; + this._logService.debug(`Terminal process launching`, options); + this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); } this.processState = ProcessState.LAUNCHING; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 0e37f567c63..e7080740ebd 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -95,13 +95,12 @@ export class TerminalService extends AbstractTerminalService implements ITermina return this._instantiationService.createInstance(TerminalInstance, terminalFocusContextKey, configHelper, undefined, shellLaunchConfig, true); } - public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy): void { + public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy, shellLaunchConfig: IShellLaunchConfig, cols: number, rows: number): void { // Ensure extension host is ready before requesting a process this._extensionService.whenInstalledExtensionsRegistered().then(() => { // TODO: MainThreadTerminalService is not ready at this point, fix this setTimeout(() => { - console.log('request'); - this._onInstanceRequestExtHostProcess.fire(proxy); + this._onInstanceRequestExtHostProcess.fire({ proxy, shellLaunchConfig, cols, rows }); }, 100); }); } diff --git a/src/vs/workbench/parts/terminal/node/terminalEnvironment.ts b/src/vs/workbench/parts/terminal/node/terminalEnvironment.ts index e52554048e2..2c60754603d 100644 --- a/src/vs/workbench/parts/terminal/node/terminalEnvironment.ts +++ b/src/vs/workbench/parts/terminal/node/terminalEnvironment.ts @@ -79,7 +79,6 @@ export function createTerminalEnv(parentEnv: IStringDictionary, shell: I return env; } -// TODO:should be protected/non-static export function resolveConfigurationVariables(configurationResolverService: IConfigurationResolverService, env: IStringDictionary, lastActiveWorkspaceRoot: IWorkspaceFolder): IStringDictionary { Object.keys(env).forEach((key) => { if (typeof env[key] === 'string') { diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index f05ec5f6dc1..2efdd72fa4b 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -5,7 +5,7 @@ import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; -import { ITerminalService, ITerminalProcessExtHostProxy } from 'vs/workbench/parts/terminal/common/terminal'; +import { ITerminalService, ITerminalProcessExtHostProxy, IShellLaunchConfig } from 'vs/workbench/parts/terminal/common/terminal'; import { IDisposable } from '../../../../base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { @@ -14,12 +14,15 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin constructor( public terminalId: number, + shellLaunchConfig: IShellLaunchConfig, + cols: number, + rows: number @ITerminalService private _terminalService: ITerminalService ) { super(); // TODO: Return TPromise indicating success? Teardown if failure? - this._terminalService.requestExtHostProcess(this); + this._terminalService.requestExtHostProcess(this, shellLaunchConfig, cols, rows); } public emitData(data: string): void { From 35ef4f3664004ef798db7a00823758374f002a79 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 16:53:01 +0200 Subject: [PATCH 0931/1070] fixes #47738 --- src/vs/base/common/resources.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/base/common/resources.ts b/src/vs/base/common/resources.ts index bbc5c6ca223..8a1e1853bfa 100644 --- a/src/vs/base/common/resources.ts +++ b/src/vs/base/common/resources.ts @@ -9,12 +9,12 @@ import uri from 'vs/base/common/uri'; import { equalsIgnoreCase } from 'vs/base/common/strings'; export function basenameOrAuthority(resource: uri): string { - return paths.basename(resource.fsPath) || resource.authority; + return paths.basename(resource.path) || resource.authority; } export function isEqualOrParent(resource: uri, candidate: uri, ignoreCase?: boolean): boolean { if (resource.scheme === candidate.scheme && resource.authority === candidate.authority) { - return paths.isEqualOrParent(resource.fsPath, candidate.fsPath, ignoreCase); + return paths.isEqualOrParent(resource.path, candidate.path, ignoreCase); } return false; @@ -66,4 +66,4 @@ export function distinctParents(items: T[], resourceAccessor: (item: T) => ur } return distinctParents; -} \ No newline at end of file +} From 4dc7a828c559bed8f7d36ac2aa6ad48df8b10a86 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 16:55:39 +0200 Subject: [PATCH 0932/1070] fixes #47740 --- .../parts/files/electron-browser/views/explorerViewer.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 30c28198689..c32ade7e82c 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -327,10 +327,10 @@ export class FileRenderer implements IRenderer { } }), DOM.addStandardDisposableListener(inputBox.inputElement, DOM.EventType.KEY_UP, (e: IKeyboardEvent) => { - const initialRelPath: string = path.relative(stat.root.resource.fsPath, stat.parent.resource.fsPath); + const initialRelPath: string = path.relative(stat.root.resource.path, stat.parent.resource.path); let projectFolderName: string = ''; if (this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE) { - projectFolderName = paths.basename(stat.root.resource.fsPath); // show root folder name in multi-folder project + projectFolderName = paths.basename(stat.root.resource.path); // show root folder name in multi-folder project } this.displayCurrentPath(inputBox, initialRelPath, projectFolderName, editableData.action.id); }), @@ -726,7 +726,7 @@ export class FileFilter implements IFilter { // Hide those that match Hidden Patterns const expression = this.hiddenExpressionPerRoot.get(stat.root.resource.toString()) || Object.create(null); - if (glob.match(expression, paths.normalize(path.relative(stat.root.resource.fsPath, stat.resource.fsPath), true), siblingsFn)) { + if (glob.match(expression, paths.normalize(path.relative(stat.root.resource.path, stat.resource.path), true), siblingsFn)) { return false; // hidden through pattern } From 414e19a550ee77525d36374b7be6c0acd2333616 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 08:01:21 -0700 Subject: [PATCH 0933/1070] Simplify terminal process paths --- src/vs/workbench/api/node/extHostTerminalService.ts | 6 +++--- .../parts/terminal/electron-browser/terminalInstance.ts | 1 + .../terminal/electron-browser/terminalProcessManager.ts | 3 +-- .../parts/terminal/electron-browser/terminalService.ts | 3 ++- .../parts/terminal/node/terminalProcessExtHostProxy.ts | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index db3f40dd119..ee3fe228b8d 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -6,9 +6,9 @@ import * as vscode from 'vscode'; import * as cp from 'child_process'; -import * as path from 'path'; import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; +import Uri from 'vs/base/common/uri'; import { Event, Emitter } from 'vs/base/common/event'; import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IMainContext, ShellLaunchConfigDto } from 'vs/workbench/api/node/extHost.protocol'; import { IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; @@ -232,10 +232,10 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { const parentEnv = { ...process.env }; const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, '/home/daniel', locale, cols, rows); // TODO: Use Uri? - let cwd = path.dirname(require.toUrl('../../parts/terminal/node/terminalProcess')).replace('file://', ''); + let cwd = Uri.parse(require.toUrl('../../parts/terminal/node')).fsPath; const options = { env, cwd, execArgv: [] }; - let bootstrapUri = require.toUrl('bootstrap').replace('file://', '') + '.js'; + let bootstrapUri = Uri.parse(require.toUrl('bootstrap')).fsPath; this._logService.debug(`Terminal process launching on ext host`, options); this._terminalProcesses[id] = cp.fork(bootstrapUri, ['--type=terminal'], options); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index cdc1f00c8a8..592a65af4dd 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -591,6 +591,7 @@ export class TerminalInstance implements ITerminalInstance { this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._id, this._configHelper); this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); + console.log('_createProcess', this._cols, this._rows); this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows); if (this._shellLaunchConfig.name) { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index b50fa001bac..c416d5ff60b 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as cp from 'child_process'; -import * as paths from 'vs/base/common/paths'; import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import Uri from 'vs/base/common/uri'; @@ -116,7 +115,7 @@ export class TerminalProcessManager implements ITerminalProcessManager { // Continue env initialization, merging in the env from the launch // config and adding keys that are needed to create the process const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, this.initialCwd, locale, cols, rows); - const cwd = Uri.parse(paths.dirname(require.toUrl('../node/terminalProcess'))).fsPath; + const cwd = Uri.parse(require.toUrl('../node')).fsPath; const options = { env, cwd }; this._logService.debug(`Terminal process launching`, options); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index e7080740ebd..eb2e2cbb021 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -92,7 +92,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina } public createInstance(terminalFocusContextKey: IContextKey, configHelper: ITerminalConfigHelper, container: HTMLElement, shellLaunchConfig: IShellLaunchConfig, doCreateProcess: boolean): ITerminalInstance { - return this._instantiationService.createInstance(TerminalInstance, terminalFocusContextKey, configHelper, undefined, shellLaunchConfig, true); + return this._instantiationService.createInstance(TerminalInstance, terminalFocusContextKey, configHelper, container, shellLaunchConfig, true); } public requestExtHostProcess(proxy: ITerminalProcessExtHostProxy, shellLaunchConfig: IShellLaunchConfig, cols: number, rows: number): void { @@ -100,6 +100,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina this._extensionService.whenInstalledExtensionsRegistered().then(() => { // TODO: MainThreadTerminalService is not ready at this point, fix this setTimeout(() => { + console.log('cols, rows', cols, rows); this._onInstanceRequestExtHostProcess.fire({ proxy, shellLaunchConfig, cols, rows }); }, 100); }); diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index 2efdd72fa4b..464f7de71ef 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -16,7 +16,7 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin public terminalId: number, shellLaunchConfig: IShellLaunchConfig, cols: number, - rows: number + rows: number, @ITerminalService private _terminalService: ITerminalService ) { super(); From 53dd6b096b5a50b0783044150a98090c15280508 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 18 Apr 2018 17:30:24 +0200 Subject: [PATCH 0934/1070] make folding api public (for #47808) --- src/vs/vscode.d.ts | 100 ++++++++++++++++- src/vs/vscode.proposed.d.ts | 104 ------------------ src/vs/workbench/api/node/extHost.api.impl.ts | 4 +- 3 files changed, 101 insertions(+), 107 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 9ce91242cb1..73c2a2ee364 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -2749,7 +2749,7 @@ declare module 'vscode' { /** * Optional function for resolving and validating a position *before* running rename. The result can - * be a range or a range and a placeholder text. The placeholder text should be the identifier of the symbol + * be a range or a range and a placeholder text. The placeholder text should be the identifier of the symbol * which is being renamed - when omitted the text in the returned range is used. * * @param document The document in which rename will be invoked. @@ -3384,6 +3384,90 @@ declare module 'vscode' { provideColorPresentations(color: Color, context: { document: TextDocument, range: Range }, token: CancellationToken): ProviderResult; } + export class FoldingRange { + + /** + * The zero-based start line of the range to fold. The folded area starts after the line's last character. + */ + start: number; + + /** + * The zero-based end line of the range to fold. The folded area ends with the line's last character. + */ + end: number; + + /** + * Describes the [Kind](#FoldingRangeKind) of the folding range such as [Comment](#FoldingRangeKind.Comment) or + * [Region](#FoldingRangeKind.Region). The kind is used to categorize folding ranges and used by commands + * like 'Fold all comments'. See + * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. + */ + kind?: FoldingRangeKind; + + /** + * Creates a new folding range. + * + * @param start The start line of the folded range. + * @param end The end line of the folded range. + * @param kind The kind of the folding range. + */ + constructor(start: number, end: number, kind?: FoldingRangeKind); + } + + export class FoldingRangeKind { + /** + * Kind for folding range representing a comment. The value of the kind is 'comment'. + */ + static readonly Comment: FoldingRangeKind; + /** + * Kind for folding range representing a import. The value of the kind is 'imports'. + */ + static readonly Imports: FoldingRangeKind; + /** + * Kind for folding range representing regions (for example a folding range marked by `#region` and `#endregion`). + * The value of the kind is 'region'. + */ + static readonly Region: FoldingRangeKind; + /** + * String value of the kind, e.g. `comment`. + */ + readonly value: string; + /** + * Creates a new [FoldingRangeKind](#FoldingRangeKind). + * + * @param value of the kind. + */ + public constructor(value: string); + } + + + /** + * Metadata about the kind of folding ranges that a [FoldingRangeProvider](#FoldingRangeProvider) providers uses. + */ + export interface FoldingRangeProviderMetadata { + /** + * [FoldingRangeKind](#FoldingRangeKind) that this provider may return. + */ + readonly providedFoldingRangeKinds?: ReadonlyArray; + } + + /** + * Folding context (for future use) + */ + export interface FoldingContext { + } + + export interface FoldingRangeProvider { + /** + * Returns a list of folding ranges or null and undefined if the provider + * does not want to participate or was cancelled. + * @param document The document in which the command was invoked. + * @param context Additional context information (for future use) + * @param token A cancellation token. + */ + provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult; + } + /** * A tuple of two characters, like a pair of * opening and closing brackets. @@ -6370,6 +6454,20 @@ declare module 'vscode' { */ export function registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable; + /** + * Register a folding range provider. + * + * Multiple folding can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A folding range provider. + * @param metadata Metadata about the kind of code actions the provider providers. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + export function registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider, metadata?: FoldingRangeProviderMetadata): Disposable; + /** * Set a [language configuration](#LanguageConfiguration) for a language. * diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 24c7142a6d9..7a55ba9b0e2 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -11,110 +11,6 @@ declare module 'vscode' { export function sampleFunction(): Thenable; } - //#region Aeschli: folding - - export class FoldingRange { - - /** - * The zero-based start line of the range to fold. The folded area starts after the line's last character. - */ - start: number; - - /** - * The zero-based end line of the range to fold. The folded area ends with the line's last character. - */ - end: number; - - /** - * Describes the [Kind](#FoldingRangeKind) of the folding range such as [Comment](#FoldingRangeKind.Comment) or - * [Region](#FoldingRangeKind.Region). The kind is used to categorize folding ranges and used by commands - * like 'Fold all comments'. See - * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. - */ - kind?: FoldingRangeKind; - - /** - * Creates a new folding range. - * - * @param start The start line of the folded range. - * @param end The end line of the folded range. - * @param kind The kind of the folding range. - */ - constructor(start: number, end: number, kind?: FoldingRangeKind); - } - - export class FoldingRangeKind { - /** - * Kind for folding range representing a comment. The value of the kind is 'comment'. - */ - static readonly Comment: FoldingRangeKind; - /** - * Kind for folding range representing a import. The value of the kind is 'imports'. - */ - static readonly Imports: FoldingRangeKind; - /** - * Kind for folding range representing regions (for example a folding range marked by `#region` and `#endregion`). - * The value of the kind is 'region'. - */ - static readonly Region: FoldingRangeKind; - /** - * String value of the kind, e.g. `comment`. - */ - readonly value: string; - /** - * Creates a new [FoldingRangeKind](#FoldingRangeKind). - * - * @param value of the kind. - */ - public constructor(value: string); - } - - export namespace languages { - - /** - * Register a folding range provider. - * - * Multiple folding can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A folding range provider. - * @param metadata Metadata about the kind of code actions the provider providers. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - export function registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider, metadata?: FoldingRangeProviderMetadata): Disposable; - } - - /** - * Metadata about the kind of folding ranges that a [FoldingRangeProvider](#FoldingRangeProvider) providers uses. - */ - export interface FoldingRangeProviderMetadata { - /** - * [FoldingRangeKind](#FoldingRangeKind) that this provider may return. - */ - readonly providedFoldingRangeKinds?: ReadonlyArray; - } - - /** - * Folding context (for future use) - */ - export interface FoldingContext { - } - - export interface FoldingRangeProvider { - /** - * Returns a list of folding ranges or null and undefined if the provider - * does not want to participate or was cancelled. - * @param document The document in which the command was invoked. - * @param context Additional context information (for future use) - * @param token A cancellation token. - */ - provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult; - } - - //#endregion - //#region Joh: file system provider export enum FileChangeType { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 2790ad78549..ca47b4f247d 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -328,9 +328,9 @@ export function createApiFactory( registerColorProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentColorProvider): vscode.Disposable { return extHostLanguageFeatures.registerColorProvider(checkSelector(selector), provider); }, - registerFoldingRangeProvider: proposedApiFunction(extension, (selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable => { + registerFoldingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): vscode.Disposable { return extHostLanguageFeatures.registerFoldingRangeProvider(checkSelector(selector), provider); - }), + }, setLanguageConfiguration: (language: string, configuration: vscode.LanguageConfiguration): vscode.Disposable => { return extHostLanguageFeatures.setLanguageConfiguration(language, configuration); } From 7b871c125ec89e151522dc4f5873fc3825c005f2 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 17:40:47 +0200 Subject: [PATCH 0935/1070] Fix compilation --- src/vs/workbench/services/progress/test/progressService.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vs/workbench/services/progress/test/progressService.test.ts b/src/vs/workbench/services/progress/test/progressService.test.ts index 83b2b91d522..577d37ad5b3 100644 --- a/src/vs/workbench/services/progress/test/progressService.test.ts +++ b/src/vs/workbench/services/progress/test/progressService.test.ts @@ -22,10 +22,12 @@ let activeViewlet: Viewlet = {} as any; class TestViewletService implements IViewletService { public _serviceBrand: any; + onDidViewletRegisterEmitter = new Emitter(); onDidViewletOpenEmitter = new Emitter(); onDidViewletCloseEmitter = new Emitter(); onDidViewletEnableEmitter = new Emitter<{ id: string, enabled: boolean }>(); + onDidViewletRegister = this.onDidViewletRegisterEmitter.event; onDidViewletOpen = this.onDidViewletOpenEmitter.event; onDidViewletClose = this.onDidViewletCloseEmitter.event; onDidViewletEnablementChange = this.onDidViewletEnableEmitter.event; From f0e5ee0418c71295ed6da3ac4ea4ea289a9a3eb9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 17:42:19 +0200 Subject: [PATCH 0936/1070] fix unit tests --- .../test/browser/parts/views/contributableViews.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts b/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts index 99a80610c25..4153fce6fc1 100644 --- a/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts +++ b/src/vs/workbench/test/browser/parts/views/contributableViews.test.ts @@ -10,6 +10,7 @@ import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyServ import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { SimpleConfigurationService } from 'vs/editor/standalone/browser/simpleServices'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { move } from 'vs/base/common/arrays'; const location = ViewLocation.register('test'); @@ -22,6 +23,7 @@ class ViewDescriptorSequence { this.elements = [...model.visibleViewDescriptors]; model.onDidAdd(({ viewDescriptor, index }) => this.elements.splice(index, 0, viewDescriptor), null, this.disposables); model.onDidRemove(({ viewDescriptor, index }) => this.elements.splice(index, 1), null, this.disposables); + model.onDidMove(({ from, to }) => move(this.elements, from.index, to.index), null, this.disposables); } dispose() { @@ -218,8 +220,8 @@ suite('ContributableViewsModel', () => { const view3: IViewDescriptor = { id: 'view3', ctor: null, location, name: 'Test View 3' }; ViewsRegistry.registerViews([view1, view2, view3]); - assert.deepEqual(model.visibleViewDescriptors, [view1, view2, view3]); - assert.deepEqual(seq.elements, [view1, view2, view3]); + assert.deepEqual(model.visibleViewDescriptors, [view1, view2, view3], 'model views should be OK'); + assert.deepEqual(seq.elements, [view1, view2, view3], 'sql views should be OK'); model.move('view3', 'view1'); assert.deepEqual(model.visibleViewDescriptors, [view3, view1, view2], 'view3 should go to the front'); From 6fb36419f112f01d4d7805a480241e3f9aac19bc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 17:42:29 +0200 Subject: [PATCH 0937/1070] make build stop when a script errs --- build/tfs/continuous-build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/build/tfs/continuous-build.yml b/build/tfs/continuous-build.yml index cd59b418084..107c7ff9cdd 100644 --- a/build/tfs/continuous-build.yml +++ b/build/tfs/continuous-build.yml @@ -9,6 +9,7 @@ phases: inputs: versionSpec: "1.3.2" - powershell: | + $ErrorActionPreference = "Stop" yarn .\node_modules\.bin\gulp electron npm run gulp -- hygiene @@ -17,6 +18,7 @@ phases: node build/lib/builtInExtensions.js name: build - powershell: | + $ErrorActionPreference = "Stop" .\scripts\test.bat --tfs .\scripts\test-integration.bat yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)\artifacts" --log "$(Build.ArtifactStagingDirectory)\artifacts\smoketest.log" @@ -32,6 +34,7 @@ phases: queue: Hosted Linux Preview steps: - script: | + set -e apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb libgtk-3-0 cp build/tfs/linux/x64/xvfb.init /etc/init.d/xvfb @@ -47,15 +50,18 @@ phases: inputs: versionSpec: "1.3.2" - script: | + set -e yarn npm run gulp -- electron-x64 - script: | + set -e npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit npm run compile node build/lib/builtInExtensions.js name: build - script: | + set -e DISPLAY=:10 ./scripts/test.sh --tfs # DISPLAY=:10 ./scripts/test-integration.sh name: test @@ -70,15 +76,18 @@ phases: inputs: versionSpec: "1.3.2" - script: | + set -e yarn npm run gulp -- electron-x64 - script: | + set -e npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit npm run compile node build/lib/builtInExtensions.js name: build - script: | + set -e ./scripts/test.sh --tfs ./scripts/test-integration.sh yarn smoketest --screenshots "$(Build.ArtifactStagingDirectory)/artifacts" --log "$(Build.ArtifactStagingDirectory)/artifacts/smoketest.log" From 7bc218f9249824e0163ee2ecfebd13446fa35d69 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 17:46:28 +0200 Subject: [PATCH 0938/1070] fixes #46899 --- .../workbench/parts/debug/electron-browser/breakpointWidget.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts b/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts index dca48387864..037df6816e5 100644 --- a/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts +++ b/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.ts @@ -172,13 +172,13 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakopintWi condition, hitCondition, verified: this.breakpoint.verified, + column: this.breakpoint.column, logMessage } }, false); } else { this.debugService.addBreakpoints(this.editor.getModel().uri, [{ lineNumber: this.lineNumber, - column: this.breakpoint ? this.breakpoint.column : undefined, enabled: true, condition, hitCondition, From 45e859bfdc720da4668a2e9742039860efccfa84 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 18 Apr 2018 17:48:13 +0200 Subject: [PATCH 0939/1070] monaco folding api (for #47808) --- src/vs/editor/common/modes.ts | 18 +----- .../contrib/folding/syntaxRangeProvider.ts | 4 +- .../standalone/browser/standaloneLanguages.ts | 13 +++-- src/vs/monaco.d.ts | 58 ++++++++++++++++++- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- .../api/node/extHostLanguageFeatures.ts | 4 +- .../api/node/extHostTypeConverters.ts | 2 +- 7 files changed, 72 insertions(+), 29 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 76d62264ebc..e9caa888ae2 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -830,30 +830,19 @@ export interface DocumentColorProvider { */ provideColorPresentations(model: model.ITextModel, colorInfo: IColorInformation, token: CancellationToken): IColorPresentation[] | Thenable; } - -/** - * @internal - */ export interface FoldingContext { } - /** * A provider of colors for editor models. */ -/** - * @internal - */ export interface FoldingRangeProvider { /** * Provides the color ranges for a specific model. */ - provideFoldingRanges(model: model.ITextModel, context: FoldingContext, token: CancellationToken): IFoldingRange[] | Thenable; + provideFoldingRanges(model: model.ITextModel, context: FoldingContext, token: CancellationToken): FoldingRange[] | Thenable; } -/** - * @internal - */ -export interface IFoldingRange { +export interface FoldingRange { /** * The zero-based start line of the range to fold. The folded area starts after the line's last character. @@ -873,9 +862,6 @@ export interface IFoldingRange { */ kind?: FoldingRangeKind; } -/** - * @internal - */ export class FoldingRangeKind { /** * Kind for folding range representing a comment. The value of the kind is 'comment'. diff --git a/src/vs/editor/contrib/folding/syntaxRangeProvider.ts b/src/vs/editor/contrib/folding/syntaxRangeProvider.ts index 7131c02d583..eec4d8406c9 100644 --- a/src/vs/editor/contrib/folding/syntaxRangeProvider.ts +++ b/src/vs/editor/contrib/folding/syntaxRangeProvider.ts @@ -5,7 +5,7 @@ 'use strict'; -import { FoldingRangeProvider, IFoldingRange, FoldingContext } from 'vs/editor/common/modes'; +import { FoldingRangeProvider, FoldingRange, FoldingContext } from 'vs/editor/common/modes'; import { onUnexpectedExternalError } from 'vs/base/common/errors'; import { toThenable } from 'vs/base/common/async'; import { ITextModel } from 'vs/editor/common/model'; @@ -16,7 +16,7 @@ import { CancellationToken } from 'vs/base/common/cancellation'; const MAX_FOLDING_REGIONS_FOR_INDENT_LIMIT = 5000; -export interface IFoldingRangeData extends IFoldingRange { +export interface IFoldingRangeData extends FoldingRange { rank: number; } diff --git a/src/vs/editor/standalone/browser/standaloneLanguages.ts b/src/vs/editor/standalone/browser/standaloneLanguages.ts index c0eec9275ac..eaa070aeda8 100644 --- a/src/vs/editor/standalone/browser/standaloneLanguages.ts +++ b/src/vs/editor/standalone/browser/standaloneLanguages.ts @@ -391,12 +391,11 @@ export function registerColorProvider(languageId: string, provider: modes.Docume } /** - * Register a folding provider + * Register a folding range provider */ -/*export function registerFoldingProvider(languageId: string, provider: modes.FoldingProvider): IDisposable { - return modes.FoldingProviderRegistry.register(languageId, provider); -}*/ - +export function registerFoldingRangeProvider(languageId: string, provider: modes.FoldingRangeProvider): IDisposable { + return modes.FoldingRangeProviderRegistry.register(languageId, provider); +} /** * Contains additional diagnostic information about the context in which @@ -787,12 +786,14 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages { registerOnTypeFormattingEditProvider: registerOnTypeFormattingEditProvider, registerLinkProvider: registerLinkProvider, registerColorProvider: registerColorProvider, + registerFoldingRangeProvider: registerFoldingRangeProvider, // enums DocumentHighlightKind: modes.DocumentHighlightKind, CompletionItemKind: CompletionItemKind, SymbolKind: modes.SymbolKind, IndentAction: IndentAction, - SuggestTriggerKind: modes.SuggestTriggerKind + SuggestTriggerKind: modes.SuggestTriggerKind, + FoldingRangeKind: modes.FoldingRangeKind }; } diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 28b6ac3ffaf..268571ebc7d 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -4105,8 +4105,10 @@ declare namespace monaco.languages { export function registerColorProvider(languageId: string, provider: DocumentColorProvider): IDisposable; /** - * Register a folding provider + * Register a folding range provider */ + export function registerFoldingRangeProvider(languageId: string, provider: FoldingRangeProvider): IDisposable; + /** * Contains additional diagnostic information about the context in which * a [code action](#CodeActionProvider.provideCodeActions) is run. @@ -5000,6 +5002,60 @@ declare namespace monaco.languages { provideColorPresentations(model: editor.ITextModel, colorInfo: IColorInformation, token: CancellationToken): IColorPresentation[] | Thenable; } + export interface FoldingContext { + } + + /** + * A provider of colors for editor models. + */ + export interface FoldingRangeProvider { + /** + * Provides the color ranges for a specific model. + */ + provideFoldingRanges(model: editor.ITextModel, context: FoldingContext, token: CancellationToken): FoldingRange[] | Thenable; + } + + export interface FoldingRange { + /** + * The zero-based start line of the range to fold. The folded area starts after the line's last character. + */ + start: number; + /** + * The zero-based end line of the range to fold. The folded area ends with the line's last character. + */ + end: number; + /** + * Describes the [Kind](#FoldingRangeKind) of the folding range such as [Comment](#FoldingRangeKind.Comment) or + * [Region](#FoldingRangeKind.Region). The kind is used to categorize folding ranges and used by commands + * like 'Fold all comments'. See + * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. + */ + kind?: FoldingRangeKind; + } + + export class FoldingRangeKind { + value: string; + /** + * Kind for folding range representing a comment. The value of the kind is 'comment'. + */ + static readonly Comment: FoldingRangeKind; + /** + * Kind for folding range representing a import. The value of the kind is 'imports'. + */ + static readonly Imports: FoldingRangeKind; + /** + * Kind for folding range representing regions (for example marked by `#region`, `#endregion`). + * The value of the kind is 'region'. + */ + static readonly Region: FoldingRangeKind; + /** + * Creates a new [FoldingRangeKind](#FoldingRangeKind). + * + * @param value of the kind. + */ + constructor(value: string); + } + export interface ResourceFileEdit { oldUri: Uri; newUri: Uri; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index c21323c8c04..38d81ee9141 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -723,7 +723,7 @@ export interface ExtHostLanguageFeaturesShape { $resolveDocumentLink(handle: number, link: modes.ILink): TPromise; $provideDocumentColors(handle: number, resource: UriComponents): TPromise; $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo): TPromise; - $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise; + $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise; } export interface ExtHostQuickOpenShape { diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 3d5e2fe57ad..2d14359a8b1 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -820,7 +820,7 @@ class FoldingProviderAdapter { private _provider: vscode.FoldingRangeProvider ) { } - provideFoldingRanges(resource: URI, context: modes.FoldingContext): TPromise { + provideFoldingRanges(resource: URI, context: modes.FoldingContext): TPromise { const doc = this._documents.getDocumentData(resource).document; return asWinJsPromise(token => this._provider.provideFoldingRanges(doc, context, token)).then(ranges => { if (!Array.isArray(ranges)) { @@ -1184,7 +1184,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._createDisposable(handle); } - $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext): TPromise { + $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext): TPromise { return this._withAdapter(handle, FoldingProviderAdapter, adapter => adapter.provideFoldingRanges(URI.revive(resource), context)); } diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index b77f77279db..5c98f71fd82 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -624,7 +624,7 @@ export namespace ProgressLocation { } export namespace FoldingRange { - export function from(r: vscode.FoldingRange): modes.IFoldingRange { + export function from(r: vscode.FoldingRange): modes.FoldingRange { return { start: r.start + 1, end: r.end + 1, kind: r.kind }; } } From dbbf8d5fc02cf51562d9b70aa2a1abe33a227c18 Mon Sep 17 00:00:00 2001 From: Ivor Huang Date: Wed, 18 Apr 2018 11:59:05 -0400 Subject: [PATCH 0940/1070] remove code duplication by using StartAction member in RestartAction --- .../parts/debug/browser/debugActions.ts | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugActions.ts b/src/vs/workbench/parts/debug/browser/debugActions.ts index a840efe8e97..72b07267869 100644 --- a/src/vs/workbench/parts/debug/browser/debugActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugActions.ts @@ -215,15 +215,21 @@ export class RestartAction extends AbstractDebugAction { static LABEL = nls.localize('restartDebug', "Restart"); static RECONNECT_LABEL = nls.localize('reconnectDebug', "Reconnect"); + private startAction: StartAction; + constructor(id: string, label: string, @IDebugService debugService: IDebugService, @IKeybindingService keybindingService: IKeybindingService, @IWorkspaceContextService private contextService?: IWorkspaceContextService, - @IHistoryService private historyService?: IHistoryService + @IHistoryService historyService?: IHistoryService ) { super(id, label, 'debug-action restart', debugService, keybindingService, 70); this.setLabel(this.debugService.getViewModel().focusedProcess); this.toDispose.push(this.debugService.getViewModel().onDidFocusStackFrame(() => this.setLabel(this.debugService.getViewModel().focusedProcess))); + + if (contextService !== undefined && historyService !== undefined) { + this.startAction = new StartAction(id, label, debugService, keybindingService, contextService, historyService); + } } private setLabel(process: IProcess): void { @@ -234,21 +240,9 @@ export class RestartAction extends AbstractDebugAction { if (!(process instanceof Process)) { process = this.debugService.getViewModel().focusedProcess; } + if (!process) { - const configurationManager = this.debugService.getConfigurationManager(); - let launch = configurationManager.selectedConfiguration.launch; - if (!launch) { - const rootUri = this.historyService.getLastActiveWorkspaceRoot(); - launch = configurationManager.getLaunch(rootUri); - if (!launch || launch.getConfigurationNames().length === 0) { - const launches = configurationManager.getLaunches(); - launch = first(launches, l => !!l.getConfigurationNames().length, launches.length ? launches[0] : launch); - } - - configurationManager.selectConfiguration(launch); - } - - return this.debugService.startDebugging(launch, undefined, false); + return this.startAction.run(); } if (this.debugService.getModel().getProcesses().length <= 1) { From 07acfd7e794024103f1d956a96b3ff84d76d41c4 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 09:18:17 -0700 Subject: [PATCH 0941/1070] Improve terminal clear command to work with multi-line prompts Fixes #48146 --- .../parts/terminal/electron-browser/terminalInstance.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 9db5b91c7d3..b81c277f4c3 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -567,7 +567,13 @@ export class TerminalInstance implements ITerminalInstance { } public clear(): void { - this._xterm.clear(); + if (paths.basename(this._shellLaunchConfig.executable).match(/zsh|bash/)) { + // If a supported shell is being used, clear xterm scrollback then clear shell (^L) + this._xterm.write('\x1b[3J'); + this._processManager.write('\x0c'); + } else { + this._xterm.clear(); + } } private _refreshSelectionContextKey() { From 33108e1b308ffdba994cb172ad6bacbe76b86455 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 18:18:47 +0200 Subject: [PATCH 0942/1070] set icon mask size to 22px --- src/vs/workbench/api/browser/activitybarExtensionPoint.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts index bcb3c89c92c..15aed855355 100644 --- a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts +++ b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts @@ -96,7 +96,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { // Generate CSS to show the icon in the activity bar const iconClass = `.monaco-workbench > .activitybar .monaco-action-bar .action-label.${cssClass}`; const iconPath = join(extension.description.extensionFolderPath, descriptor.icon); - createCSSRule(iconClass, `-webkit-mask: url('${iconPath}') no-repeat 50% 50%; -webkit-mask-size: contain;`); + createCSSRule(iconClass, `-webkit-mask: url('${iconPath}') no-repeat 50% 50%; -webkit-mask-size: 22px;`); // Register as viewlet class CustomViewlet extends PersistentViewsViewlet { From 194adb4949d2b47ce8006d8f07fdf0fd3eeb7633 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 18 Apr 2018 18:23:44 +0200 Subject: [PATCH 0943/1070] debug: fix action labels for log points fixes #46821 --- .../parts/debug/browser/breakpointsView.ts | 5 +++-- .../electron-browser/debugEditorContribution.ts | 14 ++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/breakpointsView.ts b/src/vs/workbench/parts/debug/browser/breakpointsView.ts index a4d5380cde6..3c7afd4f1f6 100644 --- a/src/vs/workbench/parts/debug/browser/breakpointsView.ts +++ b/src/vs/workbench/parts/debug/browser/breakpointsView.ts @@ -124,8 +124,9 @@ export class BreakpointsView extends ViewsViewletPanel { const actions: IAction[] = []; const element = e.element; + const breakpointType = element instanceof Breakpoint && element.logMessage ? nls.localize('logPoint', "Log Point") : nls.localize('breakpoint', "Breakpoint"); if (element instanceof Breakpoint || element instanceof FunctionBreakpoint) { - actions.push(new Action('workbench.action.debug.openEditorAndEditBreakpoint', nls.localize('editConditionalBreakpoint', "Edit Breakpoint..."), undefined, true, () => { + actions.push(new Action('workbench.action.debug.openEditorAndEditBreakpoint', nls.localize('editBreakpoint', "Edit {0}...", breakpointType), undefined, true, () => { if (element instanceof Breakpoint) { return openBreakpointSource(element, false, false, this.debugService, this.editorService).then(editor => { const codeEditor = editor.getControl(); @@ -142,7 +143,7 @@ export class BreakpointsView extends ViewsViewletPanel { actions.push(new Separator()); } - actions.push(new RemoveBreakpointAction(RemoveBreakpointAction.ID, RemoveBreakpointAction.LABEL, this.debugService, this.keybindingService)); + actions.push(new RemoveBreakpointAction(RemoveBreakpointAction.ID, nls.localize('removeBreakpoint', "Remove {0}", breakpointType), this.debugService, this.keybindingService)); if (this.debugService.getModel().getBreakpoints().length + this.debugService.getModel().getFunctionBreakpoints().length > 1) { actions.push(new RemoveAllBreakpointsAction(RemoveAllBreakpointsAction.ID, RemoveAllBreakpointsAction.LABEL, this.debugService, this.keybindingService)); diff --git a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts index 4e33173f300..0b5f26ba2ed 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts @@ -95,10 +95,11 @@ export class DebugEditorContribution implements IDebugEditorContribution { private getContextMenuActions(breakpoints: IBreakpoint[], uri: uri, lineNumber: number): TPromise<(IAction | ContextSubMenu)[]> { const actions: (IAction | ContextSubMenu)[] = []; if (breakpoints.length === 1) { - actions.push(new RemoveBreakpointAction(RemoveBreakpointAction.ID, RemoveBreakpointAction.LABEL, this.debugService, this.keybindingService)); + const breakpointType = breakpoints[0].logMessage ? nls.localize('logPoint', "Log Point") : nls.localize('breakpoint', "Breakpoint"); + actions.push(new RemoveBreakpointAction(RemoveBreakpointAction.ID, nls.localize('removeBreakpoint', "Remove {0}", breakpointType), this.debugService, this.keybindingService)); actions.push(new Action( 'workbench.debug.action.editBreakpointAction', - nls.localize('editBreakpoint', "Edit Breakpoint..."), + nls.localize('editBreakpoint', "Edit {0}...", breakpointType), undefined, true, () => TPromise.as(this.editor.getContribution(EDITOR_CONTRIBUTION_ID).showBreakpointWidget(breakpoints[0].lineNumber, breakpoints[0].column)) @@ -106,7 +107,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { actions.push(new Action( `workbench.debug.viewlet.action.toggleBreakpoint`, - breakpoints[0].enabled ? nls.localize('disableBreakpoint', "Disable Breakpoint") : nls.localize('enableBreakpoint', "Enable Breakpoint"), + breakpoints[0].enabled ? nls.localize('disableBreakpoint', "Disable {0}", breakpointType) : nls.localize('enableBreakpoint', "Enable {0}", breakpointType), undefined, true, () => this.debugService.enableOrDisableBreakpoints(!breakpoints[0].enabled, breakpoints[0]) @@ -195,10 +196,11 @@ export class DebugEditorContribution implements IDebugEditorContribution { if (breakpoints.length) { if (breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { const logPoint = breakpoints.every(bp => !!bp.logMessage); + const breakpointType = logPoint ? nls.localize('logPoint', "Log Point") : nls.localize('breakpoint', "Breakpoint"); this.dialogService.show(severity.Info, nls.localize('breakpointHasCondition', "This {0} has a valuable {1} that will get lost on remove. Consider disabling the {0} instead.", - logPoint ? nls.localize('logPoint', "log point") : nls.localize('breakpoint', "breakpoint"), logPoint ? nls.localize('message', "message") : nls.localize('condition', "condition")), [ - logPoint ? nls.localize('removeLogPoint', "Remove Log Point") : nls.localize('removeBreakpoint', "Remove Breakpoint"), - logPoint ? nls.localize('disableLogPoint', "Disable Log Point") : nls.localize('disableBreakpoint', "Disable Breakpoint"), + breakpointType.toLowerCase(), logPoint ? nls.localize('message', "message") : nls.localize('condition', "condition")), [ + nls.localize('removeLogPoint', "Remove {0}", breakpointType), + nls.localize('disableLogPoint', "Disable {0}", breakpointType), nls.localize('cancel', "Cancel") ], { cancelId: 2 }).then(choice => { if (choice === 0) { From c53db4b02e8eec2624b60c0caa0656910f1f1061 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 09:28:34 -0700 Subject: [PATCH 0944/1070] Remove empty imports --- src/vs/editor/contrib/gotoError/gotoError.ts | 1 - src/vs/workbench/browser/parts/editor/resourceViewer.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/vs/editor/contrib/gotoError/gotoError.ts b/src/vs/editor/contrib/gotoError/gotoError.ts index d1d82b9a00b..e9aa3c4667d 100644 --- a/src/vs/editor/contrib/gotoError/gotoError.ts +++ b/src/vs/editor/contrib/gotoError/gotoError.ts @@ -17,7 +17,6 @@ import { Range } from 'vs/editor/common/core/range'; import * as editorCommon from 'vs/editor/common/editorCommon'; import { registerEditorAction, registerEditorContribution, ServicesAccessor, IActionOptions, EditorAction, EditorCommand, registerEditorCommand } from 'vs/editor/browser/editorExtensions'; import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser'; -import { } from 'vs/platform/theme/common/colorRegistry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts index 02e222d2456..f89c87eea31 100644 --- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts +++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts @@ -19,7 +19,6 @@ import { clamp } from 'vs/base/common/numbers'; import { Themable } from 'vs/workbench/common/theme'; import { IStatusbarItem, StatusbarItemDescriptor, IStatusbarRegistry, Extensions, StatusbarAlignment } from 'vs/workbench/browser/parts/statusbar/statusbar'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { } from 'vs/platform/workspace/common/workspace'; import { IDisposable } from 'vs/base/common/lifecycle'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { Registry } from 'vs/platform/registry/common/platform'; From 4686ca2e6e759f769c6fad10827dc4ce53fc7aae Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 16:59:26 +0200 Subject: [PATCH 0945/1070] Add TextModel.getActiveIndentGuide --- src/vs/editor/common/model.ts | 14 ++ src/vs/editor/common/model/textModel.ts | 212 ++++++++++++++++-- .../common/model/textModelWithTokens.test.ts | 33 ++- 3 files changed, 235 insertions(+), 24 deletions(-) diff --git a/src/vs/editor/common/model.ts b/src/vs/editor/common/model.ts index 607b70ac557..3f628c4136a 100644 --- a/src/vs/editor/common/model.ts +++ b/src/vs/editor/common/model.ts @@ -446,6 +446,15 @@ export enum TrackedRangeStickiness { GrowsOnlyWhenTypingAfter = 3, } +/** + * @internal + */ +export interface IActiveIndentGuideInfo { + startLineNumber: number; + endLineNumber: number; + indent: number; +} + /** * A model. */ @@ -857,6 +866,11 @@ export interface ITextModel { */ matchBracket(position: IPosition): [Range, Range]; + /** + * @internal + */ + getActiveIndentGuide(lineNumber: number): IActiveIndentGuideInfo; + /** * @internal */ diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index b22db35807d..48ff90c6d0c 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -2390,6 +2390,168 @@ export class TextModel extends Disposable implements model.ITextModel { return TextModel.computeIndentLevel(this._buffer.getLineContent(lineIndex + 1), this._options.tabSize); } + public getActiveIndentGuide(lineNumber: number): model.IActiveIndentGuideInfo { + this._assertNotDisposed(); + const lineCount = this.getLineCount(); + + if (lineNumber < 1 || lineNumber > lineCount) { + throw new Error('Illegal value for lineNumber'); + } + + const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id); + const offSide = foldingRules && foldingRules.offSide; + + let up_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */ + let up_aboveContentLineIndent = -1; + let up_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */ + let up_belowContentLineIndent = -1; + const up_resolveIndents = (lineNumber: number) => { + if (up_aboveContentLineIndex !== -1 && (up_aboveContentLineIndex === -2 || up_aboveContentLineIndex > lineNumber - 1)) { + up_aboveContentLineIndex = -1; + up_aboveContentLineIndent = -1; + + // must find previous line with content + for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) { + let indent = this._computeIndentLevel(lineIndex); + if (indent >= 0) { + up_aboveContentLineIndex = lineIndex; + up_aboveContentLineIndent = indent; + break; + } + } + } + + if (up_belowContentLineIndex === -2) { + up_belowContentLineIndex = -1; + up_belowContentLineIndent = -1; + + // must find next line with content + for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) { + let indent = this._computeIndentLevel(lineIndex); + if (indent >= 0) { + up_belowContentLineIndex = lineIndex; + up_belowContentLineIndent = indent; + break; + } + } + } + }; + + let down_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */ + let down_aboveContentLineIndent = -1; + let down_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */ + let down_belowContentLineIndent = -1; + const down_resolveIndents = (lineNumber: number) => { + if (down_aboveContentLineIndex === -2) { + down_aboveContentLineIndex = -1; + down_aboveContentLineIndent = -1; + + // must find previous line with content + for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) { + let indent = this._computeIndentLevel(lineIndex); + if (indent >= 0) { + down_aboveContentLineIndex = lineIndex; + down_aboveContentLineIndent = indent; + break; + } + } + } + + if (down_belowContentLineIndex !== -1 && (down_belowContentLineIndex === -2 || down_belowContentLineIndex < lineNumber - 1)) { + down_belowContentLineIndex = -1; + down_belowContentLineIndent = -1; + + // must find next line with content + for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) { + let indent = this._computeIndentLevel(lineIndex); + if (indent >= 0) { + down_belowContentLineIndex = lineIndex; + down_belowContentLineIndent = indent; + break; + } + } + } + }; + + let startLineNumber = 0; + let goUp = true; + let endLineNumber = 0; + let goDown = true; + let indent = 0; + + for (let distance = 0; goUp || goDown; distance++) { + const upLineNumber = lineNumber - distance; + const downLineNumber = lineNumber + distance; + + if (upLineNumber < 1) { + goUp = false; + } + if (downLineNumber > lineCount) { + goDown = false; + } + + if (goUp) { + // compute indent level going up + let upLineIndentLevel: number; + + const currentIndent = this._computeIndentLevel(upLineNumber - 1); + if (currentIndent >= 0) { + // This line has content (besides whitespace) + // Use the line's indent + up_belowContentLineIndex = upLineNumber - 1; + up_belowContentLineIndent = currentIndent; + upLineIndentLevel = Math.ceil(currentIndent / this._options.tabSize); + } else { + up_resolveIndents(upLineNumber); + upLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, up_aboveContentLineIndent, up_belowContentLineIndent); + } + + if (distance === 0) { + // This is the initial line number + startLineNumber = upLineNumber; + endLineNumber = downLineNumber; + indent = upLineIndentLevel; + if (indent === 0) { + // No need to continue + return { startLineNumber, endLineNumber, indent }; + } + continue; + } + + if (upLineIndentLevel >= indent) { + startLineNumber = upLineNumber; + } else { + goUp = false; + } + } + + if (goDown) { + // compute indent level going down + let downLineIndentLevel: number; + + const currentIndent = this._computeIndentLevel(downLineNumber - 1); + if (currentIndent >= 0) { + // This line has content (besides whitespace) + // Use the line's indent + down_aboveContentLineIndex = downLineNumber - 1; + down_aboveContentLineIndent = currentIndent; + downLineIndentLevel = Math.ceil(currentIndent / this._options.tabSize); + } else { + down_resolveIndents(downLineNumber); + downLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, down_aboveContentLineIndent, down_belowContentLineIndent); + } + + if (downLineIndentLevel >= indent) { + endLineNumber = downLineNumber; + } else { + goDown = false; + } + } + } + + return { startLineNumber, endLineNumber, indent }; + } + public getLinesIndentGuides(startLineNumber: number, endLineNumber: number): number[] { this._assertNotDisposed(); const lineCount = this.getLineCount(); @@ -2455,32 +2617,38 @@ export class TextModel extends Disposable implements model.ITextModel { } } - if (aboveContentLineIndent === -1 || belowContentLineIndent === -1) { - // At the top or bottom of the file - result[resultIndex] = 0; + result[resultIndex] = this._getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent); - } else if (aboveContentLineIndent < belowContentLineIndent) { - // we are inside the region above - result[resultIndex] = (1 + Math.floor(aboveContentLineIndent / this._options.tabSize)); - - } else if (aboveContentLineIndent === belowContentLineIndent) { - // we are in between two regions - result[resultIndex] = Math.ceil(belowContentLineIndent / this._options.tabSize); - - } else { - - if (offSide) { - // same level as region below - result[resultIndex] = Math.ceil(belowContentLineIndent / this._options.tabSize); - } else { - // we are inside the region that ends below - result[resultIndex] = (1 + Math.floor(belowContentLineIndent / this._options.tabSize)); - } - - } } return result; } + + private _getIndentLevelForWhitespaceLine(offSide: boolean, aboveContentLineIndent: number, belowContentLineIndent: number): number { + if (aboveContentLineIndent === -1 || belowContentLineIndent === -1) { + // At the top or bottom of the file + return 0; + + } else if (aboveContentLineIndent < belowContentLineIndent) { + // we are inside the region above + return (1 + Math.floor(aboveContentLineIndent / this._options.tabSize)); + + } else if (aboveContentLineIndent === belowContentLineIndent) { + // we are in between two regions + return Math.ceil(belowContentLineIndent / this._options.tabSize); + + } else { + + if (offSide) { + // same level as region below + return Math.ceil(belowContentLineIndent / this._options.tabSize); + } else { + // we are inside the region that ends below + return (1 + Math.floor(belowContentLineIndent / this._options.tabSize)); + } + + } + } + //#endregion } diff --git a/src/vs/editor/test/common/model/textModelWithTokens.test.ts b/src/vs/editor/test/common/model/textModelWithTokens.test.ts index a9fae3df41a..be4d9452721 100644 --- a/src/vs/editor/test/common/model/textModelWithTokens.test.ts +++ b/src/vs/editor/test/common/model/textModelWithTokens.test.ts @@ -380,10 +380,39 @@ suite('TextModel.getLineIndentGuide', () => { actual[line - 1] = [actualIndents[line - 1], model.getLineContent(line)]; } - // let expected = lines.map(l => l[0]); - assert.deepEqual(actual, lines); + // Also test getActiveIndentGuide + for (let lineNumber = 1; lineNumber <= model.getLineCount(); lineNumber++) { + let startLineNumber = lineNumber; + let endLineNumber = lineNumber; + let indent = actualIndents[lineNumber - 1]; + + if (indent !== 0) { + for (let i = lineNumber - 1; i >= 1; i--) { + const currIndent = actualIndents[i - 1]; + if (currIndent >= indent) { + startLineNumber = i; + } else { + break; + } + } + for (let i = lineNumber + 1; i <= model.getLineCount(); i++) { + const currIndent = actualIndents[i - 1]; + if (currIndent >= indent) { + endLineNumber = i; + } else { + break; + } + } + } + + const expected = { startLineNumber, endLineNumber, indent }; + const actual = model.getActiveIndentGuide(lineNumber); + + assert.deepEqual(actual, expected, `line number ${lineNumber}`); + } + model.dispose(); } From 0100518547990f6f8584f2d4cda8c9970e973ec9 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 18:31:05 +0200 Subject: [PATCH 0946/1070] Highlight active indent guide (closes #14017) --- .../theme-abyss/themes/abyss-color-theme.json | 1 + .../theme-defaults/themes/dark_defaults.json | 1 + .../themes/hc_black_defaults.json | 1 + .../theme-defaults/themes/light_defaults.json | 1 + .../themes/dimmed-monokai-color-theme.json | 1 + .../themes/monokai-color-theme.json | 1 + .../themes/solarized-dark-color-theme.json | 3 +- .../themes/solarized-light-color-theme.json | 3 +- .../viewParts/indentGuides/indentGuides.css | 3 ++ .../viewParts/indentGuides/indentGuides.ts | 41 ++++++++++++++++--- .../editor/common/view/editorColorRegistry.ts | 1 + .../common/viewModel/splitLinesCollection.ts | 27 +++++++++++- src/vs/editor/common/viewModel/viewModel.ts | 3 +- .../editor/common/viewModel/viewModelImpl.ts | 6 ++- src/vs/editor/standalone/common/themes.ts | 5 ++- .../electron-browser/themeCompatibility.ts | 1 + 16 files changed, 87 insertions(+), 12 deletions(-) diff --git a/extensions/theme-abyss/themes/abyss-color-theme.json b/extensions/theme-abyss/themes/abyss-color-theme.json index 3c29932bdee..85f5f9a4a9e 100644 --- a/extensions/theme-abyss/themes/abyss-color-theme.json +++ b/extensions/theme-abyss/themes/abyss-color-theme.json @@ -309,6 +309,7 @@ "editor.lineHighlightBackground": "#082050", "editor.selectionBackground": "#770811", "editorIndentGuide.background": "#002952", + "editorIndentGuide.activeBackground": "#204972", "editorHoverWidget.background": "#000c38", "editorHoverWidget.border": "#004c18", "editorLineNumber.foreground": "#406385", diff --git a/extensions/theme-defaults/themes/dark_defaults.json b/extensions/theme-defaults/themes/dark_defaults.json index e15677c62c8..cb9e20066b5 100644 --- a/extensions/theme-defaults/themes/dark_defaults.json +++ b/extensions/theme-defaults/themes/dark_defaults.json @@ -6,6 +6,7 @@ "editor.foreground": "#D4D4D4", "editor.inactiveSelectionBackground": "#3A3D41", "editorIndentGuide.background": "#404040", + "editorIndentGuide.activeBackground": "#707070", "editor.selectionHighlightBackground": "#ADD6FF26", "list.dropBackground": "#383B3D", "activityBarBadge.background": "#007ACC", diff --git a/extensions/theme-defaults/themes/hc_black_defaults.json b/extensions/theme-defaults/themes/hc_black_defaults.json index 8833ff32c1f..4acf07cd7ab 100644 --- a/extensions/theme-defaults/themes/hc_black_defaults.json +++ b/extensions/theme-defaults/themes/hc_black_defaults.json @@ -5,6 +5,7 @@ "editor.background": "#000000", "editor.foreground": "#FFFFFF", "editorIndentGuide.background": "#FFFFFF", + "editorIndentGuide.activeBackground": "#FFFFFF", "sideBarTitle.foreground": "#FFFFFF" }, "settings": [ diff --git a/extensions/theme-defaults/themes/light_defaults.json b/extensions/theme-defaults/themes/light_defaults.json index 4e50029e23c..2ee46debb3a 100644 --- a/extensions/theme-defaults/themes/light_defaults.json +++ b/extensions/theme-defaults/themes/light_defaults.json @@ -6,6 +6,7 @@ "editor.foreground": "#000000", "editor.inactiveSelectionBackground": "#E5EBF1", "editorIndentGuide.background": "#D3D3D3", + "editorIndentGuide.activeBackground": "#939393", "editor.selectionHighlightBackground": "#ADD6FF4D", "editorSuggestWidget.background": "#F3F3F3", "activityBarBadge.background": "#007ACC", diff --git a/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json b/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json index 0a45c9ffe88..20f12faee09 100644 --- a/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json +++ b/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json @@ -19,6 +19,7 @@ "editorCursor.foreground": "#c07020", "editorWhitespace.foreground": "#505037", "editorIndentGuide.background": "#505037", + "editorIndentGuide.activeBackground": "#707057", "editorGroupHeader.tabsBackground": "#282828", "editorGroup.background": "#1e1e1e", "tab.inactiveBackground": "#404040", diff --git a/extensions/theme-monokai/themes/monokai-color-theme.json b/extensions/theme-monokai/themes/monokai-color-theme.json index 610bf0dc5a2..439ed05190e 100644 --- a/extensions/theme-monokai/themes/monokai-color-theme.json +++ b/extensions/theme-monokai/themes/monokai-color-theme.json @@ -28,6 +28,7 @@ "editorCursor.foreground": "#f8f8f0", "editorWhitespace.foreground": "#464741", "editorIndentGuide.background": "#464741", + "editorIndentGuide.activeBackground": "#767771", "editorGroupHeader.tabsBackground": "#1e1f1c", "editorGroup.dropBackground": "#41433980", "tab.inactiveBackground": "#414339", diff --git a/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json b/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json index 2f5db67fbad..7d77408d2e7 100644 --- a/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json +++ b/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json @@ -357,7 +357,8 @@ "editor.lineHighlightBackground": "#073642", "editorLineNumber.activeForeground": "#949494", "editor.selectionBackground": "#073642", - // "editorIndentGuide.background": "", + "editorIndentGuide.background": "#93A1A180", + "editorIndentGuide.activeBackground": "#C3E1E180", "editorHoverWidget.background": "#004052", // "editorHoverWidget.border": "", // "editorLineNumber.foreground": "", diff --git a/extensions/theme-solarized-light/themes/solarized-light-color-theme.json b/extensions/theme-solarized-light/themes/solarized-light-color-theme.json index d752a613c38..588e21e8933 100644 --- a/extensions/theme-solarized-light/themes/solarized-light-color-theme.json +++ b/extensions/theme-solarized-light/themes/solarized-light-color-theme.json @@ -352,7 +352,8 @@ "editorWhitespace.foreground": "#586E7580", "editor.lineHighlightBackground": "#EEE8D5", "editor.selectionBackground": "#EEE8D5", - // "editorIndentGuide.background": "", + "editorIndentGuide.background": "#586E7580", + "editorIndentGuide.activeBackground": "#081E2580", "editorHoverWidget.background": "#CCC4B0", "editorLineNumber.activeForeground": "#567983", // "editorHoverWidget.border": "", diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css index 45992137d18..3055ad67e4e 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.css @@ -10,3 +10,6 @@ .monaco-editor .lines-content .cigr { position: absolute; } +.monaco-editor .lines-content .cigra { + position: absolute; +} diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts index b8ad9dadd68..8834b5fed88 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts @@ -11,12 +11,13 @@ import { ViewContext } from 'vs/editor/common/view/viewContext'; import { RenderingContext } from 'vs/editor/common/view/renderingContext'; import * as viewEvents from 'vs/editor/common/view/viewEvents'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; -import { editorIndentGuides } from 'vs/editor/common/view/editorColorRegistry'; +import { editorIndentGuides, editorActiveIndentGuides } from 'vs/editor/common/view/editorColorRegistry'; import { Position } from 'vs/editor/common/core/position'; export class IndentGuidesOverlay extends DynamicViewOverlay { private _context: ViewContext; + private _primaryLineNumber: number; private _lineHeight: number; private _spaceWidth: number; private _renderResult: string[]; @@ -25,6 +26,7 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { constructor(context: ViewContext) { super(); this._context = context; + this._primaryLineNumber = 0; this._lineHeight = this._context.configuration.editor.lineHeight; this._spaceWidth = this._context.configuration.editor.fontInfo.spaceWidth; this._enabled = this._context.configuration.editor.viewInfo.renderIndentGuides; @@ -54,6 +56,17 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { } return true; } + public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean { + const selection = e.selections[0]; + const newPrimaryLineNumber = selection.isEmpty() ? selection.positionLineNumber : 0; + + if (this._primaryLineNumber !== newPrimaryLineNumber) { + this._primaryLineNumber = newPrimaryLineNumber; + return true; + } + + return false; + } public onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean { // true for inline decorations return true; @@ -97,16 +110,28 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { const indents = this._context.model.getLinesIndentGuides(visibleStartLineNumber, visibleEndLineNumber); + let activeIndentStartLineNumber = 0; + let activeIndentEndLineNumber = 0; + let activeIndentLevel = 0; + if (this._primaryLineNumber) { + const activeIndentInfo = this._context.model.getActiveIndentGuide(this._primaryLineNumber); + activeIndentStartLineNumber = activeIndentInfo.startLineNumber; + activeIndentEndLineNumber = activeIndentInfo.endLineNumber; + activeIndentLevel = activeIndentInfo.indent; + } + let output: string[] = []; for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) { + const containsActiveIndentGuide = (activeIndentStartLineNumber <= lineNumber && lineNumber <= activeIndentEndLineNumber); const lineIndex = lineNumber - visibleStartLineNumber; const indent = indents[lineIndex]; let result = ''; let leftMostVisiblePosition = ctx.visibleRangeForPosition(new Position(lineNumber, 1)); let left = leftMostVisiblePosition ? leftMostVisiblePosition.left : 0; - for (let i = 0; i < indent; i++) { - result += `
`; + for (let i = 1; i <= indent; i++) { + let className = (containsActiveIndentGuide && i === activeIndentLevel ? 'cigra' : 'cigr'); + result += `
`; left += tabWidth; } @@ -128,8 +153,12 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { } registerThemingParticipant((theme, collector) => { - let editorGuideColor = theme.getColor(editorIndentGuides); - if (editorGuideColor) { - collector.addRule(`.monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ${editorGuideColor} inset; }`); + let editorIndentGuidesColor = theme.getColor(editorIndentGuides); + if (editorIndentGuidesColor) { + collector.addRule(`.monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ${editorIndentGuidesColor} inset; }`); + } + let editorActiveIndentGuidesColor = theme.getColor(editorActiveIndentGuides) || editorIndentGuidesColor; + if (editorActiveIndentGuidesColor) { + collector.addRule(`.monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 ${editorActiveIndentGuidesColor} inset; }`); } }); diff --git a/src/vs/editor/common/view/editorColorRegistry.ts b/src/vs/editor/common/view/editorColorRegistry.ts index 9bafc0f45c2..92f67358ba7 100644 --- a/src/vs/editor/common/view/editorColorRegistry.ts +++ b/src/vs/editor/common/view/editorColorRegistry.ts @@ -20,6 +20,7 @@ export const editorCursorForeground = registerColor('editorCursor.foreground', { export const editorCursorBackground = registerColor('editorCursor.background', null, nls.localize('editorCursorBackground', 'The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.')); export const editorWhitespaces = registerColor('editorWhitespace.foreground', { dark: '#e3e4e229', light: '#33333333', hc: '#e3e4e229' }, nls.localize('editorWhitespaces', 'Color of whitespace characters in the editor.')); export const editorIndentGuides = registerColor('editorIndentGuide.background', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorIndentGuides', 'Color of the editor indentation guides.')); +export const editorActiveIndentGuides = registerColor('editorIndentGuide.activeBackground', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorActiveIndentGuide', 'Color of the active editor indentation guides.')); export const editorLineNumbers = registerColor('editorLineNumber.foreground', { dark: '#5A5A5A', light: '#2B91AF', hc: Color.white }, nls.localize('editorLineNumbers', 'Color of editor line numbers.')); const deprecatedEditorActiveLineNumber = registerColor('editorActiveLineNumber.foreground', { dark: null, light: null, hc: null }, nls.localize('editorActiveLineNumber', 'Color of editor active line number'), false, nls.localize('deprecatedEditorActiveLineNumber', 'Id is deprecated. Use \'editorLineNumber.activeForeground\' instead.')); diff --git a/src/vs/editor/common/viewModel/splitLinesCollection.ts b/src/vs/editor/common/viewModel/splitLinesCollection.ts index b80a077c786..73f02436877 100644 --- a/src/vs/editor/common/viewModel/splitLinesCollection.ts +++ b/src/vs/editor/common/viewModel/splitLinesCollection.ts @@ -14,7 +14,7 @@ import { WrappingIndent } from 'vs/editor/common/config/editorOptions'; import { ModelDecorationOptions, ModelDecorationOverviewRulerOptions } from 'vs/editor/common/model/textModel'; import { ThemeColor, ITheme } from 'vs/platform/theme/common/themeService'; import { Color } from 'vs/base/common/color'; -import { IModelDecoration, ITextModel, IModelDeltaDecoration, EndOfLinePreference } from 'vs/editor/common/model'; +import { IModelDecoration, ITextModel, IModelDeltaDecoration, EndOfLinePreference, IActiveIndentGuideInfo } from 'vs/editor/common/model'; export class OutputPosition { _outputPositionBrand: void; @@ -82,6 +82,7 @@ export interface IViewModelLinesCollection { getViewLineCount(): number; warmUpLookupCache(viewStartLineNumber: number, viewEndLineNumber: number): void; + getActiveIndentGuide(viewLineNumber: number): IActiveIndentGuideInfo; getViewLinesIndentGuides(viewStartLineNumber: number, viewEndLineNumber: number): number[]; getViewLineContent(viewLineNumber: number): string; getViewLineLength(viewLineNumber: number): number; @@ -504,6 +505,22 @@ export class SplitLinesCollection implements IViewModelLinesCollection { this.prefixSumComputer.warmUpCache(viewStartLineNumber - 1, viewEndLineNumber - 1); } + public getActiveIndentGuide(viewLineNumber: number): IActiveIndentGuideInfo { + this._ensureValidState(); + viewLineNumber = this._toValidViewLineNumber(viewLineNumber); + + const modelPosition = this.convertViewPositionToModelPosition(viewLineNumber, this.getViewLineMinColumn(viewLineNumber)); + const result = this.model.getActiveIndentGuide(modelPosition.lineNumber); + + const viewStartPosition = this.convertModelPositionToViewPosition(result.startLineNumber, 1); + const viewEndPosition = this.convertModelPositionToViewPosition(result.endLineNumber, 1); + return { + startLineNumber: viewStartPosition.lineNumber, + endLineNumber: viewEndPosition.lineNumber, + indent: result.indent + }; + } + public getViewLinesIndentGuides(viewStartLineNumber: number, viewEndLineNumber: number): number[] { this._ensureValidState(); viewStartLineNumber = this._toValidViewLineNumber(viewStartLineNumber); @@ -1241,6 +1258,14 @@ export class IdentityLinesCollection implements IViewModelLinesCollection { public warmUpLookupCache(viewStartLineNumber: number, viewEndLineNumber: number): void { } + public getActiveIndentGuide(viewLineNumber: number): IActiveIndentGuideInfo { + return { + startLineNumber: viewLineNumber, + endLineNumber: viewLineNumber, + indent: 0 + }; + } + public getViewLinesIndentGuides(viewStartLineNumber: number, viewEndLineNumber: number): number[] { const viewLineCount = viewEndLineNumber - viewStartLineNumber + 1; let result = new Array(viewLineCount); diff --git a/src/vs/editor/common/viewModel/viewModel.ts b/src/vs/editor/common/viewModel/viewModel.ts index b9ce5b257ce..c97d919393a 100644 --- a/src/vs/editor/common/viewModel/viewModel.ts +++ b/src/vs/editor/common/viewModel/viewModel.ts @@ -5,7 +5,7 @@ 'use strict'; import { INewScrollPosition } from 'vs/editor/common/editorCommon'; -import { EndOfLinePreference, IModelDecorationOptions } from 'vs/editor/common/model'; +import { EndOfLinePreference, IModelDecorationOptions, IActiveIndentGuideInfo } from 'vs/editor/common/model'; import { IViewLineTokens } from 'vs/editor/common/core/lineTokens'; import { Position, IPosition } from 'vs/editor/common/core/position'; import { Range } from 'vs/editor/common/core/range'; @@ -132,6 +132,7 @@ export interface IViewModel { getLineCount(): number; getLineContent(lineNumber: number): string; getLineLength(lineNumber: number): number; + getActiveIndentGuide(lineNumber: number): IActiveIndentGuideInfo; getLinesIndentGuides(startLineNumber: number, endLineNumber: number): number[]; getLineMinColumn(lineNumber: number): number; getLineMaxColumn(lineNumber: number): number; diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index 3f9ff85de8c..8fbfa9939e7 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -23,7 +23,7 @@ import { Color } from 'vs/base/common/color'; import { IDisposable } from 'vs/base/common/lifecycle'; import { ITheme } from 'vs/platform/theme/common/themeService'; import { ModelDecorationOverviewRulerOptions } from 'vs/editor/common/model/textModel'; -import { ITextModel, EndOfLinePreference, TrackedRangeStickiness } from 'vs/editor/common/model'; +import { ITextModel, EndOfLinePreference, TrackedRangeStickiness, IActiveIndentGuideInfo } from 'vs/editor/common/model'; const USE_IDENTITY_LINES_COLLECTION = true; @@ -451,6 +451,10 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel this.viewportStartLineTop = this.viewLayout.getVerticalOffsetForLineNumber(startLineNumber); } + public getActiveIndentGuide(lineNumber: number): IActiveIndentGuideInfo { + return this.lines.getActiveIndentGuide(lineNumber); + } + public getLinesIndentGuides(startLineNumber: number, endLineNumber: number): number[] { return this.lines.getViewLinesIndentGuides(startLineNumber, endLineNumber); } diff --git a/src/vs/editor/standalone/common/themes.ts b/src/vs/editor/standalone/common/themes.ts index 0a51ad13ed8..5ac8ffea7e7 100644 --- a/src/vs/editor/standalone/common/themes.ts +++ b/src/vs/editor/standalone/common/themes.ts @@ -7,7 +7,7 @@ import { IStandaloneThemeData } from 'vs/editor/standalone/common/standaloneThemeService'; import { editorBackground, editorForeground, editorSelectionHighlight, editorInactiveSelection } from 'vs/platform/theme/common/colorRegistry'; -import { editorIndentGuides } from 'vs/editor/common/view/editorColorRegistry'; +import { editorIndentGuides, editorActiveIndentGuides } from 'vs/editor/common/view/editorColorRegistry'; /* -------------------------------- Begin vs theme -------------------------------- */ export const vs: IStandaloneThemeData = { @@ -74,6 +74,7 @@ export const vs: IStandaloneThemeData = { [editorForeground]: '#000000', [editorInactiveSelection]: '#E5EBF1', [editorIndentGuides]: '#D3D3D3', + [editorActiveIndentGuides]: '#939393', [editorSelectionHighlight]: '#ADD6FF4D' } }; @@ -144,6 +145,7 @@ export const vs_dark: IStandaloneThemeData = { [editorForeground]: '#D4D4D4', [editorInactiveSelection]: '#3A3D41', [editorIndentGuides]: '#404040', + [editorActiveIndentGuides]: '#707070', [editorSelectionHighlight]: '#ADD6FF26' } }; @@ -205,6 +207,7 @@ export const hc_black: IStandaloneThemeData = { [editorBackground]: '#000000', [editorForeground]: '#FFFFFF', [editorIndentGuides]: '#FFFFFF', + [editorActiveIndentGuides]: '#FFFFFF', } }; /* -------------------------------- End hc-black theme -------------------------------- */ diff --git a/src/vs/workbench/services/themes/electron-browser/themeCompatibility.ts b/src/vs/workbench/services/themes/electron-browser/themeCompatibility.ts index a05bfc5cf4f..7ce9567369d 100644 --- a/src/vs/workbench/services/themes/electron-browser/themeCompatibility.ts +++ b/src/vs/workbench/services/themes/electron-browser/themeCompatibility.ts @@ -66,6 +66,7 @@ addSettingMapping('rangeHighlight', editorColorRegistry.editorRangeHighlight); addSettingMapping('caret', editorColorRegistry.editorCursorForeground); addSettingMapping('invisibles', editorColorRegistry.editorWhitespaces); addSettingMapping('guide', editorColorRegistry.editorIndentGuides); +addSettingMapping('activeGuide', editorColorRegistry.editorActiveIndentGuides); const ansiColorMap = ['ansiBlack', 'ansiRed', 'ansiGreen', 'ansiYellow', 'ansiBlue', 'ansiMagenta', 'ansiCyan', 'ansiWhite', 'ansiBrightBlack', 'ansiBrightRed', 'ansiBrightGreen', 'ansiBrightYellow', 'ansiBrightBlue', 'ansiBrightMagenta', 'ansiBrightCyan', 'ansiBrightWhite' From a443a44f40a6ab6595101f418e5fac91b5c93d10 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 09:57:09 -0700 Subject: [PATCH 0947/1070] Support WSL for multi-line prompt clearing --- .../parts/terminal/electron-browser/terminalInstance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index b81c277f4c3..654333e1b3a 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -567,7 +567,7 @@ export class TerminalInstance implements ITerminalInstance { } public clear(): void { - if (paths.basename(this._shellLaunchConfig.executable).match(/zsh|bash/)) { + if (this._shellLaunchConfig.executable && paths.basename(this._shellLaunchConfig.executable).match(/^(zsh|bash|bash\.exe)$/)) { // If a supported shell is being used, clear xterm scrollback then clear shell (^L) this._xterm.write('\x1b[3J'); this._processManager.write('\x0c'); From 0dc8e7f5bc82f5911d0b30f2bab8ad21eb2e4285 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 19:23:10 +0200 Subject: [PATCH 0948/1070] Fixes #32568: A ResolvedKeybinding must have a first part --- .../platform/keybinding/common/usLayoutResolvedKeybinding.ts | 3 +-- .../services/keybinding/common/macLinuxKeyboardMapper.ts | 3 +++ .../services/keybinding/common/windowsKeyboardMapper.ts | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts b/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts index 78861625e1a..a0c923e8078 100644 --- a/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts +++ b/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts @@ -21,8 +21,7 @@ export class USLayoutResolvedKeybinding extends ResolvedKeybinding { super(); this._os = OS; if (actual === null) { - this._firstPart = null; - this._chordPart = null; + throw new Error(`Invalid USLayoutResolvedKeybinding`); } else if (actual.type === KeybindingType.Chord) { this._firstPart = actual.firstPart; this._chordPart = actual.chordPart; diff --git a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts index 2bb8da1d890..1c56f4f0dde 100644 --- a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts @@ -74,6 +74,9 @@ export class NativeResolvedKeybinding extends ResolvedKeybinding { constructor(mapper: MacLinuxKeyboardMapper, OS: OperatingSystem, firstPart: ScanCodeBinding, chordPart: ScanCodeBinding) { super(); + if (!firstPart) { + throw new Error(`Invalid USLayoutResolvedKeybinding`); + } this._mapper = mapper; this._OS = OS; this._firstPart = firstPart; diff --git a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts index 02c1dac816c..869932b1b18 100644 --- a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts @@ -86,6 +86,9 @@ export class WindowsNativeResolvedKeybinding extends ResolvedKeybinding { constructor(mapper: WindowsKeyboardMapper, firstPart: SimpleKeybinding, chordPart: SimpleKeybinding) { super(); + if (!firstPart) { + throw new Error(`Invalid WindowsNativeResolvedKeybinding firstPart`); + } this._mapper = mapper; this._firstPart = firstPart; this._chordPart = chordPart; From 6c760803623b5143299a1c22504f5ad4269dc446 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 19:27:43 +0200 Subject: [PATCH 0949/1070] Fixes #32565 --- src/vs/editor/common/model/textModel.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index 48ff90c6d0c..3f50b4cf63e 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -2111,6 +2111,10 @@ export class TextModel extends Disposable implements model.ITextModel { } private _matchFoundBracket(foundBracket: Range, data: RichEditBracket, isOpen: boolean): [Range, Range] { + if (!data) { + return null; + } + if (isOpen) { let matched = this._findMatchingBracketDown(data, foundBracket.getEndPosition()); if (matched) { From 2fadb901982adf9f52e743a95a4f290d3752c920 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 18 Apr 2018 10:51:33 -0700 Subject: [PATCH 0950/1070] Move TS/JS to use organize imports codeAction instead of command (#47850) * Move TS/JS to use organize imports code action Fixes #47845 Fixes #46647 - Defines a new standard `SourceOrganizeImports` `CodeActionKind` to be used to implement organize imports in a consistent way. - Add a new `Organize imports` command and keybinding that executes these actions. - Move over the existing js/ts organize imports command to use the new code action kind * Use supportedCodeActions context key * Document code action kind values * Fix regular expression Make sure we only match whole scopes and not `unicorn.source.organizeImports` --- .../typescript-language-features/package.json | 34 -------- .../package.nls.json | 1 - .../src/extension.ts | 7 -- .../src/features/organizeImports.ts | 81 ++++++------------- .../src/languageProvider.ts | 10 ++- .../contrib/codeAction/codeActionCommands.ts | 45 ++++++++++- .../codeAction/codeActionContributions.ts | 3 +- .../contrib/codeAction/codeActionModel.ts | 32 +++----- .../contrib/codeAction/codeActionTrigger.ts | 1 + src/vs/vscode.d.ts | 17 ++-- src/vs/workbench/api/node/extHostTypes.ts | 1 + 11 files changed, 95 insertions(+), 137 deletions(-) diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index 649154ef5fe..836a370e785 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -39,7 +39,6 @@ "onCommand:javascript.goToProjectConfig", "onCommand:typescript.goToProjectConfig", "onCommand:typescript.openTsServerLog", - "onCommand:typescript.organizeImports", "onCommand:workbench.action.tasks.runTask" ], "main": "./out/extension", @@ -464,23 +463,6 @@ "command": "typescript.restartTsServer", "title": "%typescript.restartTsServer%", "category": "TypeScript" - }, - { - "command": "typescript.organizeImports", - "title": "%typescript.organizeImports%", - "category": "TypeScript" - }, - { - "command": "javascript.organizeImports", - "title": "%typescript.organizeImports%", - "category": "JavaScript" - } - ], - "keybindings": [ - { - "command": "typescript.organizeImports", - "key": "shift+alt+o", - "when": "typescript.isManagedFile && typescript.canOrganizeImports" } ], "menus": { @@ -528,22 +510,6 @@ { "command": "typescript.restartTsServer", "when": "typescript.isManagedFile" - }, - { - "command": "typescript.organizeImports", - "when": "editorLangId == typescriptreact && typescript.isManagedFile && typescript.canOrganizeImports" - }, - { - "command": "typescript.organizeImports", - "when": "editorLangId == typescript && typescript.isManagedFile && typescript.canOrganizeImports" - }, - { - "command": "javascript.organizeImports", - "when": "editorLangId == javascriptreact && typescript.isManagedFile && typescript.canOrganizeImports" - }, - { - "command": "javascript.organizeImports", - "when": "editorLangId == javascript && typescript.isManagedFile && typescript.canOrganizeImports" } ] }, diff --git a/extensions/typescript-language-features/package.nls.json b/extensions/typescript-language-features/package.nls.json index d3d8458eef0..18ab9fadd9a 100644 --- a/extensions/typescript-language-features/package.nls.json +++ b/extensions/typescript-language-features/package.nls.json @@ -53,7 +53,6 @@ "typescript.autoImportSuggestions.enabled": "Enable/disable auto import suggestions. Requires TypeScript >=2.6.1", "typescript.experimental.syntaxFolding": "Enables/disables syntax aware folding markers.", "taskDefinition.tsconfig.description": "The tsconfig file that defines the TS build.", - "typescript.organizeImports": "Organize Imports", "javascript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires TypeScript >= 2.8", "typescript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires TypeScript >= 2.8." } \ No newline at end of file diff --git a/extensions/typescript-language-features/src/extension.ts b/extensions/typescript-language-features/src/extension.ts index ac33918d1c2..960296b0491 100644 --- a/extensions/typescript-language-features/src/extension.ts +++ b/extensions/typescript-language-features/src/extension.ts @@ -19,7 +19,6 @@ import ManagedFileContextManager from './utils/managedFileContext'; import { lazy, Lazy } from './utils/lazy'; import * as fileSchemes from './utils/fileSchemes'; import LogDirectoryProvider from './utils/logDirectoryProvider'; -import { OrganizeImportsCommand, OrganizeImportsContextManager } from './features/organizeImports'; export function activate( context: vscode.ExtensionContext @@ -74,11 +73,6 @@ function createLazyClientHost( context.subscriptions.push(clientHost); - const organizeImportsContext = new OrganizeImportsContextManager(); - clientHost.serviceClient.onTsServerStarted(api => { - organizeImportsContext.onDidChangeApiVersion(api); - }, null, context.subscriptions); - clientHost.serviceClient.onReady(() => { context.subscriptions.push( ProjectStatus.create( @@ -103,7 +97,6 @@ function registerCommands( commandManager.register(new commands.RestartTsServerCommand(lazyClientHost)); commandManager.register(new commands.TypeScriptGoToProjectConfigCommand(lazyClientHost)); commandManager.register(new commands.JavaScriptGoToProjectConfigCommand(lazyClientHost)); - commandManager.register(new OrganizeImportsCommand(lazyClientHost)); } function isSupportedDocument( diff --git a/extensions/typescript-language-features/src/features/organizeImports.ts b/extensions/typescript-language-features/src/features/organizeImports.ts index 96bf276d3cb..2fe5f9e71d2 100644 --- a/extensions/typescript-language-features/src/features/organizeImports.ts +++ b/extensions/typescript-language-features/src/features/organizeImports.ts @@ -4,37 +4,27 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; - +import * as nls from 'vscode-nls'; import * as Proto from '../protocol'; -import { Command } from '../utils/commandManager'; +import { ITypeScriptServiceClient } from '../typescriptService'; +import { Command, CommandManager } from '../utils/commandManager'; +import { isSupportedLanguageMode } from '../utils/languageModeIds'; import * as typeconverts from '../utils/typeConverters'; -import { isSupportedLanguageMode } from '../utils/languageModeIds'; -import API from '../utils/api'; -import { Lazy } from '../utils/lazy'; -import TypeScriptServiceClientHost from '../typeScriptServiceClientHost'; -import { ITypeScriptServiceClient } from '../typescriptService'; -import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -export class OrganizeImportsCommand implements Command { - public static readonly Ids = ['javascript.organizeImports', 'typescript.organizeImports']; +class OrganizeImportsCommand implements Command { + public static readonly Id = '_typescript.organizeImports'; - public readonly id = OrganizeImportsCommand.Ids; + public readonly id = OrganizeImportsCommand.Id; constructor( - private readonly lazyClientHost: Lazy + private readonly client: ITypeScriptServiceClient ) { } public async execute(): Promise { - // Don't force activation - if (!this.lazyClientHost.hasValue) { - return false; - } - - const client = this.lazyClientHost.value.serviceClient; - if (!client.apiVersion.has280Features()) { + if (!this.client.apiVersion.has280Features()) { return false; } @@ -43,7 +33,7 @@ export class OrganizeImportsCommand implements Command { return false; } - const file = client.normalizePath(editor.document.uri); + const file = this.client.normalizePath(editor.document.uri); if (!file) { return false; } @@ -56,67 +46,42 @@ export class OrganizeImportsCommand implements Command { } } }; - const response = await client.execute('organizeImports', args); + const response = await this.client.execute('organizeImports', args); if (!response || !response.success) { return false; } - const edits = typeconverts.WorkspaceEdit.fromFromFileCodeEdits(client, response.body); + const edits = typeconverts.WorkspaceEdit.fromFromFileCodeEdits(this.client, response.body); return await vscode.workspace.applyEdit(edits); } } -/** - * When clause context set when the ts version supports organize imports. - */ -const contextName = 'typescript.canOrganizeImports'; - -export class OrganizeImportsContextManager { - - private currentValue: boolean = false; - - public onDidChangeApiVersion(apiVersion: API): any { - this.updateContext(apiVersion.has280Features()); - } - - private updateContext(newValue: boolean) { - if (newValue === this.currentValue) { - return; - } - - vscode.commands.executeCommand('setContext', contextName, newValue); - this.currentValue = newValue; - } -} - - export class OrganizeImportsCodeActionProvider implements vscode.CodeActionProvider { - private static readonly organizeImportsKind = vscode.CodeActionKind.Source.append('organizeImports'); - public constructor( - private readonly client: ITypeScriptServiceClient - ) { } + private readonly client: ITypeScriptServiceClient, + commandManager: CommandManager + ) { + commandManager.register(new OrganizeImportsCommand(client)); + } public readonly metadata: vscode.CodeActionProviderMetadata = { - providedCodeActionKinds: [OrganizeImportsCodeActionProvider.organizeImportsKind] + providedCodeActionKinds: [vscode.CodeActionKind.SourceOrganizeImports] }; public provideCodeActions( - document: vscode.TextDocument, + _document: vscode.TextDocument, _range: vscode.Range, _context: vscode.CodeActionContext, _token: vscode.CancellationToken ): vscode.CodeAction[] { - if (!isSupportedLanguageMode(document)) { - return []; - } - if (!this.client.apiVersion.has280Features()) { return []; } - const action = new vscode.CodeAction(localize('oraganizeImportsAction.title', "Organize Imports"), OrganizeImportsCodeActionProvider.organizeImportsKind); - action.command = { title: '', command: OrganizeImportsCommand.Ids[0] }; + const action = new vscode.CodeAction( + localize('oraganizeImportsAction.title', "Organize Imports"), + vscode.CodeActionKind.SourceOrganizeImports); + action.command = { title: '', command: OrganizeImportsCommand.Id }; return [action]; } } \ No newline at end of file diff --git a/extensions/typescript-language-features/src/languageProvider.ts b/extensions/typescript-language-features/src/languageProvider.ts index f23c7fab620..b2cdbf56456 100644 --- a/extensions/typescript-language-features/src/languageProvider.ts +++ b/extensions/typescript-language-features/src/languageProvider.ts @@ -43,7 +43,7 @@ export default class LanguageProvider { constructor( private readonly client: TypeScriptServiceClient, private readonly description: LanguageDescription, - commandManager: CommandManager, + private readonly commandManager: CommandManager, typingsStatus: TypingsStatus ) { this.formattingOptionsManager = new FormattingConfigurationManager(client); @@ -123,9 +123,6 @@ export default class LanguageProvider { const refactorProvider = new (await import('./features/refactorProvider')).default(client, this.formattingOptionsManager, commandManager); this.disposables.push(languages.registerCodeActionsProvider(selector, refactorProvider, refactorProvider.metadata)); - const organizeImportsProvider = new (await import('./features/organizeImports')).OrganizeImportsCodeActionProvider(client); - this.disposables.push(languages.registerCodeActionsProvider(selector, organizeImportsProvider, organizeImportsProvider.metadata)); - await this.initFoldingProvider(); this.disposables.push(workspace.onDidChangeConfiguration(c => { if (c.affectsConfiguration(foldingSetting)) { @@ -247,6 +244,11 @@ export default class LanguageProvider { if (this.client.apiVersion.has213Features()) { this.versionDependentDisposables.push(languages.registerTypeDefinitionProvider(selector, new (await import('./features/typeDefinitionProvider')).default(this.client))); } + + if (this.client.apiVersion.has280Features()) { + const organizeImportsProvider = new (await import('./features/organizeImports')).OrganizeImportsCodeActionProvider(this.client, this.commandManager); + this.versionDependentDisposables.push(languages.registerCodeActionsProvider(selector, organizeImportsProvider, organizeImportsProvider.metadata)); + } } public triggerAllDiagnostics(): void { diff --git a/src/vs/editor/contrib/codeAction/codeActionCommands.ts b/src/vs/editor/contrib/codeAction/codeActionCommands.ts index 9f9464324a3..3083b047c8d 100644 --- a/src/vs/editor/contrib/codeAction/codeActionCommands.ts +++ b/src/vs/editor/contrib/codeAction/codeActionCommands.ts @@ -22,10 +22,17 @@ import { IFileService } from 'vs/platform/files/common/files'; import { optional } from 'vs/platform/instantiation/common/instantiation'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IMarkerService } from 'vs/platform/markers/common/markers'; -import { CodeActionModel, CodeActionsComputeEvent, HAS_REFACTOR_PROVIDER, HAS_SOURCE_ACTION_PROVIDER } from './codeActionModel'; +import { CodeActionModel, CodeActionsComputeEvent, SUPPORTED_CODE_ACTIONS } from './codeActionModel'; import { CodeActionAutoApply, CodeActionFilter, CodeActionKind } from './codeActionTrigger'; import { CodeActionContextMenu } from './codeActionWidget'; import { LightBulbWidget } from './lightBulbWidget'; +import { escapeRegExpCharacters } from 'vs/base/common/strings'; + +function contextKeyForSupportedActions(kind: CodeActionKind) { + return ContextKeyExpr.regex( + SUPPORTED_CODE_ACTIONS.keys()[0], + new RegExp('(\\s|^)' + escapeRegExpCharacters(kind.value) + '\\b')); +} export class QuickFixController implements IEditorContribution { @@ -247,7 +254,9 @@ export class RefactorAction extends EditorAction { menuOpts: { group: '1_modification', order: 2, - when: ContextKeyExpr.and(EditorContextKeys.writable, HAS_REFACTOR_PROVIDER), + when: ContextKeyExpr.and( + EditorContextKeys.writable, + contextKeyForSupportedActions(CodeActionKind.Refactor)), } }); } @@ -274,8 +283,9 @@ export class SourceAction extends EditorAction { menuOpts: { group: '1_modification', order: 2.1, - when: ContextKeyExpr.and(EditorContextKeys.writable, HAS_SOURCE_ACTION_PROVIDER), - + when: ContextKeyExpr.and( + EditorContextKeys.writable, + contextKeyForSupportedActions(CodeActionKind.Source)), } }); } @@ -286,4 +296,31 @@ export class SourceAction extends EditorAction { { kind: CodeActionKind.Source, includeSourceActions: true }, CodeActionAutoApply.Never); } +} + +export class OrganizeImportsAction extends EditorAction { + + static readonly Id = 'editor.action.organizeImports'; + + constructor() { + super({ + id: OrganizeImportsAction.Id, + label: nls.localize('organizeImports.label', "Organize Imports"), + alias: 'Organize Imports', + precondition: ContextKeyExpr.and( + EditorContextKeys.writable, + contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)), + kbOpts: { + kbExpr: EditorContextKeys.editorTextFocus, + primary: KeyMod.Shift | KeyMod.Alt | KeyCode.KEY_O + } + }); + } + + public run(accessor: ServicesAccessor, editor: ICodeEditor): void { + return showCodeActionsForEditorSelection(editor, + nls.localize('editor.action.organize.noneMessage', "No organize imports action available"), + { kind: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, + CodeActionAutoApply.IfSingle); + } } \ No newline at end of file diff --git a/src/vs/editor/contrib/codeAction/codeActionContributions.ts b/src/vs/editor/contrib/codeAction/codeActionContributions.ts index 52df471057f..8653b935470 100644 --- a/src/vs/editor/contrib/codeAction/codeActionContributions.ts +++ b/src/vs/editor/contrib/codeAction/codeActionContributions.ts @@ -4,11 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import { registerEditorAction, registerEditorCommand, registerEditorContribution } from 'vs/editor/browser/editorExtensions'; -import { SourceAction, QuickFixController, QuickFixAction, CodeActionCommand, RefactorAction } from 'vs/editor/contrib/codeAction/codeActionCommands'; +import { SourceAction, QuickFixController, QuickFixAction, CodeActionCommand, RefactorAction, OrganizeImportsAction } from 'vs/editor/contrib/codeAction/codeActionCommands'; registerEditorContribution(QuickFixController); registerEditorAction(QuickFixAction); registerEditorAction(RefactorAction); registerEditorAction(SourceAction); +registerEditorAction(OrganizeImportsAction); registerEditorCommand(new CodeActionCommand()); diff --git a/src/vs/editor/contrib/codeAction/codeActionModel.ts b/src/vs/editor/contrib/codeAction/codeActionModel.ts index 7e7fe02e1f2..a369f31e28e 100644 --- a/src/vs/editor/contrib/codeAction/codeActionModel.ts +++ b/src/vs/editor/contrib/codeAction/codeActionModel.ts @@ -15,10 +15,9 @@ import { CodeAction, CodeActionProviderRegistry } from 'vs/editor/common/modes'; import { IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IMarkerService } from 'vs/platform/markers/common/markers'; import { getCodeActions } from './codeAction'; -import { CodeActionKind, CodeActionTrigger } from './codeActionTrigger'; +import { CodeActionTrigger } from './codeActionTrigger'; -export const HAS_REFACTOR_PROVIDER = new RawContextKey('hasRefactorProvider', false); -export const HAS_SOURCE_ACTION_PROVIDER = new RawContextKey('hasSourceActionProvider', false); +export const SUPPORTED_CODE_ACTIONS = new RawContextKey('supportedCodeAction', ''); export class CodeActionOracle { @@ -144,15 +143,13 @@ export class CodeActionModel { private _codeActionOracle: CodeActionOracle; private _onDidChangeFixes = new Emitter(); private _disposables: IDisposable[] = []; - private readonly _hasRefactorProvider: IContextKey; - private readonly _hasSourceProvider: IContextKey; + private readonly _supportedCodeActions: IContextKey; constructor(editor: ICodeEditor, markerService: IMarkerService, contextKeyService: IContextKeyService) { this._editor = editor; this._markerService = markerService; - this._hasRefactorProvider = HAS_REFACTOR_PROVIDER.bindTo(contextKeyService); - this._hasSourceProvider = HAS_SOURCE_ACTION_PROVIDER.bindTo(contextKeyService); + this._supportedCodeActions = SUPPORTED_CODE_ACTIONS.bindTo(contextKeyService); this._disposables.push(this._editor.onDidChangeModel(() => this._update())); this._disposables.push(this._editor.onDidChangeModelLanguage(() => this._update())); @@ -182,28 +179,19 @@ export class CodeActionModel { && CodeActionProviderRegistry.has(this._editor.getModel()) && !this._editor.getConfiguration().readOnly) { - let hasRefactorProvider = false; - let hasSourceProvider = false; - outer: for (const provider of CodeActionProviderRegistry.all(this._editor.getModel())) { - if (!provider.providedCodeActionKinds) { - continue; - } - for (const providedKind of provider.providedCodeActionKinds) { - hasRefactorProvider = hasRefactorProvider || CodeActionKind.Refactor.contains(providedKind); - hasSourceProvider = hasSourceProvider || CodeActionKind.Source.contains(providedKind); - if (hasRefactorProvider && hasSourceProvider) { - break outer; - } + const supportedActions: string[] = []; + for (const provider of CodeActionProviderRegistry.all(this._editor.getModel())) { + if (Array.isArray(provider.providedCodeActionKinds)) { + supportedActions.push(...provider.providedCodeActionKinds); } } - this._hasRefactorProvider.set(hasRefactorProvider); - this._hasSourceProvider.set(hasSourceProvider); + this._supportedCodeActions.set(supportedActions.join(' ')); this._codeActionOracle = new CodeActionOracle(this._editor, this._markerService, p => this._onDidChangeFixes.fire(p)); this._codeActionOracle.trigger({ type: 'auto' }); } else { - this._hasRefactorProvider.reset(); + this._supportedCodeActions.reset(); } } diff --git a/src/vs/editor/contrib/codeAction/codeActionTrigger.ts b/src/vs/editor/contrib/codeAction/codeActionTrigger.ts index 382c8ebda68..4f3c53b5dc9 100644 --- a/src/vs/editor/contrib/codeAction/codeActionTrigger.ts +++ b/src/vs/editor/contrib/codeAction/codeActionTrigger.ts @@ -11,6 +11,7 @@ export class CodeActionKind { public static readonly Empty = new CodeActionKind(''); public static readonly Refactor = new CodeActionKind('refactor'); public static readonly Source = new CodeActionKind('source'); + public static readonly SourceOrganizeImports = new CodeActionKind('source.organizeImports'); constructor( public readonly value: string diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 73c2a2ee364..85bb26a4ed0 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -1887,17 +1887,17 @@ declare module 'vscode' { static readonly Empty: CodeActionKind; /** - * Base kind for quickfix actions. + * Base kind for quickfix actions: `quickfix` */ static readonly QuickFix: CodeActionKind; /** - * Base kind for refactoring actions. + * Base kind for refactoring actions: `refactor` */ static readonly Refactor: CodeActionKind; /** - * Base kind for refactoring extraction actions. + * Base kind for refactoring extraction actions: `refactor.extract` * * Example extract actions: * @@ -1910,7 +1910,7 @@ declare module 'vscode' { static readonly RefactorExtract: CodeActionKind; /** - * Base kind for refactoring inline actions. + * Base kind for refactoring inline actions: `refactor.inline` * * Example inline actions: * @@ -1922,7 +1922,7 @@ declare module 'vscode' { static readonly RefactorInline: CodeActionKind; /** - * Base kind for refactoring rewrite actions. + * Base kind for refactoring rewrite actions: `refactor.rewrite` * * Example rewrite actions: * @@ -1936,12 +1936,17 @@ declare module 'vscode' { static readonly RefactorRewrite: CodeActionKind; /** - * Base kind for source actions. + * Base kind for source actions: `source` * * Source code actions apply to the entire file. */ static readonly Source: CodeActionKind; + /** + * Base kind for an organize imports source action: `source.organizeImports` + */ + static readonly SourceOrganizeImports: CodeActionKind; + private constructor(value: string); /** diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index d4da587fb9e..f877921b5d5 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -904,6 +904,7 @@ export class CodeActionKind { public static readonly RefactorInline = CodeActionKind.Refactor.append('inline'); public static readonly RefactorRewrite = CodeActionKind.Refactor.append('rewrite'); public static readonly Source = CodeActionKind.Empty.append('source'); + public static readonly SourceOrganizeImports = CodeActionKind.Source.append('organizeImports'); constructor( public readonly value: string From 811b7441b350e929715f41eb6437f1608517f491 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 10:52:31 -0700 Subject: [PATCH 0951/1070] Clean up process creation and check connected before sending --- .../api/node/extHostTerminalService.ts | 47 ++++++++----------- .../node/terminalProcessExtHostProxy.ts | 2 +- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index ee3fe228b8d..21493ea0fe3 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -6,6 +6,7 @@ import * as vscode from 'vscode'; import * as cp from 'child_process'; +import * as os from 'os'; import * as platform from 'vs/base/common/platform'; import * as terminalEnvironment from 'vs/workbench/parts/terminal/node/terminalEnvironment'; import Uri from 'vs/base/common/uri'; @@ -202,9 +203,12 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } this._logService.info('$createProcess', id, shellLaunchConfig, cols, rows); + // TODO: Base the cwd on the last active workspace root // const lastActiveWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot('file'); // this.initialCwd = terminalEnvironment.getCwd(shellLaunchConfig, lastActiveWorkspaceRootUri, this._configHelper); + const initialCwd = os.homedir(); + // TODO: Pull in and resolve config settings // // Resolve env vars from config and shell // const lastActiveWorkspaceRoot = this._workspaceContextService.getWorkspaceFolder(lastActiveWorkspaceRootUri); // const platformKey = platform.isWindows ? 'windows' : (platform.isMacintosh ? 'osx' : 'linux'); @@ -212,34 +216,19 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { // const envFromShell = terminalEnvironment.resolveConfigurationVariables(this._configurationResolverService, { ...shellLaunchConfig.env }, lastActiveWorkspaceRoot); // shellLaunchConfig.env = envFromShell; - // // Merge process env with the env from config - // const parentEnv = { ...process.env }; + // Merge process env with the env from config + const parentEnv = { ...process.env }; // terminalEnvironment.mergeEnvironments(parentEnv, envFromConfig); - // // Continue env initialization, merging in the env from the launch - // // config and adding keys that are needed to create the process - // const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, this.initialCwd, locale, cols, rows); - // const cwd = Uri.parse(paths.dirname(require.toUrl('../node/terminalProcess'))).fsPath; - // const options = { env, cwd }; - - - - - - // TODO: Launch process - // TODO: Associate the process with the terminal object/id - // TODO: terminal has incorrect name/options, fix up - const parentEnv = { ...process.env }; - const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, '/home/daniel', locale, cols, rows); - // TODO: Use Uri? + // Continue env initialization, merging in the env from the launch + // config and adding keys that are needed to create the process + const env = terminalEnvironment.createTerminalEnv(parentEnv, shellLaunchConfig, initialCwd, locale, cols, rows); let cwd = Uri.parse(require.toUrl('../../parts/terminal/node')).fsPath; const options = { env, cwd, execArgv: [] }; - let bootstrapUri = Uri.parse(require.toUrl('bootstrap')).fsPath; - + // Fork the process and listen for messages this._logService.debug(`Terminal process launching on ext host`, options); - this._terminalProcesses[id] = cp.fork(bootstrapUri, ['--type=terminal'], options); - + this._terminalProcesses[id] = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], options); this._terminalProcesses[id].on('message', (message: IMessageFromTerminalProcess) => { switch (message.type) { case 'pid': this._proxy.$sendProcessPid(id, message.content); break; @@ -250,16 +239,21 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptTerminalProcessInput(id: number, data: string): void { - this._terminalProcesses[id].send({ event: 'input', data }); + if (this._terminalProcesses[id].connected) { + this._terminalProcesses[id].send({ event: 'input', data }); + } } public $acceptTerminalProcessResize(id: number, cols: number, rows: number): void { - console.log('resize' + cols + ',' + rows); - this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + if (this._terminalProcesses[id].connected) { + this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + } } public $acceptTerminalProcessShutdown(id: number): void { - this._terminalProcesses[id].send({ event: 'shutdown' }); + if (this._terminalProcesses[id].connected) { + this._terminalProcesses[id].send({ event: 'shutdown' }); + } } private _getTerminalById(id: number): ExtHostTerminal { @@ -283,7 +277,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } class ApiRequest { - private _callback: (...args: any[]) => void; private _args: any[]; diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index 464f7de71ef..b815ed27d96 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -9,7 +9,7 @@ import { ITerminalService, ITerminalProcessExtHostProxy, IShellLaunchConfig } fr import { IDisposable } from '../../../../base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { - // TODO: Set this properly + // For ext host processes connected checks happen on the ext host public connected: boolean = true; constructor( From 634eb8ae1af0705885ebaa8a1709499263d6db50 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 10:58:37 -0700 Subject: [PATCH 0952/1070] Remove debug logging --- .../api/electron-browser/mainThreadTerminalService.ts | 2 -- src/vs/workbench/api/node/extHostTerminalService.ts | 4 ---- .../parts/terminal/electron-browser/terminalInstance.ts | 1 - 3 files changed, 7 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 4ea4d4eeeaf..6d5ce98516a 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -21,7 +21,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape extHostContext: IExtHostContext, @ITerminalService private terminalService: ITerminalService ) { - console.log('MainThreadTerminalService#ctor'); this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostTerminalService); this._toDispose.push(terminalService.onInstanceCreated((terminalInstance) => { // Delay this message so the TerminalInstance constructor has a chance to finish and @@ -101,7 +100,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape } private _onTerminalRequestExtHostProcess(request: ITerminalProcessExtHostRequest): void { - console.log('mainThreadTerminalService#_onTerminalRequestExtHostProcess', arguments); this._terminalProcesses[request.proxy.terminalId] = request.proxy; const shellLaunchConfigDto: ShellLaunchConfigDto = { name: request.shellLaunchConfig.name, diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 21493ea0fe3..06da1425d4d 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -89,7 +89,6 @@ export class ExtHostTerminal implements vscode.Terminal { } public _setProcessId(processId: number): void { - console.log('extHostTerminalService#_setProcessId', processId); this._pidPromiseComplete(processId); this._pidPromiseComplete = null; } @@ -163,7 +162,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptTerminalOpened(id: number, name: string): void { - console.log('terminal opened: ' + id); let index = this._getTerminalIndexById(id); if (index !== null) { // The terminal has already been created (via createTerminal*), only fire the event @@ -177,7 +175,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { public $acceptTerminalProcessId(id: number, processId: number): void { let terminal = this._getTerminalById(id); - console.log('ExtHostTerminalService#$acceptTerminalProcessId ' + id + ' ' + processId); if (terminal) { terminal._setProcessId(processId); } @@ -201,7 +198,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { shellLaunchConfig.executable = shellConfigValue; shellLaunchConfig.args = shellArgsConfigValue; } - this._logService.info('$createProcess', id, shellLaunchConfig, cols, rows); // TODO: Base the cwd on the last active workspace root // const lastActiveWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot('file'); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 592a65af4dd..cdc1f00c8a8 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -591,7 +591,6 @@ export class TerminalInstance implements ITerminalInstance { this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._id, this._configHelper); this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); - console.log('_createProcess', this._cols, this._rows); this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows); if (this._shellLaunchConfig.name) { From 1ffe882f1ddfade884f76b812b7d8e884cea24ab Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 11:29:15 -0700 Subject: [PATCH 0953/1070] Add proposed API checks for new terminal APIs --- src/vs/workbench/api/node/extHost.api.impl.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index ca47b4f247d..3de53551971 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -345,7 +345,7 @@ export function createApiFactory( return extHostEditors.getVisibleTextEditors(); }, get terminals() { - return extHostTerminalService.terminals; + return proposedApiFunction(extension, extHostTerminalService.terminals); }, showTextDocument(documentOrUri: vscode.TextDocument | vscode.Uri, columnOrOptions?: vscode.ViewColumn | vscode.TextDocumentShowOptions, preserveFocus?: boolean): TPromise { let documentPromise: TPromise; @@ -382,9 +382,9 @@ export function createApiFactory( onDidCloseTerminal(listener, thisArg?, disposables?) { return extHostTerminalService.onDidCloseTerminal(listener, thisArg, disposables); }, - onDidOpenTerminal(listener, thisArg?, disposables?) { + onDidOpenTerminal: proposedApiFunction(extension, (listener, thisArg?, disposables?) => { return extHostTerminalService.onDidOpenTerminal(listener, thisArg, disposables); - }, + }), get state() { return extHostWindow.state; }, From 52a75ecf23338b3a73aaef4714837ffb6e142ec6 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 18 Apr 2018 11:32:20 -0700 Subject: [PATCH 0954/1070] Use correct $name for onDidDisposeWebviewPanel event Fixes #48127 --- src/vs/workbench/api/electron-browser/mainThreadWebview.ts | 2 +- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostWebview.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 4f007ab2439..c6411afa704 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -177,7 +177,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv onDidClickLink: uri => this.onDidClickLink(handle, uri), onMessage: message => this._proxy.$onMessage(handle, message), onDispose: () => { - this._proxy.onDidDisposeWebviewPanel(handle).then(() => { + this._proxy.$onDidDisposeWebviewPanel(handle).then(() => { this._webviews.delete(handle); }); } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 38d81ee9141..f18f37f7e78 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -364,7 +364,7 @@ export interface MainThreadWebviewsShape extends IDisposable { export interface ExtHostWebviewsShape { $onMessage(handle: WebviewPanelHandle, message: any): void; $onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, active: boolean, position: EditorPosition): void; - onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable; + $onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable; $deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable; $serializeWebviewPanel(webviewHandle: WebviewPanelHandle): Thenable; } diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index 53eb8d31972..a841e091574 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -254,7 +254,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { } } - onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable { + $onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable { const panel = this.getWebviewPanel(handle); if (panel) { panel.dispose(); From 6b06e54bba97ab76b85b5229be9d75653323306f Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 11:34:35 -0700 Subject: [PATCH 0955/1070] Improve naming --- .../api/electron-browser/mainThreadTerminalService.ts | 6 +++--- src/vs/workbench/api/node/extHost.protocol.ts | 6 +++--- src/vs/workbench/api/node/extHostTerminalService.ts | 8 +++----- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 6d5ce98516a..564b663d54b 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -110,9 +110,9 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape }; this._proxy.$createProcess(request.proxy.terminalId, shellLaunchConfigDto, request.cols, request.rows); // TODO: Dispose of this properly when the terminal/process dies - this._toDispose.push(request.proxy.onInput(data => this._proxy.$acceptTerminalProcessInput(request.proxy.terminalId, data))); - this._toDispose.push(request.proxy.onResize((cols, rows) => this._proxy.$acceptTerminalProcessResize(request.proxy.terminalId, cols, rows))); - this._toDispose.push(request.proxy.onShutdown(() => this._proxy.$acceptTerminalProcessShutdown(request.proxy.terminalId))); + this._toDispose.push(request.proxy.onInput(data => this._proxy.$acceptProcessInput(request.proxy.terminalId, data))); + this._toDispose.push(request.proxy.onResize((cols, rows) => this._proxy.$acceptProcessResize(request.proxy.terminalId, cols, rows))); + this._toDispose.push(request.proxy.onShutdown(() => this._proxy.$acceptProcessShutdown(request.proxy.terminalId))); } public $sendProcessTitle(terminalId: number, title: string): void { diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 40ae2187b9d..5805a7dc8d1 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -748,9 +748,9 @@ export interface ExtHostTerminalServiceShape { $acceptTerminalOpened(id: number, name: string): void; $acceptTerminalProcessId(id: number, processId: number): void; $createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void; - $acceptTerminalProcessInput(id: number, data: string): void; - $acceptTerminalProcessResize(id: number, cols: number, rows: number): void; - $acceptTerminalProcessShutdown(id: number): void; + $acceptProcessInput(id: number, data: string): void; + $acceptProcessResize(id: number, cols: number, rows: number): void; + $acceptProcessShutdown(id: number): void; } export interface ExtHostSCMShape { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 06da1425d4d..b46656a860c 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -17,7 +17,6 @@ import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration import { ILogService } from 'vs/platform/log/common/log'; export class ExtHostTerminal implements vscode.Terminal { - private _name: string; private _id: number; private _proxy: MainThreadTerminalServiceShape; @@ -110,7 +109,6 @@ export class ExtHostTerminal implements vscode.Terminal { } export class ExtHostTerminalService implements ExtHostTerminalServiceShape { - private readonly _onDidCloseTerminal: Emitter; private readonly _onDidOpenTerminal: Emitter; private _proxy: MainThreadTerminalServiceShape; @@ -234,19 +232,19 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { }); } - public $acceptTerminalProcessInput(id: number, data: string): void { + public $acceptProcessInput(id: number, data: string): void { if (this._terminalProcesses[id].connected) { this._terminalProcesses[id].send({ event: 'input', data }); } } - public $acceptTerminalProcessResize(id: number, cols: number, rows: number): void { + public $acceptProcessResize(id: number, cols: number, rows: number): void { if (this._terminalProcesses[id].connected) { this._terminalProcesses[id].send({ event: 'resize', cols, rows }); } } - public $acceptTerminalProcessShutdown(id: number): void { + public $acceptProcessShutdown(id: number): void { if (this._terminalProcesses[id].connected) { this._terminalProcesses[id].send({ event: 'shutdown' }); } From 181bddba566208afb32e4a11d0a95f7694b1cb92 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 11:37:43 -0700 Subject: [PATCH 0956/1070] Move from shell launch config option to setting --- src/vs/workbench/parts/terminal/common/terminal.ts | 5 ----- .../parts/terminal/electron-browser/terminalInstance.ts | 3 --- .../terminal/electron-browser/terminalProcessManager.ts | 3 ++- .../parts/terminal/electron-browser/terminalService.ts | 1 - 4 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 8ec70a197d4..a6ea40af349 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -148,11 +148,6 @@ export interface IShellLaunchConfig { * of the terminal. Use \x1b over \033 or \e for the escape control character. */ initialText?: string; - - /** - * Whether the process should live on the extension host, not the renderer process. - */ - extensionHostOwned?: boolean; } export interface ITerminalService { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index cdc1f00c8a8..f24199efb6a 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -109,9 +109,6 @@ export class TerminalInstance implements ITerminalInstance { @IConfigurationService private readonly _configurationService: IConfigurationService, @ILogService private _logService: ILogService ) { - // TODO: Delete me - this._shellLaunchConfig.extensionHostOwned = true; - this._disposables = []; this._skipTerminalCommands = []; this._onLineDataListeners = []; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts index c416d5ff60b..1670b248a0b 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalProcessManager.ts @@ -90,7 +90,8 @@ export class TerminalProcessManager implements ITerminalProcessManager { cols: number, rows: number ): void { - if (shellLaunchConfig.extensionHostOwned) { + const extensionHostOwned = (this._configHelper.config).extHostProcess; + if (extensionHostOwned) { this._process = this._instantiationService.createInstance(TerminalProcessExtHostProxy, this._terminalId, shellLaunchConfig, cols, rows); } else { const locale = this._configHelper.config.setLocaleVariables ? platform.locale : undefined; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index eb2e2cbb021..744961567f8 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -100,7 +100,6 @@ export class TerminalService extends AbstractTerminalService implements ITermina this._extensionService.whenInstalledExtensionsRegistered().then(() => { // TODO: MainThreadTerminalService is not ready at this point, fix this setTimeout(() => { - console.log('cols, rows', cols, rows); this._onInstanceRequestExtHostProcess.fire({ proxy, shellLaunchConfig, cols, rows }); }, 100); }); From 0911fb867d146ae701ca709e3c33b3984718ee6e Mon Sep 17 00:00:00 2001 From: Erich Gamma Date: Wed, 18 Apr 2018 11:44:34 -0700 Subject: [PATCH 0957/1070] Change document selector to include the schema explicitly --- extensions/npm/src/features/bowerJSONContribution.ts | 2 +- extensions/npm/src/features/packageJSONContribution.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/npm/src/features/bowerJSONContribution.ts b/extensions/npm/src/features/bowerJSONContribution.ts index 13d6ccd29ee..a00f347078c 100644 --- a/extensions/npm/src/features/bowerJSONContribution.ts +++ b/extensions/npm/src/features/bowerJSONContribution.ts @@ -29,7 +29,7 @@ export class BowerJSONContribution implements IJSONContribution { } public getDocumentSelector(): DocumentSelector { - return [{ language: 'json', pattern: '**/bower.json' }, { language: 'json', pattern: '**/.bower.json' }]; + return [{ language: 'json', scheme: '*', pattern: '**/bower.json' }, { language: 'json', scheme: '*', pattern: '**/.bower.json' }]; } public collectDefaultSuggestions(_resource: string, collector: ISuggestionsCollector): Thenable { diff --git a/extensions/npm/src/features/packageJSONContribution.ts b/extensions/npm/src/features/packageJSONContribution.ts index e4b35802ecd..8b967a6ace8 100644 --- a/extensions/npm/src/features/packageJSONContribution.ts +++ b/extensions/npm/src/features/packageJSONContribution.ts @@ -30,7 +30,7 @@ export class PackageJSONContribution implements IJSONContribution { private knownScopes = ['@types', '@angular']; public getDocumentSelector(): DocumentSelector { - return [{ language: 'json', pattern: '**/package.json' }]; + return [{ language: 'json', scheme: '*', pattern: '**/package.json' }]; } public constructor(private xhr: XHRRequest) { From 35ae86231af1afd17bedc69ae89daf6fc3bd0d92 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 11:47:01 -0700 Subject: [PATCH 0958/1070] Fix NPE --- src/vs/workbench/api/node/extHostTerminalService.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index b46656a860c..ed4483d3c88 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -88,8 +88,11 @@ export class ExtHostTerminal implements vscode.Terminal { } public _setProcessId(processId: number): void { - this._pidPromiseComplete(processId); - this._pidPromiseComplete = null; + // The event may fire 2 times when the panel is restored + if (this._pidPromiseComplete) { + this._pidPromiseComplete(processId); + this._pidPromiseComplete = null; + } } private _queueApiRequest(callback: (...args: any[]) => void, args: any[]) { From c5adbe4401eda6275c0c0b85348b7fc816915a9f Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 11:53:22 -0700 Subject: [PATCH 0959/1070] Return disposables for proxy listeners --- .../node/terminalProcessExtHostProxy.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index b815ed27d96..6a21b1669eb 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -6,7 +6,7 @@ import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; import { ITerminalService, ITerminalProcessExtHostProxy, IShellLaunchConfig } from 'vs/workbench/parts/terminal/common/terminal'; -import { IDisposable } from '../../../../base/common/lifecycle'; +import { IDisposable, toDisposable } from '../../../../base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { // For ext host processes connected checks happen on the ext host @@ -45,20 +45,20 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin } public onInput(listener: (data: string) => void): IDisposable { - // TODO: Dispose of me - this.on('input', data => listener(data)); - return null; + const outerListener = (data) => listener(data); + this.on('input', data => outerListener); + return toDisposable(() => this.removeListener('input', outerListener)); } public onResize(listener: (cols: number, rows: number) => void): IDisposable { - // TODO: Dispose of me - this.on('resize', (cols, rows) => listener(cols, rows)); - return null; + const outerListener = (cols, rows) => listener(cols, rows); + this.on('resize', outerListener); + return toDisposable(() => this.removeListener('resize', outerListener)); } public onShutdown(listener: () => void): IDisposable { - // TODO: Dispose of me - this.on('shutdown', () => listener()); - return null; + const outerListener = () => listener(); + this.on('shutdown', outerListener); + return toDisposable(() => this.removeListener('shutdown', outerListener)); } } \ No newline at end of file From a03dbe8654658c5e51e217ab652ef548904aab3e Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 21:15:03 +0200 Subject: [PATCH 0960/1070] Fixes #30347: Wrap fontFamily in double quotes when spaces or + signs are used --- src/vs/editor/browser/config/configuration.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/config/configuration.ts b/src/vs/editor/browser/config/configuration.ts index 2a890239887..74cb598bddf 100644 --- a/src/vs/editor/browser/config/configuration.ts +++ b/src/vs/editor/browser/config/configuration.ts @@ -276,8 +276,21 @@ class CSSBasedConfiguration extends Disposable { export class Configuration extends CommonEditorConfiguration { + private static _massageFontFamily(fontFamily: string): string { + if (/[,"']/.test(fontFamily)) { + // Looks like the font family might be already escaped + return fontFamily; + } + if (/[+ ]/.test(fontFamily)) { + // Wrap a font family using + or with quotes + return `"${fontFamily}"`; + } + + return fontFamily; + } + public static applyFontInfoSlow(domNode: HTMLElement, fontInfo: BareFontInfo): void { - domNode.style.fontFamily = fontInfo.fontFamily; + domNode.style.fontFamily = Configuration._massageFontFamily(fontInfo.fontFamily); domNode.style.fontWeight = fontInfo.fontWeight; domNode.style.fontSize = fontInfo.fontSize + 'px'; domNode.style.lineHeight = fontInfo.lineHeight + 'px'; @@ -285,7 +298,7 @@ export class Configuration extends CommonEditorConfiguration { } public static applyFontInfo(domNode: FastDomNode, fontInfo: BareFontInfo): void { - domNode.setFontFamily(fontInfo.fontFamily); + domNode.setFontFamily(Configuration._massageFontFamily(fontInfo.fontFamily)); domNode.setFontWeight(fontInfo.fontWeight); domNode.setFontSize(fontInfo.fontSize); domNode.setLineHeight(fontInfo.lineHeight); From e02f59a111ea6586faaab08fcdb6f628ff90a0f2 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 21:50:44 +0200 Subject: [PATCH 0961/1070] Fixes #31312: Leave a 2px gap at the end of wrapped lines for the cursor --- src/vs/editor/common/config/editorOptions.ts | 18 ++-- .../viewLayout/editorLayoutProvider.test.ts | 93 +++++++++++++++---- 2 files changed, 86 insertions(+), 25 deletions(-) diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index 8045cc078ee..e4aa5cf65af 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -2090,18 +2090,19 @@ export class EditorLayoutProvider { } // Given: - // viewportColumn = (contentWidth - verticalScrollbarWidth) / typicalHalfwidthCharacterWidth + // (leaving 2px for the cursor to have space after the last character) + // viewportColumn = (contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth // minimapWidth = viewportColumn * minimapCharWidth // contentWidth = remainingWidth - minimapWidth // What are good values for contentWidth and minimapWidth ? - // minimapWidth = ((contentWidth - verticalScrollbarWidth) / typicalHalfwidthCharacterWidth) * minimapCharWidth - // typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth) * minimapCharWidth - // typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth) * minimapCharWidth - // (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth) * minimapCharWidth - // minimapWidth = ((remainingWidth - verticalScrollbarWidth) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth) + // minimapWidth = ((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth) * minimapCharWidth + // typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth - 2) * minimapCharWidth + // typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth - 2) * minimapCharWidth + // (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth + // minimapWidth = ((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth) - minimapWidth = Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))); + minimapWidth = Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))); let minimapColumns = minimapWidth / minimapCharWidth; if (minimapColumns > minimapMaxColumn) { minimapWidth = Math.floor(minimapMaxColumn * minimapCharWidth); @@ -2119,7 +2120,8 @@ export class EditorLayoutProvider { } } - const viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth) / typicalHalfwidthCharacterWidth)); + // (leaving 2px for the cursor to have space after the last character) + const viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth)); const verticalArrowSize = (verticalScrollbarHasArrows ? scrollbarArrowSize : 0); diff --git a/src/vs/editor/test/common/viewLayout/editorLayoutProvider.test.ts b/src/vs/editor/test/common/viewLayout/editorLayoutProvider.test.ts index eddae34ccc2..8009ce8a0dd 100644 --- a/src/vs/editor/test/common/viewLayout/editorLayoutProvider.test.ts +++ b/src/vs/editor/test/common/viewLayout/editorLayoutProvider.test.ts @@ -58,7 +58,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 99, + viewportColumn: 98, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -174,7 +174,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 89, + viewportColumn: 88, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -232,7 +232,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 89, + viewportColumn: 88, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -290,7 +290,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 89, + viewportColumn: 88, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -348,7 +348,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 84, + viewportColumn: 83, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -406,7 +406,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 84, + viewportColumn: 83, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -464,7 +464,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 83, + viewportColumn: 82, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -522,7 +522,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 172, + viewportColumn: 171, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -580,7 +580,7 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { renderMinimap: RenderMinimap.None, minimapLeft: 0, minimapWidth: 0, - viewportColumn: 170, + viewportColumn: 169, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -632,13 +632,13 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { decorationsHeight: 800, contentLeft: 10, - contentWidth: 900, + contentWidth: 901, contentHeight: 800, renderMinimap: RenderMinimap.Small, - minimapLeft: 910, - minimapWidth: 90, - viewportColumn: 90, + minimapLeft: 911, + minimapWidth: 89, + viewportColumn: 89, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -690,13 +690,13 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { decorationsHeight: 800, contentLeft: 10, - contentWidth: 900, + contentWidth: 901, contentHeight: 800, renderMinimap: RenderMinimap.Large, - minimapLeft: 910, - minimapWidth: 90, - viewportColumn: 90, + minimapLeft: 911, + minimapWidth: 89, + viewportColumn: 89, verticalScrollbarWidth: 0, horizontalScrollbarHeight: 0, @@ -825,4 +825,63 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => { } }); }); + + test('issue #31312: When wrapping, leave 2px for the cursor', () => { + doTest({ + outerWidth: 1201, + outerHeight: 422, + showGlyphMargin: true, + lineHeight: 30, + showLineNumbers: true, + lineNumbersMinChars: 3, + lineNumbersDigitCount: 1, + lineDecorationsWidth: 26, + typicalHalfwidthCharacterWidth: 12.04296875, + maxDigitWidth: 12.04296875, + verticalScrollbarWidth: 14, + horizontalScrollbarHeight: 10, + scrollbarArrowSize: 11, + verticalScrollbarHasArrows: false, + minimap: true, + minimapSide: 'right', + minimapRenderCharacters: true, + minimapMaxColumn: 120, + pixelRatio: 2 + }, { + width: 1201, + height: 422, + + glyphMarginLeft: 0, + glyphMarginWidth: 30, + glyphMarginHeight: 422, + + lineNumbersLeft: 30, + lineNumbersWidth: 36, + lineNumbersHeight: 422, + + decorationsLeft: 66, + decorationsWidth: 26, + decorationsHeight: 422, + + contentLeft: 92, + contentWidth: 1026, + contentHeight: 422, + + renderMinimap: RenderMinimap.Large, + minimapLeft: 1104, + minimapWidth: 83, + viewportColumn: 83, + + verticalScrollbarWidth: 14, + horizontalScrollbarHeight: 10, + + overviewRuler: { + top: 0, + width: 14, + height: 422, + right: 0 + } + }); + + }); }); From 2a822c7c1d32c79af42aca5d50b5db0a801bb298 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 12:56:39 -0700 Subject: [PATCH 0962/1070] Improve handling of process exit --- .../mainThreadTerminalService.ts | 4 ++++ src/vs/workbench/api/node/extHost.protocol.ts | 1 + .../workbench/api/node/extHostTerminalService.ts | 16 ++++++++++++++++ .../workbench/parts/terminal/common/terminal.ts | 1 + .../electron-browser/terminalInstance.ts | 6 +++++- .../terminal/node/terminalProcessExtHostProxy.ts | 6 ++++++ 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 564b663d54b..482ab29cf44 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -126,4 +126,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $sendProcessPid(terminalId: number, pid: number): void { this._terminalProcesses[terminalId].emitPid(pid); } + + public $sendProcessExit(terminalId: number, exitCode: number): void { + this._terminalProcesses[terminalId].emitExit(exitCode); + } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 5805a7dc8d1..25de9e60714 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -325,6 +325,7 @@ export interface MainThreadTerminalServiceShape extends IDisposable { $sendProcessTitle(terminalId: number, title: string): void; $sendProcessData(terminalId: number, data: string): void; $sendProcessPid(terminalId: number, pid: number): void; + $sendProcessExit(terminalId: number, exitCode: number): void; } export interface MyQuickPickItems extends IPickOpenEntry { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index ed4483d3c88..035f4c42664 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -233,6 +233,7 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { case 'data': this._proxy.$sendProcessData(id, message.content); break; } }); + this._terminalProcesses[id].on('exit', (exitCode) => this._onProcessExit(id, exitCode)); } public $acceptProcessInput(id: number, data: string): void { @@ -242,6 +243,7 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptProcessResize(id: number, cols: number, rows: number): void { + console.log('send resize'); if (this._terminalProcesses[id].connected) { this._terminalProcesses[id].send({ event: 'resize', cols, rows }); } @@ -253,6 +255,20 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } } + private _onProcessExit(id: number, exitCode: number): void { + console.log('exit'); + // Remove listeners + const process = this._terminalProcesses[id]; + process.removeAllListeners('message'); + process.removeAllListeners('exit'); + + // Remove process reference + delete this._terminalProcesses[id]; + + // Send exit event to main side + this._proxy.$sendProcessExit(id, exitCode); + } + private _getTerminalById(id: number): ExtHostTerminal { let index = this._getTerminalIndexById(id); return index !== null ? this._terminals[index] : null; diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index a6ea40af349..c1fa9345179 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -524,6 +524,7 @@ export interface ITerminalProcessExtHostProxy { emitData(data: string): void; emitTitle(title: string): void; emitPid(pid: number): void; + emitExit(exitCode: number): void; onInput(listener: (data: string) => void): IDisposable; onResize(listener: (cols: number, rows: number) => void): IDisposable; onShutdown(listener: () => void): IDisposable; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index f24199efb6a..6345a63a7a5 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -667,7 +667,11 @@ export class TerminalInstance implements ITerminalInstance { return a; }).join(' '); } - this._notificationService.error(nls.localize('terminal.integrated.launchFailed', 'The terminal process command \'{0}{1}\' failed to launch (exit code: {2})', this._shellLaunchConfig.executable, args, exitCode)); + if (this._shellLaunchConfig.executable) { + this._notificationService.error(nls.localize('terminal.integrated.launchFailed', 'The terminal process command \'{0}{1}\' failed to launch (exit code: {2})', this._shellLaunchConfig.executable, args, exitCode)); + } else { + this._notificationService.error(nls.localize('terminal.integrated.launchFailedExtHost', 'The terminal process failed to launch (exit code: {0})', exitCode)); + } } else { if (this._configHelper.config.showExitAlert) { this._notificationService.error(exitCodeMessage); diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index 6a21b1669eb..a302b7df10b 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -28,13 +28,19 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin public emitData(data: string): void { this.emit('message', { type: 'data', content: data } as IMessageFromTerminalProcess); } + public emitTitle(title: string): void { this.emit('message', { type: 'title', content: title } as IMessageFromTerminalProcess); } + public emitPid(pid: number): void { this.emit('message', { type: 'pid', content: pid } as IMessageFromTerminalProcess); } + public emitExit(exitCode: number): void { + this.emit('exit', exitCode); + } + public send(message: IMessageToTerminalProcess): boolean { switch (message.event) { case 'input': this.emit('input', message.data); break; From 9d2814a9a160bae07990df4d6c455638c85a9c8f Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 18 Apr 2018 22:13:50 +0200 Subject: [PATCH 0963/1070] update grammars --- .../bat/syntaxes/batchfile.tmLanguage.json | 102 +++++++++++------- .../bat/test/colorize-results/test_bat.json | 13 ++- .../syntaxes/JavaScript.tmLanguage.json | 4 +- .../syntaxes/JavaScriptReact.tmLanguage.json | 4 +- extensions/log/syntaxes/log.tmLanguage.json | 8 +- extensions/r/syntaxes/r.tmLanguage.json | 8 +- .../syntaxes/TypeScript.tmLanguage.json | 4 +- .../syntaxes/TypeScriptReact.tmLanguage.json | 4 +- 8 files changed, 91 insertions(+), 56 deletions(-) diff --git a/extensions/bat/syntaxes/batchfile.tmLanguage.json b/extensions/bat/syntaxes/batchfile.tmLanguage.json index 996d5aed4da..e5f00ed3827 100644 --- a/extensions/bat/syntaxes/batchfile.tmLanguage.json +++ b/extensions/bat/syntaxes/batchfile.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/mmims/language-batchfile/commit/9b2d868a43d6a04a4dc27cb31f907b960a4fdab1", + "version": "https://github.com/mmims/language-batchfile/commit/6235c491be4dff49cd3966b50142874d7f79580a", "name": "Batch File", "scopeName": "source.batchfile", "patterns": [ @@ -46,14 +46,17 @@ "commands": { "patterns": [ { - "match": "(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setlocal|setspn|setx|sfc|shadow|shift|showmount|shutdown|sort|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)(?=$|\\s)", + "match": "(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|shadow|shift|showmount|shutdown|sort|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)(?=$|\\s)", "name": "keyword.command.batchfile" }, { - "begin": "(?<=^|[\\s@])(?i:echo)(?=$|\\s|\\.)", + "begin": "(?i)(?<=^|[\\s@])(echo)(?:(?=$|\\.|:)|\\s+(?:(on|off)(?=\\s*$))?)", "beginCaptures": { - "0": { + "1": { "name": "keyword.command.batchfile" + }, + "2": { + "name": "keyword.other.special-method.batchfile" } }, "end": "(?=$\\n|[&|><)])", @@ -72,6 +75,17 @@ } ] }, + { + "match": "(?i)(?<=^|[\\s@])(setlocal)(?:\\s*$|\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\s*$))", + "captures": { + "1": { + "name": "keyword.command.batchfile" + }, + "2": { + "name": "keyword.other.special-method.batchfile" + } + } + }, { "include": "#command_set" } @@ -110,36 +124,7 @@ "include": "#parens" }, { - "begin": "(\")\\s*([^ ][^=]*)(=)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.begin.batchfile" - }, - "2": { - "name": "variable.other.readwrite.batchfile" - }, - "3": { - "name": "keyword.operator.assignment.batchfile" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.batchfile" - } - }, - "name": "string.quoted.double.batchfile", - "patterns": [ - { - "include": "#variables" - }, - { - "include": "#numbers" - }, - { - "include": "#parens" - } - ] + "include": "#command_set_strings" }, { "include": "#strings" @@ -216,6 +201,9 @@ "begin": "\\s+/[pP]\\s+", "end": "(?=$\\n|[&|><)])", "patterns": [ + { + "include": "#command_set_strings" + }, { "begin": "([^ ][^=]*)(=)", "beginCaptures": { @@ -295,6 +283,42 @@ } ] }, + "command_set_strings": { + "patterns": [ + { + "begin": "(\")\\s*([^ ][^=]*)(=)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.batchfile" + }, + "2": { + "name": "variable.other.readwrite.batchfile" + }, + "3": { + "name": "keyword.operator.assignment.batchfile" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.batchfile" + } + }, + "name": "string.quoted.double.batchfile", + "patterns": [ + { + "include": "#variables" + }, + { + "include": "#numbers" + }, + { + "include": "#escaped_characters" + } + ] + } + ] + }, "comments": { "patterns": [ { @@ -360,7 +384,7 @@ "controls": { "patterns": [ { - "match": "(?<=^|\\s)(?i)(?:goto|call|exit)(?=$|\\s)", + "match": "(?i)(?<=^|\\s)(?:call|exit(?=$|\\s)|goto(?=$|\\s|:))", "name": "keyword.control.statement.batchfile" }, { @@ -390,7 +414,7 @@ "escaped_characters": { "patterns": [ { - "match": "%%|\\^\\^!|\\^.|\\^\\n", + "match": "%%|\\^\\^!|\\^(?=.)|\\^\\n", "name": "constant.character.escape.batchfile" } ] @@ -398,7 +422,7 @@ "labels": { "patterns": [ { - "match": "^\\s*(:)([^+=,;:\\s].*)$", + "match": "(?i)(?:^\\s*|(?<=goto)\\s*)(:)([^+=,;:\\s].*)$", "captures": { "1": { "name": "punctuation.separator.batchfile" @@ -433,11 +457,11 @@ "name": "keyword.operator.logical.batchfile" }, { - "match": "&&?|\\|\\|", + "match": "(?=", + "name": "keyword.operator.comparison.r" + }, { "match": "==", "name": "keyword.operator.comarison.r" @@ -177,7 +181,7 @@ "name": "keyword.operator.assignment.r" }, { - "match": "(!=|<>|<|>|<=|>=|%in%)", + "match": "(!=|<>|<|>|%in%)", "name": "keyword.operator.comparison.r" }, { diff --git a/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json b/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json index 2856d4ed0e9..33f6319b5c3 100644 --- a/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json +++ b/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/929ee616cc9c299c5ed09d6051277a9c34e2d6e9", + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/3f27a794a2dbebf18714d7eaa799162fbadf7a11", "name": "TypeScript", "scopeName": "source.ts", "patterns": [ @@ -2293,7 +2293,7 @@ "name": "keyword.operator.expression.instanceof.ts" } }, - "end": "(?<=\\))|(?=[;),}\\]:]|\\|\\||\\&\\&|$|((? Date: Wed, 18 Apr 2018 22:20:32 +0200 Subject: [PATCH 0964/1070] Implement automatic wrapping with < > for C++. Fixes #47864 --- extensions/cpp/language-configuration.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/cpp/language-configuration.json b/extensions/cpp/language-configuration.json index 23d99a485e1..e50df32dd11 100644 --- a/extensions/cpp/language-configuration.json +++ b/extensions/cpp/language-configuration.json @@ -20,7 +20,8 @@ ["[", "]"], ["(", ")"], ["\"", "\""], - ["'", "'"] + ["'", "'"], + ["<", ">"] ], "folding": { "markers": { From 4cc09e1ca72c1193071e0ab638d3947b303cd699 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 18 Apr 2018 22:44:08 +0200 Subject: [PATCH 0965/1070] [themes] add peekViewEditor.matchHighlightBorder. Fixes #47233 --- src/vs/editor/contrib/referenceSearch/referencesWidget.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/referenceSearch/referencesWidget.ts b/src/vs/editor/contrib/referenceSearch/referencesWidget.ts index 8ea2b9b4a74..3e98e35c67e 100644 --- a/src/vs/editor/contrib/referenceSearch/referencesWidget.ts +++ b/src/vs/editor/contrib/referenceSearch/referencesWidget.ts @@ -836,6 +836,7 @@ export const peekViewEditorGutterBackground = registerColor('peekViewEditorGutte export const peekViewResultsMatchHighlight = registerColor('peekViewResult.matchHighlightBackground', { dark: '#ea5c004d', light: '#ea5c004d', hc: null }, nls.localize('peekViewResultsMatchHighlight', 'Match highlight color in the peek view result list.')); export const peekViewEditorMatchHighlight = registerColor('peekViewEditor.matchHighlightBackground', { dark: '#ff8f0099', light: '#f5d802de', hc: null }, nls.localize('peekViewEditorMatchHighlight', 'Match highlight color in the peek view editor.')); +export const peekViewEditorMatchHighlightBorder = registerColor('peekViewEditor.matchHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('peekViewEditorMatchHighlightBorder', 'Match highlight border in the peek view editor.')); registerThemingParticipant((theme, collector) => { @@ -847,10 +848,13 @@ registerThemingParticipant((theme, collector) => { if (referenceHighlightColor) { collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: ${referenceHighlightColor}; }`); } + let referenceHighlightBorder = theme.getColor(peekViewEditorMatchHighlightBorder); + if (referenceHighlightBorder) { + collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ${referenceHighlightBorder}; box-sizing: border-box; }`); + } let hcOutline = theme.getColor(activeContrastBorder); if (hcOutline) { collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch { border: 1px dotted ${hcOutline}; box-sizing: border-box; }`); - collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ${hcOutline}; box-sizing: border-box; }`); } let resultsBackground = theme.getColor(peekViewResultsBackground); if (resultsBackground) { From 7ce50b70e7cc3cd206bf112963bba8fac3070e66 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 22:52:59 +0200 Subject: [PATCH 0966/1070] Fixes #40127: Keep track if a line has before or after foreign elements --- .../browser/viewParts/lines/viewLine.ts | 26 ++++++++----- .../common/viewLayout/viewLineRenderer.ts | 38 +++++++++++++------ 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/vs/editor/browser/viewParts/lines/viewLine.ts b/src/vs/editor/browser/viewParts/lines/viewLine.ts index c1fa275be29..58ad197c515 100644 --- a/src/vs/editor/browser/viewParts/lines/viewLine.ts +++ b/src/vs/editor/browser/viewParts/lines/viewLine.ts @@ -9,7 +9,7 @@ import * as platform from 'vs/base/common/platform'; import { FastDomNode, createFastDomNode } from 'vs/base/browser/fastDomNode'; import { IConfiguration } from 'vs/editor/common/editorCommon'; import { LineDecoration } from 'vs/editor/common/viewLayout/lineDecorations'; -import { renderViewLine, RenderLineInput, CharacterMapping } from 'vs/editor/common/viewLayout/viewLineRenderer'; +import { renderViewLine, RenderLineInput, CharacterMapping, ForeignElementType } from 'vs/editor/common/viewLayout/viewLineRenderer'; import { IVisibleLine } from 'vs/editor/browser/view/viewLayer'; import { RangeUtil } from 'vs/editor/browser/viewParts/lines/rangeUtil'; import { HorizontalRange } from 'vs/editor/common/view/renderingContext'; @@ -222,7 +222,7 @@ export class ViewLine implements IVisibleLine { sb.appendASCIIString('
'); let renderedViewLine: IRenderedViewLine = null; - if (canUseFastRenderedViewLine && lineData.isBasicASCII && options.useMonospaceOptimizations && !output.containsForeignElements) { + if (canUseFastRenderedViewLine && lineData.isBasicASCII && options.useMonospaceOptimizations && output.containsForeignElements === ForeignElementType.None) { if (lineData.content.length < 1000 && renderLineInput.lineTokens.getCount() < 100) { // Browser rounding errors have been observed in Chrome and IE, so using the fast // view line only for short lines. Please test before removing the length check... @@ -380,7 +380,7 @@ class RenderedViewLine implements IRenderedViewLine { protected readonly _characterMapping: CharacterMapping; private readonly _isWhitespaceOnly: boolean; - private readonly _containsForeignElements: boolean; + private readonly _containsForeignElements: ForeignElementType; private _cachedWidth: number; /** @@ -388,7 +388,7 @@ class RenderedViewLine implements IRenderedViewLine { */ private _pixelOffsetCache: Int32Array; - constructor(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: boolean) { + constructor(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType) { this.domNode = domNode; this.input = renderLineInput; this._characterMapping = characterMapping; @@ -466,10 +466,18 @@ class RenderedViewLine implements IRenderedViewLine { protected _readPixelOffset(column: number, context: DomReadingContext): number { if (this._characterMapping.length === 0) { // This line has no content - if (!this._containsForeignElements) { + if (this._containsForeignElements === ForeignElementType.None) { // We can assume the line is really empty return 0; } + if (this._containsForeignElements === ForeignElementType.After) { + // We have foreign elements after the (empty) line + return 0; + } + if (this._containsForeignElements === ForeignElementType.Before) { + // We have foreign element before the (empty) line + return this.getWidth(); + } } if (this._pixelOffsetCache !== null) { @@ -498,7 +506,7 @@ class RenderedViewLine implements IRenderedViewLine { return r[0].left; } - if (column === this._characterMapping.length && this._isWhitespaceOnly && !this._containsForeignElements) { + if (column === this._characterMapping.length && this._isWhitespaceOnly && this._containsForeignElements === ForeignElementType.None) { // This branch helps in the case of whitespace only lines which have a width set return this.getWidth(); } @@ -581,17 +589,17 @@ class WebKitRenderedViewLine extends RenderedViewLine { } } -const createRenderedLine: (domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: boolean) => RenderedViewLine = (function () { +const createRenderedLine: (domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType) => RenderedViewLine = (function () { if (browser.isWebKit) { return createWebKitRenderedLine; } return createNormalRenderedLine; })(); -function createWebKitRenderedLine(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: boolean): RenderedViewLine { +function createWebKitRenderedLine(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType): RenderedViewLine { return new WebKitRenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements); } -function createNormalRenderedLine(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: boolean): RenderedViewLine { +function createNormalRenderedLine(domNode: FastDomNode, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType): RenderedViewLine { return new RenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements); } diff --git a/src/vs/editor/common/viewLayout/viewLineRenderer.ts b/src/vs/editor/common/viewLayout/viewLineRenderer.ts index f35989d4101..e4c075e7c15 100644 --- a/src/vs/editor/common/viewLayout/viewLineRenderer.ts +++ b/src/vs/editor/common/viewLayout/viewLineRenderer.ts @@ -221,14 +221,20 @@ export class CharacterMapping { } } +export const enum ForeignElementType { + None = 0, + Before = 1, + After = 2 +} + export class RenderLineOutput { _renderLineOutputBrand: void; readonly characterMapping: CharacterMapping; readonly containsRTL: boolean; - readonly containsForeignElements: boolean; + readonly containsForeignElements: ForeignElementType; - constructor(characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: boolean) { + constructor(characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType) { this.characterMapping = characterMapping; this.containsRTL = containsRTL; this.containsForeignElements = containsForeignElements; @@ -238,7 +244,7 @@ export class RenderLineOutput { export function renderViewLine(input: RenderLineInput, sb: IStringBuilder): RenderLineOutput { if (input.lineContent.length === 0) { - let containsForeignElements = false; + let containsForeignElements = ForeignElementType.None; // This is basically for IE's hit test to work let content: string = '\u00a0'; @@ -248,13 +254,17 @@ export function renderViewLine(input: RenderLineInput, sb: IStringBuilder): Rend let classNames: string[] = []; for (let i = 0, len = input.lineDecorations.length; i < len; i++) { const lineDecoration = input.lineDecorations[i]; - if (lineDecoration.type !== InlineDecorationType.Regular && lineDecoration.type !== InlineDecorationType.RegularAffectingLetterSpacing) { + if (lineDecoration.type === InlineDecorationType.Before) { classNames.push(input.lineDecorations[i].className); - containsForeignElements = true; + containsForeignElements |= ForeignElementType.Before; + } + if (lineDecoration.type === InlineDecorationType.After) { + classNames.push(input.lineDecorations[i].className); + containsForeignElements |= ForeignElementType.After; } } - if (containsForeignElements) { + if (containsForeignElements !== ForeignElementType.None) { content = ``; } } @@ -275,7 +285,7 @@ export class RenderLineOutput2 { public readonly characterMapping: CharacterMapping, public readonly html: string, public readonly containsRTL: boolean, - public readonly containsForeignElements: boolean + public readonly containsForeignElements: ForeignElementType ) { } } @@ -293,7 +303,7 @@ class ResolvedRenderLineInput { public readonly len: number, public readonly isOverflowing: boolean, public readonly parts: LinePart[], - public readonly containsForeignElements: boolean, + public readonly containsForeignElements: ForeignElementType, public readonly tabSize: number, public readonly containsRTL: boolean, public readonly spaceWidth: number, @@ -323,13 +333,17 @@ function resolveRenderLineInput(input: RenderLineInput): ResolvedRenderLineInput if (input.renderWhitespace === RenderWhitespace.All || input.renderWhitespace === RenderWhitespace.Boundary) { tokens = _applyRenderWhitespace(lineContent, len, tokens, input.fauxIndentLength, input.tabSize, useMonospaceOptimizations, input.renderWhitespace === RenderWhitespace.Boundary); } - let containsForeignElements = false; + let containsForeignElements = ForeignElementType.None; if (input.lineDecorations.length > 0) { for (let i = 0, len = input.lineDecorations.length; i < len; i++) { const lineDecoration = input.lineDecorations[i]; - if (lineDecoration.type !== InlineDecorationType.Regular) { - containsForeignElements = true; - break; + if (lineDecoration.type === InlineDecorationType.RegularAffectingLetterSpacing) { + // Pretend there are foreign elements... although not 100% accurate. + containsForeignElements |= ForeignElementType.Before; + } else if (lineDecoration.type === InlineDecorationType.Before) { + containsForeignElements |= ForeignElementType.Before; + } else if (lineDecoration.type === InlineDecorationType.After) { + containsForeignElements |= ForeignElementType.After; } } tokens = _applyInlineDecorations(lineContent, len, tokens, input.lineDecorations); From ed76a268d878a3bfad4c825f2b63aa27b1e42480 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 22:57:48 +0200 Subject: [PATCH 0967/1070] Fixes #33178 --- src/vs/editor/browser/viewParts/lines/viewLine.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/lines/viewLine.ts b/src/vs/editor/browser/viewParts/lines/viewLine.ts index 58ad197c515..dcfc1dc3ad3 100644 --- a/src/vs/editor/browser/viewParts/lines/viewLine.ts +++ b/src/vs/editor/browser/viewParts/lines/viewLine.ts @@ -223,12 +223,15 @@ export class ViewLine implements IVisibleLine { let renderedViewLine: IRenderedViewLine = null; if (canUseFastRenderedViewLine && lineData.isBasicASCII && options.useMonospaceOptimizations && output.containsForeignElements === ForeignElementType.None) { - if (lineData.content.length < 1000 && renderLineInput.lineTokens.getCount() < 100) { + if (lineData.content.length < 300 && renderLineInput.lineTokens.getCount() < 100) { // Browser rounding errors have been observed in Chrome and IE, so using the fast // view line only for short lines. Please test before removing the length check... // --- // Another rounding error has been observed on Linux in VSCode, where width // rounding errors add up to an observable large number... + // --- + // Also see another example of rounding errors on Windows in + // https://github.com/Microsoft/vscode/issues/33178 renderedViewLine = new FastRenderedViewLine( this._renderedViewLine ? this._renderedViewLine.domNode : null, renderLineInput, From 91db9a6a888ebb0338d4c9bb5858a0fd1ed53378 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 23:01:11 +0200 Subject: [PATCH 0968/1070] Hide the contributed viewlet if no views are registered --- .../api/browser/activitybarExtensionPoint.ts | 2 +- .../parts/activitybar/activitybarPart.ts | 31 +++++++++++++++++-- src/vs/workbench/common/views.ts | 13 ++++---- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts index 15aed855355..09b6dfc9618 100644 --- a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts +++ b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts @@ -91,7 +91,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { const id = `workbench.view.extension.${descriptor.id}`; const title = descriptor.title; const cssClass = `extensionViewlet-${descriptor.id}`; - const location: ViewLocation = ViewLocation.register(id); + const location: ViewLocation = ViewLocation.register(id, true); // Generate CSS to show the icon in the activity bar const iconClass = `.monaco-workbench > .activitybar .monaco-action-bar .action-label.${cssClass}`; diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 2382e8f9534..014ff3268ce 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -33,6 +33,8 @@ import { isMacintosh } from 'vs/base/common/platform'; import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { Dimension, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom'; import { Color } from 'vs/base/common/color'; +import { ViewLocation, ViewsRegistry } from 'vs/workbench/common/views'; +import { ViewletDescriptor } from 'vs/workbench/browser/viewlet'; export class ActivitybarPart extends Part { @@ -83,11 +85,14 @@ export class ActivitybarPart extends Part { }); this.registerListeners(); + this.updateCompositebar(); } private registerListeners(): void { - this.toUnbind.push(this.viewletService.onDidViewletRegister(viewletDescriptor => this.compositeBar.addComposite(viewletDescriptor, false))); + this.toUnbind.push(this.viewletService.onDidViewletRegister(() => this.updateCompositebar())); + this.toUnbind.push(ViewsRegistry.onViewsRegistered(() => this.updateCompositebar())); + this.toUnbind.push(ViewsRegistry.onViewsDeregistered(() => this.updateCompositebar())); // Activate viewlet action on opening of a viewlet this.toUnbind.push(this.viewletService.onDidViewletOpen(viewlet => this.compositeBar.activateComposite(viewlet.getId()))); @@ -183,7 +188,9 @@ export class ActivitybarPart extends Part { private showContextMenu(e: MouseEvent): void { const event = new StandardMouseEvent(e); - const actions: Action[] = this.viewletService.getViewlets().map(viewlet => this.instantiationService.createInstance(ToggleCompositePinnedAction, viewlet, this.compositeBar)); + const actions: Action[] = this.viewletService.getViewlets() + .filter(viewlet => this.canShow(viewlet)) + .map(viewlet => this.instantiationService.createInstance(ToggleCompositePinnedAction, viewlet, this.compositeBar)); actions.push(new Separator()); actions.push(this.instantiationService.createInstance(ToggleActivityBarVisibilityAction, ToggleActivityBarVisibilityAction.ID, nls.localize('hideActivitBar', "Hide Activity Bar"))); @@ -215,6 +222,26 @@ export class ActivitybarPart extends Part { }); } + private updateCompositebar(): void { + const viewlets = this.viewletService.getViewlets(); + for (const viewlet of viewlets) { + const canShow = this.canShow(viewlet); + if (canShow) { + this.compositeBar.addComposite(viewlet, false); + } else { + this.compositeBar.removeComposite(viewlet.id); + } + } + } + + private canShow(viewlet: ViewletDescriptor): boolean { + const viewLocation = ViewLocation.get(viewlet.id); + if (viewLocation && viewLocation.contributed) { + return ViewsRegistry.getViews(viewLocation).length > 0; + } + return true; + } + public getPinned(): string[] { return this.viewletService.getViewlets().map(v => v.id).filter(id => this.compositeBar.isPinned(id)); } diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index aa06fd035a2..4f721596537 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -18,8 +18,8 @@ import { ThemeIcon } from 'vs/platform/theme/common/themeService'; export class ViewLocation { private static locations: Map = new Map(); - static register(id: string): ViewLocation { - const viewLocation = new ViewLocation(id); + static register(id: string, contributed: boolean): ViewLocation { + const viewLocation = new ViewLocation(id, contributed); ViewLocation.locations.set(id, viewLocation); return viewLocation; } @@ -27,12 +27,13 @@ export class ViewLocation { return ViewLocation.locations.get(value); } - static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer'); - static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug'); - static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions'); + static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer', false); + static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug', false); + static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions', false); - private constructor(private _id: string) { } + private constructor(private _id: string, private _contributed: boolean) { } get id(): string { return this._id; } + get contributed(): boolean { return this._contributed; } } From b7985f4157336a4b075b4af7f76bc7b35ffafc90 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 14:02:41 -0700 Subject: [PATCH 0969/1070] Polish exit, fix input --- .../api/electron-browser/mainThreadTerminalService.ts | 1 + src/vs/workbench/api/node/extHostTerminalService.ts | 11 ++++++++--- .../terminal/node/terminalProcessExtHostProxy.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 482ab29cf44..2086db18928 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -129,5 +129,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $sendProcessExit(terminalId: number, exitCode: number): void { this._terminalProcesses[terminalId].emitExit(exitCode); + delete this._terminalProcesses[terminalId]; } } diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 035f4c42664..cb546c2e8d8 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -243,9 +243,15 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptProcessResize(id: number, cols: number, rows: number): void { - console.log('send resize'); if (this._terminalProcesses[id].connected) { - this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + try { + this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + } catch (error) { + // We tried to write to a closed pipe / channel. + if (error.code !== 'EPIPE' && error.code !== 'ERR_IPC_CHANNEL_CLOSED') { + throw (error); + } + } } } @@ -256,7 +262,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } private _onProcessExit(id: number, exitCode: number): void { - console.log('exit'); // Remove listeners const process = this._terminalProcesses[id]; process.removeAllListeners('message'); diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index a302b7df10b..b03a15e8f69 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -52,7 +52,7 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin public onInput(listener: (data: string) => void): IDisposable { const outerListener = (data) => listener(data); - this.on('input', data => outerListener); + this.on('input', outerListener); return toDisposable(() => this.removeListener('input', outerListener)); } From 285107a2fbe0fb3552f7794329e03dd0b61a6cfe Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 23:08:40 +0200 Subject: [PATCH 0970/1070] Register views outside viewlet --- .../extensions.contribution.ts | 3 +- .../electron-browser/extensionsViewlet.ts | 117 ++++++++++-------- 2 files changed, 64 insertions(+), 56 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts index c884bb1d179..20d875bae68 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts @@ -27,7 +27,7 @@ import { import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensionsInput'; import { ViewletRegistry, Extensions as ViewletExtensions, ViewletDescriptor } from 'vs/workbench/browser/viewlet'; import { ExtensionEditor } from 'vs/workbench/parts/extensions/electron-browser/extensionEditor'; -import { StatusUpdater, ExtensionsViewlet, MaliciousExtensionChecker } from 'vs/workbench/parts/extensions/electron-browser/extensionsViewlet'; +import { StatusUpdater, ExtensionsViewlet, MaliciousExtensionChecker, ExtensionsViewletViewsContribution } from 'vs/workbench/parts/extensions/electron-browser/extensionsViewlet'; import { IQuickOpenRegistry, Extensions, QuickOpenHandlerDescriptor } from 'vs/workbench/browser/quickopen'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import * as jsonContributionRegistry from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; @@ -54,6 +54,7 @@ workbenchRegistry.registerWorkbenchContribution(StatusUpdater, LifecyclePhase.Ru workbenchRegistry.registerWorkbenchContribution(MaliciousExtensionChecker, LifecyclePhase.Eventually); workbenchRegistry.registerWorkbenchContribution(ConfigureRecommendedExtensionsCommandsContributor, LifecyclePhase.Eventually); workbenchRegistry.registerWorkbenchContribution(KeymapExtensions, LifecyclePhase.Running); +workbenchRegistry.registerWorkbenchContribution(ExtensionsViewletViewsContribution, LifecyclePhase.Starting); Registry.as(OutputExtensions.OutputChannels) .registerChannel(ExtensionsChannelId, ExtensionsLabel); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts index ea9dc91ed78..2b02d88b44c 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts @@ -66,65 +66,11 @@ const SearchBuiltInExtensionsContext = new RawContextKey('searchBuiltIn const RecommendedExtensionsContext = new RawContextKey('recommendedExtensions', false); const DefaultRecommendedExtensionsContext = new RawContextKey('defaultRecommendedExtensions', false); -export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtensionsViewlet { - - private onSearchChange: EventOf; - private nonEmptyWorkspaceContextKey: IContextKey; - private searchExtensionsContextKey: IContextKey; - private searchInstalledExtensionsContextKey: IContextKey; - private searchBuiltInExtensionsContextKey: IContextKey; - private recommendedExtensionsContextKey: IContextKey; - private defaultRecommendedExtensionsContextKey: IContextKey; - - private searchDelayer: ThrottledDelayer; - private root: HTMLElement; - - private searchBox: HTMLInputElement; - private extensionsBox: HTMLElement; - private primaryActions: IAction[]; - private secondaryActions: IAction[]; - private disposables: IDisposable[] = []; +export class ExtensionsViewletViewsContribution implements IWorkbenchContribution { constructor( - @IPartService partService: IPartService, - @ITelemetryService telemetryService: ITelemetryService, - @IProgressService private progressService: IProgressService, - @IInstantiationService instantiationService: IInstantiationService, - @IWorkbenchEditorService private editorService: IWorkbenchEditorService, - @IEditorGroupService private editorInputService: IEditorGroupService, - @IExtensionManagementService private extensionManagementService: IExtensionManagementService, - @INotificationService private notificationService: INotificationService, - @IViewletService private viewletService: IViewletService, - @IThemeService themeService: IThemeService, - @IConfigurationService private configurationService: IConfigurationService, - @IStorageService storageService: IStorageService, - @IWorkspaceContextService contextService: IWorkspaceContextService, - @IContextKeyService contextKeyService: IContextKeyService, - @IContextMenuService contextMenuService: IContextMenuService, - @IExtensionService extensionService: IExtensionService ) { - super(VIEWLET_ID, ViewLocation.Extensions, `${VIEWLET_ID}.state`, true, partService, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService); - this.registerViews(); - this.searchDelayer = new ThrottledDelayer(500); - this.nonEmptyWorkspaceContextKey = NonEmptyWorkspaceContext.bindTo(contextKeyService); - this.searchExtensionsContextKey = SearchExtensionsContext.bindTo(contextKeyService); - this.searchInstalledExtensionsContextKey = SearchInstalledExtensionsContext.bindTo(contextKeyService); - this.searchBuiltInExtensionsContextKey = SearchBuiltInExtensionsContext.bindTo(contextKeyService); - this.recommendedExtensionsContextKey = RecommendedExtensionsContext.bindTo(contextKeyService); - this.defaultRecommendedExtensionsContextKey = DefaultRecommendedExtensionsContext.bindTo(contextKeyService); - this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); - this.disposables.push(this.viewletService.onDidViewletOpen(this.onViewletOpen, this, this.disposables)); - - this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(AutoUpdateConfigurationKey)) { - this.secondaryActions = null; - this.updateTitleArea(); - } - if (e.affectedKeys.indexOf(ShowRecommendationsOnlyOnDemandKey) > -1) { - this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); - } - }, this, this.disposables); } private registerViews(): void { @@ -247,6 +193,67 @@ export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtens canToggleVisibility: true }; } +} + +export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtensionsViewlet { + + private onSearchChange: EventOf; + private nonEmptyWorkspaceContextKey: IContextKey; + private searchExtensionsContextKey: IContextKey; + private searchInstalledExtensionsContextKey: IContextKey; + private searchBuiltInExtensionsContextKey: IContextKey; + private recommendedExtensionsContextKey: IContextKey; + private defaultRecommendedExtensionsContextKey: IContextKey; + + private searchDelayer: ThrottledDelayer; + private root: HTMLElement; + + private searchBox: HTMLInputElement; + private extensionsBox: HTMLElement; + private primaryActions: IAction[]; + private secondaryActions: IAction[]; + private disposables: IDisposable[] = []; + + constructor( + @IPartService partService: IPartService, + @ITelemetryService telemetryService: ITelemetryService, + @IProgressService private progressService: IProgressService, + @IInstantiationService instantiationService: IInstantiationService, + @IWorkbenchEditorService private editorService: IWorkbenchEditorService, + @IEditorGroupService private editorInputService: IEditorGroupService, + @IExtensionManagementService private extensionManagementService: IExtensionManagementService, + @INotificationService private notificationService: INotificationService, + @IViewletService private viewletService: IViewletService, + @IThemeService themeService: IThemeService, + @IConfigurationService private configurationService: IConfigurationService, + @IStorageService storageService: IStorageService, + @IWorkspaceContextService contextService: IWorkspaceContextService, + @IContextKeyService contextKeyService: IContextKeyService, + @IContextMenuService contextMenuService: IContextMenuService, + @IExtensionService extensionService: IExtensionService + ) { + super(VIEWLET_ID, ViewLocation.Extensions, `${VIEWLET_ID}.state`, true, partService, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService); + + this.searchDelayer = new ThrottledDelayer(500); + this.nonEmptyWorkspaceContextKey = NonEmptyWorkspaceContext.bindTo(contextKeyService); + this.searchExtensionsContextKey = SearchExtensionsContext.bindTo(contextKeyService); + this.searchInstalledExtensionsContextKey = SearchInstalledExtensionsContext.bindTo(contextKeyService); + this.searchBuiltInExtensionsContextKey = SearchBuiltInExtensionsContext.bindTo(contextKeyService); + this.recommendedExtensionsContextKey = RecommendedExtensionsContext.bindTo(contextKeyService); + this.defaultRecommendedExtensionsContextKey = DefaultRecommendedExtensionsContext.bindTo(contextKeyService); + this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); + this.disposables.push(this.viewletService.onDidViewletOpen(this.onViewletOpen, this, this.disposables)); + + this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(AutoUpdateConfigurationKey)) { + this.secondaryActions = null; + this.updateTitleArea(); + } + if (e.affectedKeys.indexOf(ShowRecommendationsOnlyOnDemandKey) > -1) { + this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); + } + }, this, this.disposables); + } async create(parent: HTMLElement): TPromise { addClass(parent, 'extensions-viewlet'); From b0f3fde216f37686d607566c8c0f8a8756cb7773 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 23:08:40 +0200 Subject: [PATCH 0971/1070] Register views outside viewlet --- .../extensions.contribution.ts | 3 +- .../electron-browser/extensionsViewlet.ts | 117 ++++++++++-------- 2 files changed, 64 insertions(+), 56 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts index c884bb1d179..20d875bae68 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts @@ -27,7 +27,7 @@ import { import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensionsInput'; import { ViewletRegistry, Extensions as ViewletExtensions, ViewletDescriptor } from 'vs/workbench/browser/viewlet'; import { ExtensionEditor } from 'vs/workbench/parts/extensions/electron-browser/extensionEditor'; -import { StatusUpdater, ExtensionsViewlet, MaliciousExtensionChecker } from 'vs/workbench/parts/extensions/electron-browser/extensionsViewlet'; +import { StatusUpdater, ExtensionsViewlet, MaliciousExtensionChecker, ExtensionsViewletViewsContribution } from 'vs/workbench/parts/extensions/electron-browser/extensionsViewlet'; import { IQuickOpenRegistry, Extensions, QuickOpenHandlerDescriptor } from 'vs/workbench/browser/quickopen'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import * as jsonContributionRegistry from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; @@ -54,6 +54,7 @@ workbenchRegistry.registerWorkbenchContribution(StatusUpdater, LifecyclePhase.Ru workbenchRegistry.registerWorkbenchContribution(MaliciousExtensionChecker, LifecyclePhase.Eventually); workbenchRegistry.registerWorkbenchContribution(ConfigureRecommendedExtensionsCommandsContributor, LifecyclePhase.Eventually); workbenchRegistry.registerWorkbenchContribution(KeymapExtensions, LifecyclePhase.Running); +workbenchRegistry.registerWorkbenchContribution(ExtensionsViewletViewsContribution, LifecyclePhase.Starting); Registry.as(OutputExtensions.OutputChannels) .registerChannel(ExtensionsChannelId, ExtensionsLabel); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts index ea9dc91ed78..2b02d88b44c 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts @@ -66,65 +66,11 @@ const SearchBuiltInExtensionsContext = new RawContextKey('searchBuiltIn const RecommendedExtensionsContext = new RawContextKey('recommendedExtensions', false); const DefaultRecommendedExtensionsContext = new RawContextKey('defaultRecommendedExtensions', false); -export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtensionsViewlet { - - private onSearchChange: EventOf; - private nonEmptyWorkspaceContextKey: IContextKey; - private searchExtensionsContextKey: IContextKey; - private searchInstalledExtensionsContextKey: IContextKey; - private searchBuiltInExtensionsContextKey: IContextKey; - private recommendedExtensionsContextKey: IContextKey; - private defaultRecommendedExtensionsContextKey: IContextKey; - - private searchDelayer: ThrottledDelayer; - private root: HTMLElement; - - private searchBox: HTMLInputElement; - private extensionsBox: HTMLElement; - private primaryActions: IAction[]; - private secondaryActions: IAction[]; - private disposables: IDisposable[] = []; +export class ExtensionsViewletViewsContribution implements IWorkbenchContribution { constructor( - @IPartService partService: IPartService, - @ITelemetryService telemetryService: ITelemetryService, - @IProgressService private progressService: IProgressService, - @IInstantiationService instantiationService: IInstantiationService, - @IWorkbenchEditorService private editorService: IWorkbenchEditorService, - @IEditorGroupService private editorInputService: IEditorGroupService, - @IExtensionManagementService private extensionManagementService: IExtensionManagementService, - @INotificationService private notificationService: INotificationService, - @IViewletService private viewletService: IViewletService, - @IThemeService themeService: IThemeService, - @IConfigurationService private configurationService: IConfigurationService, - @IStorageService storageService: IStorageService, - @IWorkspaceContextService contextService: IWorkspaceContextService, - @IContextKeyService contextKeyService: IContextKeyService, - @IContextMenuService contextMenuService: IContextMenuService, - @IExtensionService extensionService: IExtensionService ) { - super(VIEWLET_ID, ViewLocation.Extensions, `${VIEWLET_ID}.state`, true, partService, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService); - this.registerViews(); - this.searchDelayer = new ThrottledDelayer(500); - this.nonEmptyWorkspaceContextKey = NonEmptyWorkspaceContext.bindTo(contextKeyService); - this.searchExtensionsContextKey = SearchExtensionsContext.bindTo(contextKeyService); - this.searchInstalledExtensionsContextKey = SearchInstalledExtensionsContext.bindTo(contextKeyService); - this.searchBuiltInExtensionsContextKey = SearchBuiltInExtensionsContext.bindTo(contextKeyService); - this.recommendedExtensionsContextKey = RecommendedExtensionsContext.bindTo(contextKeyService); - this.defaultRecommendedExtensionsContextKey = DefaultRecommendedExtensionsContext.bindTo(contextKeyService); - this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); - this.disposables.push(this.viewletService.onDidViewletOpen(this.onViewletOpen, this, this.disposables)); - - this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(AutoUpdateConfigurationKey)) { - this.secondaryActions = null; - this.updateTitleArea(); - } - if (e.affectedKeys.indexOf(ShowRecommendationsOnlyOnDemandKey) > -1) { - this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); - } - }, this, this.disposables); } private registerViews(): void { @@ -247,6 +193,67 @@ export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtens canToggleVisibility: true }; } +} + +export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtensionsViewlet { + + private onSearchChange: EventOf; + private nonEmptyWorkspaceContextKey: IContextKey; + private searchExtensionsContextKey: IContextKey; + private searchInstalledExtensionsContextKey: IContextKey; + private searchBuiltInExtensionsContextKey: IContextKey; + private recommendedExtensionsContextKey: IContextKey; + private defaultRecommendedExtensionsContextKey: IContextKey; + + private searchDelayer: ThrottledDelayer; + private root: HTMLElement; + + private searchBox: HTMLInputElement; + private extensionsBox: HTMLElement; + private primaryActions: IAction[]; + private secondaryActions: IAction[]; + private disposables: IDisposable[] = []; + + constructor( + @IPartService partService: IPartService, + @ITelemetryService telemetryService: ITelemetryService, + @IProgressService private progressService: IProgressService, + @IInstantiationService instantiationService: IInstantiationService, + @IWorkbenchEditorService private editorService: IWorkbenchEditorService, + @IEditorGroupService private editorInputService: IEditorGroupService, + @IExtensionManagementService private extensionManagementService: IExtensionManagementService, + @INotificationService private notificationService: INotificationService, + @IViewletService private viewletService: IViewletService, + @IThemeService themeService: IThemeService, + @IConfigurationService private configurationService: IConfigurationService, + @IStorageService storageService: IStorageService, + @IWorkspaceContextService contextService: IWorkspaceContextService, + @IContextKeyService contextKeyService: IContextKeyService, + @IContextMenuService contextMenuService: IContextMenuService, + @IExtensionService extensionService: IExtensionService + ) { + super(VIEWLET_ID, ViewLocation.Extensions, `${VIEWLET_ID}.state`, true, partService, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService); + + this.searchDelayer = new ThrottledDelayer(500); + this.nonEmptyWorkspaceContextKey = NonEmptyWorkspaceContext.bindTo(contextKeyService); + this.searchExtensionsContextKey = SearchExtensionsContext.bindTo(contextKeyService); + this.searchInstalledExtensionsContextKey = SearchInstalledExtensionsContext.bindTo(contextKeyService); + this.searchBuiltInExtensionsContextKey = SearchBuiltInExtensionsContext.bindTo(contextKeyService); + this.recommendedExtensionsContextKey = RecommendedExtensionsContext.bindTo(contextKeyService); + this.defaultRecommendedExtensionsContextKey = DefaultRecommendedExtensionsContext.bindTo(contextKeyService); + this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); + this.disposables.push(this.viewletService.onDidViewletOpen(this.onViewletOpen, this, this.disposables)); + + this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(AutoUpdateConfigurationKey)) { + this.secondaryActions = null; + this.updateTitleArea(); + } + if (e.affectedKeys.indexOf(ShowRecommendationsOnlyOnDemandKey) > -1) { + this.defaultRecommendedExtensionsContextKey.set(!this.configurationService.getValue(ShowRecommendationsOnlyOnDemandKey)); + } + }, this, this.disposables); + } async create(parent: HTMLElement): TPromise { addClass(parent, 'extensions-viewlet'); From 2cdb1fb64777802581ab6fcc05306b07e65ba812 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 18 Apr 2018 23:12:03 +0200 Subject: [PATCH 0972/1070] Remove contributed property --- .../api/browser/activitybarExtensionPoint.ts | 2 +- .../browser/parts/activitybar/activitybarPart.ts | 2 +- src/vs/workbench/common/views.ts | 13 ++++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts index 09b6dfc9618..15aed855355 100644 --- a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts +++ b/src/vs/workbench/api/browser/activitybarExtensionPoint.ts @@ -91,7 +91,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { const id = `workbench.view.extension.${descriptor.id}`; const title = descriptor.title; const cssClass = `extensionViewlet-${descriptor.id}`; - const location: ViewLocation = ViewLocation.register(id, true); + const location: ViewLocation = ViewLocation.register(id); // Generate CSS to show the icon in the activity bar const iconClass = `.monaco-workbench > .activitybar .monaco-action-bar .action-label.${cssClass}`; diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 014ff3268ce..c6c432a65c0 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -236,7 +236,7 @@ export class ActivitybarPart extends Part { private canShow(viewlet: ViewletDescriptor): boolean { const viewLocation = ViewLocation.get(viewlet.id); - if (viewLocation && viewLocation.contributed) { + if (viewLocation) { return ViewsRegistry.getViews(viewLocation).length > 0; } return true; diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index 4f721596537..aa06fd035a2 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -18,8 +18,8 @@ import { ThemeIcon } from 'vs/platform/theme/common/themeService'; export class ViewLocation { private static locations: Map = new Map(); - static register(id: string, contributed: boolean): ViewLocation { - const viewLocation = new ViewLocation(id, contributed); + static register(id: string): ViewLocation { + const viewLocation = new ViewLocation(id); ViewLocation.locations.set(id, viewLocation); return viewLocation; } @@ -27,13 +27,12 @@ export class ViewLocation { return ViewLocation.locations.get(value); } - static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer', false); - static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug', false); - static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions', false); + static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer'); + static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug'); + static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions'); - private constructor(private _id: string, private _contributed: boolean) { } + private constructor(private _id: string) { } get id(): string { return this._id; } - get contributed(): boolean { return this._contributed; } } From d0ef23949906a5dadcef30d70b122338db02bffe Mon Sep 17 00:00:00 2001 From: Piotr <4868063+Piotr-Nawrot@users.noreply.github.com> Date: Wed, 18 Apr 2018 23:14:58 +0200 Subject: [PATCH 0973/1070] Update processes.ts Grammar fix. --- src/vs/base/node/processes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/node/processes.ts b/src/vs/base/node/processes.ts index 1b61d41e675..38f414b2ffa 100644 --- a/src/vs/base/node/processes.ts +++ b/src/vs/base/node/processes.ts @@ -153,7 +153,7 @@ export abstract class AbstractProcess { public start(): PPromise { if (Platform.isWindows && ((this.options && this.options.cwd && TPath.isUNC(this.options.cwd)) || !this.options && !this.options.cwd && TPath.isUNC(process.cwd()))) { - return TPromise.wrapError(new Error(nls.localize('TaskRunner.UNC', 'Can\'t execute a shell command on an UNC drive.'))); + return TPromise.wrapError(new Error(nls.localize('TaskRunner.UNC', 'Can\'t execute a shell command on a UNC drive.'))); } return this.useExec().then((useExec) => { let cc: TValueCallback; From 2cabb75aedc49576fa6e26e6804758fb565584bb Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 18 Apr 2018 23:41:15 +0200 Subject: [PATCH 0974/1070] increase CSS test timeout --- test/smoke/src/areas/css/css.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/smoke/src/areas/css/css.test.ts b/test/smoke/src/areas/css/css.test.ts index 176e634bf6d..785de831bd6 100644 --- a/test/smoke/src/areas/css/css.test.ts +++ b/test/smoke/src/areas/css/css.test.ts @@ -29,10 +29,12 @@ export function setup() { }); it('verifies that warning becomes an error once setting changed', async function () { + // settings might take a while to update? + this.timeout(40000); + const app = this.app as Application; await app.workbench.settingsEditor.addUserSetting('css.lint.emptyRules', '"error"'); await app.workbench.quickopen.openFile('style.css'); - await app.workbench.editor.waitForTypeInEditor('style.css', '.foo{}'); await app.code.waitForElement(Problems.getSelectorInEditor(ProblemSeverity.ERROR)); From 558990d77367a49c4ac0c8624f1ed8d181a831ec Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 18 Apr 2018 23:56:50 +0200 Subject: [PATCH 0975/1070] Fixes #37271: Check height after possibly changing whitespace heights --- src/vs/editor/browser/viewParts/viewZones/viewZones.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/viewZones/viewZones.ts b/src/vs/editor/browser/viewParts/viewZones/viewZones.ts index 008e7c65129..175b237a2dd 100644 --- a/src/vs/editor/browser/viewParts/viewZones/viewZones.ts +++ b/src/vs/editor/browser/viewParts/viewZones/viewZones.ts @@ -99,7 +99,11 @@ export class ViewZones extends ViewPart { } public onLineMappingChanged(e: viewEvents.ViewLineMappingChangedEvent): boolean { - return this._recomputeWhitespacesProps(); + const hadAChange = this._recomputeWhitespacesProps(); + if (hadAChange) { + this._context.viewLayout.onHeightMaybeChanged(); + } + return hadAChange; } public onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean { From 73d5269f3dee960264b0f41cff01747a589d23b7 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 18 Apr 2018 15:51:58 -0700 Subject: [PATCH 0976/1070] Update markdown grammar --- .../markdown-basics/syntaxes/markdown.tmLanguage.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/markdown-basics/syntaxes/markdown.tmLanguage.json b/extensions/markdown-basics/syntaxes/markdown.tmLanguage.json index 47578f330b9..820134b366a 100644 --- a/extensions/markdown-basics/syntaxes/markdown.tmLanguage.json +++ b/extensions/markdown-basics/syntaxes/markdown.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/microsoft/vscode-markdown-tm-grammar/commit/c41ddcc21a75655bd90708f1048023476b232ee0", + "version": "https://github.com/microsoft/vscode-markdown-tm-grammar/commit/e667795f83c83e36dc6f90bde14632a963c52e34", "name": "Markdown", "scopeName": "text.html.markdown", "patterns": [ @@ -2022,7 +2022,7 @@ "name": "meta.other.valid-ampersand.markdown" }, "bold": { - "begin": "(?x)\n ((?]*+> # HTML tags\n | (?`+)([^`]|(?!(?(?!`))`)*+\\k\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (? # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whitespace\n ? # URL\n [ \\t]*+ # Optional whitespace\n ( # Optional Title\n (?['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | (?!(?<=\\S)\\1). # Everything besides\n # style closer\n )++\n (?<=\\S)\\1 # Close\n )\n", + "begin": "(?x)\n ((?<!\\w)\\*\\*\\b|\\b__)(?=\\S) # Open\n (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whitespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whitespace\n ( # Optional Title\n (?<title>['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | (?!(?<=\\S)\\1). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=__\\b|\\*\\*)\\1 # Close\n )\n", "captures": { "1": { "name": "punctuation.definition.bold.markdown" @@ -2164,7 +2164,7 @@ "name": "meta.image.reference.markdown" }, "italic": { - "begin": "(?x) (\\*\\b|\\b_)(?=\\S) # Open\n (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whtiespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whtiespace\n ( # Optional Title\n (?<title>['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | \\1\\1 # Must be bold closer\n | (?!(?<=\\S)\\1). # Everything besides\n # style closer\n )++\n (?<=\\w)\\1 # Close\n )\n", + "begin": "(?x) (\\*\\b|\\b_)(?=\\S) # Open\n (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whtiespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whtiespace\n ( # Optional Title\n (?<title>['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | \\1\\1 # Must be bold closer\n | (?!(?<=\\S)\\1). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=_\\b|\\*)\\1 # Close\n )\n", "captures": { "1": { "name": "punctuation.definition.italic.markdown" From 7812e8190e3818b901ee5b531e9ac4a53322a9b8 Mon Sep 17 00:00:00 2001 From: Matt Bierner <matb@microsoft.com> Date: Wed, 18 Apr 2018 15:56:37 -0700 Subject: [PATCH 0977/1070] Fix ts/js insertText used with useCodeSnippetsOnMethodSuggest Fixes #48163 --- .../src/features/completionItemProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/src/features/completionItemProvider.ts b/extensions/typescript-language-features/src/features/completionItemProvider.ts index 2a2c58cab04..6b155ccfdd2 100644 --- a/extensions/typescript-language-features/src/features/completionItemProvider.ts +++ b/extensions/typescript-language-features/src/features/completionItemProvider.ts @@ -519,7 +519,7 @@ export default class TypeScriptCompletionItemProvider implements vscode.Completi const snippet = new vscode.SnippetString(); const methodName = detail.displayParts.find(part => part.kind === 'methodName'); - snippet.appendText((methodName && methodName.text) || item.label || item.insertText as string); + snippet.appendText((item.insertText as string) || (methodName && methodName.text) || item.label); snippet.appendText('('); let parenCount = 0; From cd55adf8a9f69fec8857fbcc33fab1d740cd01a6 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 00:56:50 +0200 Subject: [PATCH 0978/1070] Fixes #43922 --- src/vs/editor/common/diff/diffComputer.ts | 2 +- .../test/common/diff/diffComputer.test.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/common/diff/diffComputer.ts b/src/vs/editor/common/diff/diffComputer.ts index a1b88e19a4b..6bccc31a789 100644 --- a/src/vs/editor/common/diff/diffComputer.ts +++ b/src/vs/editor/common/diff/diffComputer.ts @@ -284,7 +284,7 @@ class LineChange implements ILineChange { const originalCharSequence = originalLineSequence.getCharSequence(diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1); const modifiedCharSequence = modifiedLineSequence.getCharSequence(diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1); - let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueProcessingPredicate, false); + let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueProcessingPredicate, true); if (shouldPostProcessCharChanges) { rawChanges = postProcessCharChanges(rawChanges); diff --git a/src/vs/editor/test/common/diff/diffComputer.test.ts b/src/vs/editor/test/common/diff/diffComputer.test.ts index 0d521de7eb8..dd513f43452 100644 --- a/src/vs/editor/test/common/diff/diffComputer.test.ts +++ b/src/vs/editor/test/common/diff/diffComputer.test.ts @@ -673,4 +673,23 @@ suite('Editor Diff - DiffComputer', () => { ]; assertDiff(original, modified, expected, true, false); }); + + test('issue #43922', () => { + let original = [ + ' * `yarn [install]` -- Install project NPM dependencies. This is automatically done when you first create the project. You should only need to run this if you add dependencies in `package.json`.', + ]; + let modified = [ + ' * `yarn` -- Install project NPM dependencies. You should only need to run this if you add dependencies in `package.json`.', + ]; + var expected = [ + createLineChange( + 1, 1, 1, 1, + [ + createCharChange(1, 9, 1, 19, 0, 0, 0, 0), + createCharChange(1, 58, 1, 120, 0, 0, 0, 0), + ] + ) + ]; + assertDiff(original, modified, expected, true, false); + }); }); From fac0095643e3827aeb5c964084a59c24c86de474 Mon Sep 17 00:00:00 2001 From: Rob Lourens <roblourens@gmail.com> Date: Wed, 18 Apr 2018 20:36:13 -0700 Subject: [PATCH 0979/1070] Restore split include/exclude boxes Revert "Fix #47157 - Focus include/exclude box when toggling open" This reverts commit cf87ba36c0d62c3a9d77da5f96a5c24c9d87a122. See #46315 Revert "Fix #46628 - wrong "no results found" message" This reverts commit 0bd949c012df0081169728c77749a239eef73b62. See #46315 Revert "Fix default search exclusions string" This reverts commit 234d100603128cc1fe1c3b885df6e44c002d79c6. See #46315 Revert "Improve migrating from split include/exclude inputs to the new merged one" This reverts commit 22f49f8c93dfca48f9e631966b71b84c44371209. See #46315 Revert "Fix #45702 - merge include/exclude inputs" This reverts commit 7fdf1e3b50b57df7c0ab54cf4012ae1880aed01c. See #46315 --- .../parts/search/browser/searchActions.ts | 42 +++++++ .../parts/search/browser/searchView.ts | 116 ++++++++++++------ .../parts/search/common/queryBuilder.ts | 22 ---- .../electron-browser/search.contribution.ts | 5 +- .../search/test/common/queryBuilder.test.ts | 45 ------- 5 files changed, 125 insertions(+), 105 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchActions.ts b/src/vs/workbench/parts/search/browser/searchActions.ts index 0895c195cee..af43ddcccf4 100644 --- a/src/vs/workbench/parts/search/browser/searchActions.ts +++ b/src/vs/workbench/parts/search/browser/searchActions.ts @@ -126,6 +126,48 @@ export class ShowPreviousSearchIncludeAction extends Action { } } +export class ShowNextSearchExcludeAction extends Action { + + public static readonly ID = 'search.history.showNextExcludePattern'; + public static readonly LABEL = nls.localize('nextSearchExcludePattern', "Show Next Search Exclude Pattern"); + + constructor(id: string, label: string, + @IViewletService private viewletService: IViewletService, + @IPanelService private panelService: IPanelService, + @IContextKeyService private contextKeyService: IContextKeyService + ) { + super(id, label); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); + } + + public run(): TPromise<any> { + const searchView = getSearchView(this.viewletService, this.panelService); + searchView.searchExcludePattern.showNextTerm(); + return TPromise.as(null); + } +} + +export class ShowPreviousSearchExcludeAction extends Action { + + public static readonly ID = 'search.history.showPreviousExcludePattern'; + public static readonly LABEL = nls.localize('previousSearchExcludePattern', "Show Previous Search Exclude Pattern"); + + constructor(id: string, label: string, + @IViewletService private viewletService: IViewletService, + @IContextKeyService private contextKeyService: IContextKeyService, + @IPanelService private panelService: IPanelService + ) { + super(id, label); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); + } + + public run(): TPromise<any> { + const searchView = getSearchView(this.viewletService, this.panelService); + searchView.searchExcludePattern.showPreviousTerm(); + return TPromise.as(null); + } +} + export class ShowNextSearchTermAction extends Action { public static readonly ID = 'search.history.showNext'; diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index 52aaf31a014..1a1e0f46fd3 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -62,7 +62,6 @@ import { IPanel } from 'vs/workbench/common/panel'; import { IViewlet } from 'vs/workbench/common/viewlet'; import { Viewlet } from 'vs/workbench/browser/viewlet'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { splitGlobAware } from 'vs/base/common/glob'; export class SearchView extends Viewlet implements IViewlet, IPanel { @@ -80,6 +79,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private viewletVisible: IContextKey<boolean>; private inputBoxFocused: IContextKey<boolean>; private inputPatternIncludesFocused: IContextKey<boolean>; + private inputPatternExclusionsFocused: IContextKey<boolean>; private firstMatchFocused: IContextKey<boolean>; private fileMatchOrMatchFocused: IContextKey<boolean>; private fileMatchOrFolderMatchFocus: IContextKey<boolean>; @@ -99,7 +99,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private searchWidget: SearchWidget; private size: dom.Dimension; private queryDetails: HTMLElement; - private inputPatternIncludes: ExcludePatternInputWidget; + private inputPatternExcludes: ExcludePatternInputWidget; + private inputPatternIncludes: PatternInputWidget; private results: Builder; private currentSelectedFileMatch: FileMatch; @@ -136,6 +137,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.viewletVisible = Constants.SearchViewVisibleKey.bindTo(contextKeyService); this.inputBoxFocused = Constants.InputBoxFocusedKey.bindTo(this.contextKeyService); this.inputPatternIncludesFocused = Constants.PatternIncludesFocusedKey.bindTo(this.contextKeyService); + this.inputPatternExclusionsFocused = Constants.PatternExcludesFocusedKey.bindTo(this.contextKeyService); this.firstMatchFocused = Constants.FirstMatchFocusKey.bindTo(contextKeyService); this.fileMatchOrMatchFocused = Constants.FileMatchOrMatchFocusKey.bindTo(contextKeyService); this.fileMatchOrFolderMatchFocus = Constants.FileMatchOrFolderMatchFocusKey.bindTo(contextKeyService); @@ -182,7 +184,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { const filePatterns = this.viewletSettings['query.filePatterns'] || ''; const patternExclusions = this.viewletSettings['query.folderExclusions'] || ''; - delete this.viewletSettings['query.folderExclusions']; // Migrating from versions that have dedicated exclusions persisted + const patternExclusionsHistory = this.viewletSettings['query.folderExclusionsHistory'] || []; const patternIncludes = this.viewletSettings['query.folderIncludes'] || ''; const patternIncludesHistory = this.viewletSettings['query.folderIncludesHistory'] || []; const queryDetailsExpanded = this.viewletSettings['query.queryDetailsExpanded'] || ''; @@ -193,43 +195,27 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { builder.div({ 'class': 'more', 'tabindex': 0, 'role': 'button', 'title': nls.localize('moreSearch', "Toggle Search Details") }) .on(dom.EventType.CLICK, (e) => { dom.EventHelper.stop(e); - this.toggleQueryDetails(); + this.toggleQueryDetails(true); }).on(dom.EventType.KEY_UP, (e: KeyboardEvent) => { let event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { dom.EventHelper.stop(e); - this.toggleQueryDetails(false); + this.toggleQueryDetails(); } }); //folder includes list builder.div({ 'class': 'file-types' }, (builder) => { - let title = nls.localize('searchIncludeExclude.label', "files to include/exclude"); + let title = nls.localize('searchScope.includes', "files to include"); builder.element('h4', { text: title }); - this.inputPatternIncludes = new ExcludePatternInputWidget(builder.getContainer(), this.contextViewService, this.themeService, { - ariaLabel: nls.localize('searchIncludeExclude.ariaLabel', 'Search Include/Exclude Patterns'), - placeholder: nls.localize('searchIncludeExclude.placeholder', "Examples: src, !*.ts, test/**/*.log") + this.inputPatternIncludes = new PatternInputWidget(builder.getContainer(), this.contextViewService, this.themeService, { + ariaLabel: nls.localize('label.includes', 'Search Include Patterns') }); - // For migrating from versions that have dedicated exclusions persisted - let mergedIncludeExcludes = patternIncludes; - if (patternExclusions) { - if (mergedIncludeExcludes) { - mergedIncludeExcludes += ', '; - } - - mergedIncludeExcludes += splitGlobAware(patternExclusions, ',') - .map(s => s.trim()) - .filter(s => !!s.length) - .map(s => '!' + s) - .join(', '); - } - - this.inputPatternIncludes.setValue(mergedIncludeExcludes); + this.inputPatternIncludes.setValue(patternIncludes); this.inputPatternIncludes.setHistory(patternIncludesHistory); - this.inputPatternIncludes.setUseExcludesAndIgnoreFiles(useExcludesAndIgnoreFiles); this.inputPatternIncludes .on(FindInput.OPTION_CHANGE, (e) => { @@ -240,6 +226,30 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.inputPatternIncludes.onCancel(() => this.viewModel.cancelSearch()); // Cancel search without focusing the search widget this.trackInputBox(this.inputPatternIncludes.inputFocusTracker, this.inputPatternIncludesFocused); }); + + //pattern exclusion list + builder.div({ 'class': 'file-types' }, (builder) => { + let title = nls.localize('searchScope.excludes', "files to exclude"); + builder.element('h4', { text: title }); + + this.inputPatternExcludes = new ExcludePatternInputWidget(builder.getContainer(), this.contextViewService, this.themeService, { + ariaLabel: nls.localize('label.excludes', 'Search Exclude Patterns') + }); + + this.inputPatternExcludes.setValue(patternExclusions); + this.inputPatternExcludes.setUseExcludesAndIgnoreFiles(useExcludesAndIgnoreFiles); + this.inputPatternExcludes.setHistory(patternExclusionsHistory); + + this.inputPatternExcludes + .on(FindInput.OPTION_CHANGE, (e) => { + this.onQueryChanged(false); + }); + + this.inputPatternExcludes.onSubmit(() => this.onQueryChanged(true, true)); + this.inputPatternExcludes.onSubmit(() => this.onQueryChanged(true, true)); + this.inputPatternExcludes.onCancel(() => this.viewModel.cancelSearch()); // Cancel search without focusing the search widget + this.trackInputBox(this.inputPatternExcludes.inputFocusTracker, this.inputPatternExclusionsFocused); + }); }).getHTMLElement(); this.messages = builder.div({ 'class': 'messages' }).hide().clone(); @@ -272,6 +282,10 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { return this.inputPatternIncludes; } + public get searchExcludePattern(): PatternInputWidget { + return this.inputPatternExcludes; + } + private updateActions(): void { for (const action of this.actions) { action.update(); @@ -328,7 +342,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.toUnbind.push(inputFocusTracker.onDidBlur(() => { this.inputBoxFocused.set(this.searchWidget.searchInputHasFocus() || this.searchWidget.replaceInputHasFocus() - || this.inputPatternIncludes.inputHasFocus()); + || this.inputPatternIncludes.inputHasFocus() + || this.inputPatternExcludes.inputHasFocus()); if (contextKey) { contextKey.set(false); } @@ -706,6 +721,12 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { } if (this.inputPatternIncludes.inputHasFocus()) { + this.inputPatternExcludes.focus(); + this.inputPatternExcludes.select(); + return; + } + + if (this.inputPatternExcludes.inputHasFocus()) { this.selectTreeIfNotSelected(); return; } @@ -734,6 +755,12 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { return; } + if (this.inputPatternExcludes.inputHasFocus()) { + this.inputPatternIncludes.focus(); + this.inputPatternIncludes.select(); + return; + } + if (this.tree.isDOMFocused()) { this.moveFocusFromResults(); return; @@ -742,7 +769,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private moveFocusFromResults(): void { if (this.showsFileTypes()) { - this.toggleQueryDetails(true, true, false); + this.toggleQueryDetails(true, true, false, true); } else { this.searchWidget.focus(true, true); } @@ -761,6 +788,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.searchWidget.setWidth(this.size.width - 28 /* container margin */); + this.inputPatternExcludes.setWidth(this.size.width - 28 /* container margin */); this.inputPatternIncludes.setWidth(this.size.width - 28 /* container margin */); const messagesSize = this.messages.isHidden() ? 0 : dom.getTotalHeight(this.messages.getHTMLElement()); @@ -881,7 +909,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.onQueryChanged(true, true); } - public toggleQueryDetails(moveFocus = true, show?: boolean, skipLayout?: boolean): void { + public toggleQueryDetails(moveFocus?: boolean, show?: boolean, skipLayout?: boolean, reverse?: boolean): void { let cls = 'more'; show = typeof show === 'undefined' ? !dom.hasClass(this.queryDetails, cls) : Boolean(show); this.viewletSettings['query.queryDetailsExpanded'] = show; @@ -890,8 +918,13 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { if (show) { dom.addClass(this.queryDetails, cls); if (moveFocus) { - this.inputPatternIncludes.focus(); - this.inputPatternIncludes.select(); + if (reverse) { + this.inputPatternExcludes.focus(); + this.inputPatternExcludes.select(); + } else { + this.inputPatternIncludes.focus(); + this.inputPatternIncludes.select(); + } } } else { dom.removeClass(this.queryDetails, cls); @@ -959,7 +992,9 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { const isWholeWords = this.searchWidget.searchInput.getWholeWords(); const isCaseSensitive = this.searchWidget.searchInput.getCaseSensitive(); const contentPattern = this.searchWidget.searchInput.getValue(); - const useExcludesAndIgnoreFiles = this.inputPatternIncludes.useExcludesAndIgnoreFiles(); + const excludePatternText = this.inputPatternExcludes.getValue().trim(); + const includePatternText = this.inputPatternIncludes.getValue().trim(); + const useExcludesAndIgnoreFiles = this.inputPatternExcludes.useExcludesAndIgnoreFiles(); if (!rerunQuery) { return; @@ -992,8 +1027,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { isSmartCase: this.configurationService.getValue<ISearchConfiguration>().search.smartCase }; - const includeExcludePattern = this.inputPatternIncludes.getValue().trim(); - const { includePattern, excludePattern } = this.queryBuilder.parseIncludeExcludePattern(includeExcludePattern); + const excludePattern = this.inputPatternExcludes.getValue(); + const includePattern = this.inputPatternIncludes.getValue(); const options: IQueryOptions = { extraFileResources: getOutOfWorkspaceEditorResources(this.editorGroupService, this.contextService), @@ -1019,7 +1054,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { } this.validateQuery(query).then(() => { - this.onQueryTriggered(query, excludePattern, includePattern); + this.onQueryTriggered(query, excludePatternText, includePatternText); if (!preserveFocus) { this.searchWidget.focus(false); // focus back to input field @@ -1050,6 +1085,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { } private onQueryTriggered(query: ISearchQuery, excludePatternText: string, includePatternText: string): void { + this.inputPatternExcludes.onSearchSubmit(); this.inputPatternIncludes.onSearchSubmit(); this.viewModel.cancelSearch(); @@ -1110,8 +1146,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { } if (!hasResults) { - const hasExcludes = !!excludePatternText; - const hasIncludes = !!includePatternText; + let hasExcludes = !!excludePatternText; + let hasIncludes = !!includePatternText; let message: string; if (!completed) { @@ -1151,6 +1187,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { }).on(dom.EventType.CLICK, (e: MouseEvent) => { dom.EventHelper.stop(e, false); + this.inputPatternExcludes.setValue(''); this.inputPatternIncludes.setValue(''); this.onQueryChanged(true); @@ -1439,9 +1476,11 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { const isWholeWords = this.searchWidget.searchInput.getWholeWords(); const isCaseSensitive = this.searchWidget.searchInput.getCaseSensitive(); const contentPattern = this.searchWidget.searchInput.getValue(); + const patternExcludes = this.inputPatternExcludes.getValue().trim(); const patternIncludes = this.inputPatternIncludes.getValue().trim(); - const useExcludesAndIgnoreFiles = this.inputPatternIncludes.useExcludesAndIgnoreFiles(); + const useExcludesAndIgnoreFiles = this.inputPatternExcludes.useExcludesAndIgnoreFiles(); const searchHistory = this.searchWidget.getHistory(); + const patternExcludesHistory = this.inputPatternExcludes.getHistory(); const patternIncludesHistory = this.inputPatternIncludes.getHistory(); // store memento @@ -1450,7 +1489,9 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.viewletSettings['query.regex'] = isRegex; this.viewletSettings['query.wholeWords'] = isWholeWords; this.viewletSettings['query.caseSensitive'] = isCaseSensitive; + this.viewletSettings['query.folderExclusions'] = patternExcludes; this.viewletSettings['query.folderIncludes'] = patternIncludes; + this.viewletSettings['query.folderExclusionsHistory'] = patternExcludesHistory; this.viewletSettings['query.folderIncludesHistory'] = patternIncludesHistory; this.viewletSettings['query.useExcludesAndIgnoreFiles'] = useExcludesAndIgnoreFiles; @@ -1466,6 +1507,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.searchWidget.dispose(); this.inputPatternIncludes.dispose(); + this.inputPatternExcludes.dispose(); this.viewModel.dispose(); diff --git a/src/vs/workbench/parts/search/common/queryBuilder.ts b/src/vs/workbench/parts/search/common/queryBuilder.ts index d0a998f9117..417c6bdac24 100644 --- a/src/vs/workbench/parts/search/common/queryBuilder.ts +++ b/src/vs/workbench/parts/search/common/queryBuilder.ts @@ -182,28 +182,6 @@ export class QueryBuilder { return Object.keys(excludeExpression).length ? excludeExpression : undefined; } - /** - * A helper that splits positive and negative patterns from a string that combines both. - */ - public parseIncludeExcludePattern(pattern: string): { includePattern?: string, excludePattern?: string } { - const grouped = collections.groupBy( - splitGlobPattern(pattern), - s => strings.startsWith(s, '!') ? 'excludePattern' : 'includePattern'); - - const result = {}; - if (grouped.includePattern) { - result['includePattern'] = grouped.includePattern.join(', '); - } - - if (grouped.excludePattern) { - result['excludePattern'] = grouped.excludePattern - .map(s => strings.ltrim(s, '!')) - .join(', '); - } - - return result; - } - private mergeExcludesFromFolderQueries(folderQueries: IFolderQuery[]): glob.IExpression | undefined { const mergedExcludes = folderQueries.reduce((merged: glob.IExpression, fq: IFolderQuery) => { if (fq.excludePattern) { diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 90b31f579d5..b575b602528 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -53,7 +53,7 @@ import { getMultiSelectedResources } from 'vs/workbench/parts/files/browser/file import { Schemas } from 'vs/base/common/network'; import { PanelRegistry, Extensions as PanelExtensions, PanelDescriptor } from 'vs/workbench/browser/panel'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; -import { openSearchView, getSearchView, ReplaceAllInFolderAction, ReplaceAllAction, CloseReplaceAction, FocusNextInputAction, FocusPreviousInputAction, FocusNextSearchResultAction, FocusPreviousSearchResultAction, ReplaceInFilesAction, FindInFilesAction, FocusActiveEditorCommand, toggleCaseSensitiveCommand, ShowNextSearchTermAction, ShowPreviousSearchTermAction, toggleRegexCommand, ShowPreviousSearchIncludeAction, ShowNextSearchIncludeAction, CollapseDeepestExpandedLevelAction, toggleWholeWordCommand, RemoveAction, ReplaceAction, ClearSearchResultsAction, copyPathCommand, copyMatchCommand, copyAllCommand } from 'vs/workbench/parts/search/browser/searchActions'; +import { openSearchView, getSearchView, ReplaceAllInFolderAction, ReplaceAllAction, CloseReplaceAction, FocusNextInputAction, FocusPreviousInputAction, FocusNextSearchResultAction, FocusPreviousSearchResultAction, ReplaceInFilesAction, FindInFilesAction, FocusActiveEditorCommand, toggleCaseSensitiveCommand, ShowNextSearchTermAction, ShowPreviousSearchTermAction, toggleRegexCommand, ShowPreviousSearchIncludeAction, ShowNextSearchIncludeAction, CollapseDeepestExpandedLevelAction, toggleWholeWordCommand, RemoveAction, ReplaceAction, ClearSearchResultsAction, copyPathCommand, copyMatchCommand, copyAllCommand, ShowNextSearchExcludeAction, ShowPreviousSearchExcludeAction } from 'vs/workbench/parts/search/browser/searchActions'; import { VIEW_ID, ISearchConfigurationProperties } from 'vs/platform/search/common/search'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; @@ -483,6 +483,9 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchTerm registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchIncludeAction, ShowNextSearchIncludeAction.ID, ShowNextSearchIncludeAction.LABEL, ShowNextFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey)), 'Search: Show Next Search Include Pattern', category); registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchIncludeAction, ShowPreviousSearchIncludeAction.ID, ShowPreviousSearchIncludeAction.LABEL, ShowPreviousFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey)), 'Search: Show Previous Search Include Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchExcludeAction, ShowNextSearchExcludeAction.ID, ShowNextSearchExcludeAction.LABEL, ShowNextFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey)), 'Search: Show Next Search Exclude Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchExcludeAction, ShowPreviousSearchExcludeAction.ID, ShowPreviousSearchExcludeAction.LABEL, ShowPreviousFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey)), 'Search: Show Previous Search Exclude Pattern', category); + registry.registerWorkbenchAction(new SyncActionDescriptor(CollapseDeepestExpandedLevelAction, CollapseDeepestExpandedLevelAction.ID, CollapseDeepestExpandedLevelAction.LABEL), 'Search: Collapse All', category); registry.registerWorkbenchAction(new SyncActionDescriptor(ShowAllSymbolsAction, ShowAllSymbolsAction.ID, ShowAllSymbolsAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_T }), 'Go to Symbol in Workspace...'); diff --git a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts index 4ae1b1a4faf..bb9e17f68f0 100644 --- a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts +++ b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts @@ -697,51 +697,6 @@ suite('QueryBuilder', () => { assert(query.sortByScore); }); }); - - suite('parseIncludeExcludePattern', () => { - test('nothing', () => { - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern(''), - {}); - }); - - test('includes', () => { - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern('src'), - { - includePattern: 'src' - }); - - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern('src, test'), - { - includePattern: 'src, test' - }); - }); - - test('excludes', () => { - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern('!src'), - { - excludePattern: 'src' - }); - - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern('!src, !test'), - { - excludePattern: 'src, test' - }); - }); - - test('includes and excludes', () => { - assert.deepEqual( - queryBuilder.parseIncludeExcludePattern('!src, test, !foo, bar'), - { - includePattern: 'test, bar', - excludePattern: 'src, foo' - }); - }); - }); }); function assertEqualQueries(actual: ISearchQuery, expected: ISearchQuery): void { From 7683cb4bf438c46fa93491e232d7934fd23f5bf4 Mon Sep 17 00:00:00 2001 From: Rob Lourens <roblourens@gmail.com> Date: Wed, 18 Apr 2018 21:43:37 -0700 Subject: [PATCH 0980/1070] Transition combined include/exclude patterns back to split include/exclude boxes For #46315 --- .../parts/search/browser/searchView.ts | 37 +++++++++++++-- .../parts/search/common/queryBuilder.ts | 22 +++++++++ .../search/test/common/queryBuilder.test.ts | 45 +++++++++++++++++++ 3 files changed, 100 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index 1a1e0f46fd3..dccdd36adcd 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -183,14 +183,43 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.createSearchWidget(this.searchWidgetsContainer); const filePatterns = this.viewletSettings['query.filePatterns'] || ''; - const patternExclusions = this.viewletSettings['query.folderExclusions'] || ''; - const patternExclusionsHistory = this.viewletSettings['query.folderExclusionsHistory'] || []; - const patternIncludes = this.viewletSettings['query.folderIncludes'] || ''; - const patternIncludesHistory = this.viewletSettings['query.folderIncludesHistory'] || []; + let patternExclusions = this.viewletSettings['query.folderExclusions'] || ''; + const patternExclusionsHistory: string[] = this.viewletSettings['query.folderExclusionsHistory'] || []; + let patternIncludes = this.viewletSettings['query.folderIncludes'] || ''; + let patternIncludesHistory: string[] = this.viewletSettings['query.folderIncludesHistory'] || []; const queryDetailsExpanded = this.viewletSettings['query.queryDetailsExpanded'] || ''; const useExcludesAndIgnoreFiles = typeof this.viewletSettings['query.useExcludesAndIgnoreFiles'] === 'boolean' ? this.viewletSettings['query.useExcludesAndIgnoreFiles'] : true; + // Transition history from 1.22 combined include+exclude, to split include/exclude histories + const patternIncludesHistoryWithoutExcludes: string[] = []; + const patternExcludesHistoryFromIncludes: string[] = []; + patternIncludesHistory.forEach(historyEntry => { + const includeExclude = this.queryBuilder.parseIncludeExcludePattern(historyEntry); + if (includeExclude.includePattern) { + patternIncludesHistoryWithoutExcludes.push(includeExclude.includePattern); + } + + if (includeExclude.excludePattern) { + patternExcludesHistoryFromIncludes.push(includeExclude.excludePattern); + } + }); + + patternIncludesHistory = patternIncludesHistoryWithoutExcludes; + patternExclusionsHistory.push(...patternExcludesHistoryFromIncludes); + + // Split combined include/exclude to split include/exclude boxes + const includeExclude = this.queryBuilder.parseIncludeExcludePattern(patternIncludes); + patternIncludes = includeExclude.includePattern || ''; + + if (includeExclude.excludePattern) { + if (patternExclusions) { + patternExclusions += ', ' + includeExclude.excludePattern; + } else { + patternExclusions = includeExclude.excludePattern; + } + } + this.queryDetails = this.searchWidgetsContainer.div({ 'class': ['query-details'] }, (builder) => { builder.div({ 'class': 'more', 'tabindex': 0, 'role': 'button', 'title': nls.localize('moreSearch', "Toggle Search Details") }) .on(dom.EventType.CLICK, (e) => { diff --git a/src/vs/workbench/parts/search/common/queryBuilder.ts b/src/vs/workbench/parts/search/common/queryBuilder.ts index 417c6bdac24..d0a998f9117 100644 --- a/src/vs/workbench/parts/search/common/queryBuilder.ts +++ b/src/vs/workbench/parts/search/common/queryBuilder.ts @@ -182,6 +182,28 @@ export class QueryBuilder { return Object.keys(excludeExpression).length ? excludeExpression : undefined; } + /** + * A helper that splits positive and negative patterns from a string that combines both. + */ + public parseIncludeExcludePattern(pattern: string): { includePattern?: string, excludePattern?: string } { + const grouped = collections.groupBy( + splitGlobPattern(pattern), + s => strings.startsWith(s, '!') ? 'excludePattern' : 'includePattern'); + + const result = {}; + if (grouped.includePattern) { + result['includePattern'] = grouped.includePattern.join(', '); + } + + if (grouped.excludePattern) { + result['excludePattern'] = grouped.excludePattern + .map(s => strings.ltrim(s, '!')) + .join(', '); + } + + return result; + } + private mergeExcludesFromFolderQueries(folderQueries: IFolderQuery[]): glob.IExpression | undefined { const mergedExcludes = folderQueries.reduce((merged: glob.IExpression, fq: IFolderQuery) => { if (fq.excludePattern) { diff --git a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts index bb9e17f68f0..4ae1b1a4faf 100644 --- a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts +++ b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts @@ -697,6 +697,51 @@ suite('QueryBuilder', () => { assert(query.sortByScore); }); }); + + suite('parseIncludeExcludePattern', () => { + test('nothing', () => { + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern(''), + {}); + }); + + test('includes', () => { + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern('src'), + { + includePattern: 'src' + }); + + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern('src, test'), + { + includePattern: 'src, test' + }); + }); + + test('excludes', () => { + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern('!src'), + { + excludePattern: 'src' + }); + + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern('!src, !test'), + { + excludePattern: 'src, test' + }); + }); + + test('includes and excludes', () => { + assert.deepEqual( + queryBuilder.parseIncludeExcludePattern('!src, test, !foo, bar'), + { + includePattern: 'test, bar', + excludePattern: 'src, foo' + }); + }); + }); }); function assertEqualQueries(actual: ISearchQuery, expected: ISearchQuery): void { From b15ab83770e814fbdc3127e2dcc2f6b6fdbf193e Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 08:32:22 +0200 Subject: [PATCH 0981/1070] Fix tests --- .../editor/test/common/config/commonEditorConfig.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/test/common/config/commonEditorConfig.test.ts b/src/vs/editor/test/common/config/commonEditorConfig.test.ts index 4d5da6aec32..ef16d492ef5 100644 --- a/src/vs/editor/test/common/config/commonEditorConfig.test.ts +++ b/src/vs/editor/test/common/config/commonEditorConfig.test.ts @@ -88,14 +88,14 @@ suite('Common Editor Config', () => { let config = new TestWrappingConfiguration({ wordWrap: <any>true }); - assertWrapping(config, true, 81); + assertWrapping(config, true, 80); }); test('wordWrap on', () => { let config = new TestWrappingConfiguration({ wordWrap: 'on' }); - assertWrapping(config, true, 81); + assertWrapping(config, true, 80); }); test('wordWrap on without minimap', () => { @@ -105,7 +105,7 @@ suite('Common Editor Config', () => { enabled: false } }); - assertWrapping(config, true, 89); + assertWrapping(config, true, 88); }); test('wordWrap on does not use wordWrapColumn', () => { @@ -113,7 +113,7 @@ suite('Common Editor Config', () => { wordWrap: 'on', wordWrapColumn: 10 }); - assertWrapping(config, true, 81); + assertWrapping(config, true, 80); }); test('wordWrap off', () => { From fdf22f962e90b924ccf18851bba45122bb65a5a4 Mon Sep 17 00:00:00 2001 From: Till Salinger <t-tisali@microsoft.com> Date: Thu, 19 Apr 2018 09:13:33 +0200 Subject: [PATCH 0982/1070] improves error message --- src/vs/workbench/parts/files/electron-browser/fileActions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index f50d34c117d..7b75d27e51a 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -165,7 +165,7 @@ class TriggerRenameFileAction extends BaseFileAction { if (names.length > 1) { // error only occurs on multi-path const comparer = isLinux ? strings.compare : strings.compareIgnoreCase; if (comparer(names[0], this.element.name) === 0) { - return nls.localize('renameWhenSourcePathIsParentOfTargetError', "Cannot move/copy when source path is parent of target path."); + return nls.localize('renameWhenSourcePathIsParentOfTargetError', "Please use the 'New Folder' or 'New File' command to add children to an existing folder"); } } From 359108ae2aecf4af08dd8a0a66ce124af16222fe Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Thu, 19 Apr 2018 09:14:50 +0200 Subject: [PATCH 0983/1070] fix search smoketests --- src/vs/workbench/parts/search/browser/searchView.ts | 4 ++-- test/smoke/src/areas/search/search.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index dccdd36adcd..f367e4aae41 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -235,7 +235,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { }); //folder includes list - builder.div({ 'class': 'file-types' }, (builder) => { + builder.div({ 'class': 'file-types includes' }, (builder) => { let title = nls.localize('searchScope.includes', "files to include"); builder.element('h4', { text: title }); @@ -257,7 +257,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { }); //pattern exclusion list - builder.div({ 'class': 'file-types' }, (builder) => { + builder.div({ 'class': 'file-types excludes' }, (builder) => { let title = nls.localize('searchScope.excludes', "files to exclude"); builder.element('h4', { text: title }); diff --git a/test/smoke/src/areas/search/search.ts b/test/smoke/src/areas/search/search.ts index 632707e1bf9..9052aaca126 100644 --- a/test/smoke/src/areas/search/search.ts +++ b/test/smoke/src/areas/search/search.ts @@ -9,7 +9,7 @@ import { Code } from '../../vscode/code'; const VIEWLET = 'div[id="workbench.view.search"] .search-view'; const INPUT = `${VIEWLET} .search-widget .search-container .monaco-inputbox input`; -const INCLUDE_INPUT = `${VIEWLET} .query-details .monaco-inputbox input[aria-label="Search Include/Exclude Patterns"]`; +const INCLUDE_INPUT = `${VIEWLET} .query-details .file-types.includes .monaco-inputbox input`; export class Search extends Viewlet { From 4427c0ec9fc00710ee9525243c37e09993c0d0cc Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Thu, 19 Apr 2018 09:20:54 +0200 Subject: [PATCH 0984/1070] fix CSS smoketests --- test/smoke/src/areas/editor/editor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/smoke/src/areas/editor/editor.ts b/test/smoke/src/areas/editor/editor.ts index 0482c94bfd6..c3facfe1718 100644 --- a/test/smoke/src/areas/editor/editor.ts +++ b/test/smoke/src/areas/editor/editor.ts @@ -89,7 +89,7 @@ export class Editor { const line = `${editor} .view-lines > .view-line:nth-child(${lineNumber})`; const textarea = `${editor} textarea`; - await this.code.waitAndClick(line); + await this.code.waitAndClick(line, 0, 0); await this.code.waitForActiveElement(textarea); } From cc955e067098a2ca492daedb8b5c8a5ec7889e68 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Thu, 19 Apr 2018 10:19:48 +0200 Subject: [PATCH 0985/1070] comment out smoketest from product build for now --- build/tfs/product-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index e8ff8a943b8..2a0f41bb644 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -40,7 +40,7 @@ phases: - powershell: | npm run gulp -- "electron-$(VSCODE_ARCH)" .\scripts\test.bat --build --tfs - yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" + # yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" name: test - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 @@ -362,7 +362,7 @@ phases: - script: | ./scripts/test.sh --build --tfs APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`" - yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME" + # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME" name: test - script: | From 7bd54fca57160e0c252c17474ce453668b592c04 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 10:31:11 +0200 Subject: [PATCH 0986/1070] Fixes #48145 --- src/vs/editor/contrib/hover/hover.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/hover/hover.ts b/src/vs/editor/contrib/hover/hover.ts index 940bd118e3d..a48e61cb54f 100644 --- a/src/vs/editor/contrib/hover/hover.ts +++ b/src/vs/editor/contrib/hover/hover.ts @@ -190,7 +190,13 @@ class ShowHoverAction extends EditorAction { constructor() { super({ id: 'editor.action.showHover', - label: nls.localize('showHover', "Show Hover"), + label: nls.localize({ + key: 'showHover', + comment: [ + 'Label for action that will trigger the showing of a hover in the editor.', + 'This allows for users to show the hover without using the mouse.' + ] + }, "Show Hover"), alias: 'Show Hover', precondition: null, kbOpts: { From aba55335a96301306fe61d2eff7a86277e4a77ae Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Thu, 19 Apr 2018 10:29:47 +0200 Subject: [PATCH 0987/1070] fix #48140 --- src/vs/platform/environment/node/argv.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index 336ec1dcbcb..d4ffb88f8f9 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -164,8 +164,8 @@ const troubleshootingHelp: { [name: string]: string; } = { '-p, --performance': localize('performance', "Start with the 'Developer: Startup Performance' command enabled."), '--prof-startup': localize('prof-startup', "Run CPU profiler during startup"), '--disable-extensions': localize('disableExtensions', "Disable all installed extensions."), - '--inspect-extensions': localize('inspect-extensions', "Allow debugging and profiling of extensions. Check the developer tools for the connection uri."), - '--inspect-brk-extensions': localize('inspect-brk-extensions', "Allow debugging and profiling of extensions with the extension host being paused after start. Check the developer tools for the connection uri."), + '--inspect-extensions': localize('inspect-extensions', "Allow debugging and profiling of extensions. Check the developer tools for the connection URI."), + '--inspect-brk-extensions': localize('inspect-brk-extensions', "Allow debugging and profiling of extensions with the extension host being paused after start. Check the developer tools for the connection URI."), '--disable-gpu': localize('disableGPU', "Disable GPU hardware acceleration."), '--upload-logs': localize('uploadLogs', "Uploads logs from current session to a secure endpoint."), '--max-memory': localize('maxMemory', "Max memory size for a window (in Mbytes).") From 17321a2d66b758ec949379b21d241e4150a659f2 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 10:44:32 +0200 Subject: [PATCH 0988/1070] Fixes #48144 --- src/vs/editor/browser/widget/diffReview.ts | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/browser/widget/diffReview.ts b/src/vs/editor/browser/widget/diffReview.ts index 7715c7482d7..f1d0c81f619 100644 --- a/src/vs/editor/browser/widget/diffReview.ts +++ b/src/vs/editor/browser/widget/diffReview.ts @@ -584,9 +584,34 @@ export class DiffReview extends Disposable { let cell = document.createElement('div'); cell.className = 'diff-review-cell diff-review-summary'; - cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${maxOriginalLine - minOriginalLine + 1} +${minModifiedLine},${maxModifiedLine - minModifiedLine + 1} @@`)); + const originalChangedLinesCnt = maxOriginalLine - minOriginalLine + 1; + const modifiedChangedLinesCnt = maxModifiedLine - minModifiedLine + 1; + cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${originalChangedLinesCnt} +${minModifiedLine},${modifiedChangedLinesCnt} @@`)); header.setAttribute('data-line', String(minModifiedLine)); - header.setAttribute('aria-label', nls.localize('header', "Difference {0} of {1}: original {2}, {3} lines, modified {4}, {5} lines", (diffIndex + 1), this._diffs.length, minOriginalLine, maxOriginalLine - minOriginalLine + 1, minModifiedLine, maxModifiedLine - minModifiedLine + 1)); + + const getAriaLines = (lines: number) => { + if (lines === 0) { + return nls.localize('no_lines', "no lines"); + } else if (lines === 1) { + return nls.localize('one_line', "1 line"); + } else { + return nls.localize('more_lines', "{0} lines", lines); + } + }; + + const originalChangedLinesCntAria = getAriaLines(originalChangedLinesCnt); + const modifiedChangedLinesCntAria = getAriaLines(modifiedChangedLinesCnt); + header.setAttribute('aria-label', nls.localize({ + key: 'header', + comment: [ + 'This is the ARIA label for a git diff header.', + 'A git diff header looks like this: @@ -154,12 +159,39 @@.', + 'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.', + 'Variables 0 and 1 refer to the diff index out of total number of diffs.', + 'Variables 2 and 4 will be numbers (a line number).', + 'Variables 3 and 4 will be "no lines", "1 line" or "X lines", localized separately.' + ] + }, "Difference {0} of {1}: original {2}, {3}, modified {4}, {5}", (diffIndex + 1), this._diffs.length, minOriginalLine, originalChangedLinesCntAria, minModifiedLine, modifiedChangedLinesCntAria)); header.appendChild(cell); // @@ -504,7 +517,7 @@ From dbc4fbb008962e4594067ef8d64351f72dfdfb0b Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 10:55:14 +0200 Subject: [PATCH 0989/1070] debugStatus: always update the style since it is affected by debug state fixes #44989 --- src/vs/workbench/parts/debug/browser/debugStatus.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/browser/debugStatus.ts b/src/vs/workbench/parts/debug/browser/debugStatus.ts index 318a96be4f6..f72afca4b5d 100644 --- a/src/vs/workbench/parts/debug/browser/debugStatus.ts +++ b/src/vs/workbench/parts/debug/browser/debugStatus.ts @@ -90,8 +90,9 @@ export class DebugStatus extends Themable implements IStatusbarItem { this.icon = dom.append(a, $('.icon')); this.label = dom.append(a, $('span.label')); this.setLabel(); - this.updateStyles(); } + + this.updateStyles(); } private setLabel(): void { From 1bf1b55e3d6e74415833a6b784df77c6333e660c Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 11:09:17 +0200 Subject: [PATCH 0990/1070] debug: do not listen on launch.json changes, re-read it before debug start fixes #47021 --- .../parts/debug/electron-browser/debugService.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 1550004184a..fdd564ef76b 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -82,7 +82,6 @@ export class DebugService implements debug.IDebugService { private debugType: IContextKey<string>; private debugState: IContextKey<string>; private breakpointsToSendOnResourceSaved: Set<string>; - private launchJsonChanged: boolean; private firstSessionStart: boolean; private skipRunningTask: boolean; private previousState: debug.State; @@ -698,7 +697,6 @@ export class DebugService implements debug.IDebugService { this.allProcesses.clear(); this.model.getBreakpoints().forEach(bp => bp.verified = false); } - this.launchJsonChanged = false; let config: debug.IConfig, compound: debug.ICompound; if (!configOrName) { @@ -1081,12 +1079,9 @@ export class DebugService implements debug.IDebugService { return new TPromise<void>((c, e) => { setTimeout(() => { - // Read the configuration again if a launch.json has been changed, if not just use the inmemory configuration let config = process.configuration; - const launch = process.session.root ? this.configurationManager.getLaunch(process.session.root.uri) : undefined; - if (this.launchJsonChanged && launch) { - this.launchJsonChanged = false; + if (launch) { config = launch.getConfiguration(process.configuration.name) || config; // Take the type from the process since the debug extension might overwrite it #21316 config.type = process.configuration.type; @@ -1303,13 +1298,9 @@ export class DebugService implements debug.IDebugService { } fileChangesEvent.getUpdated().forEach(event => { - if (this.breakpointsToSendOnResourceSaved.delete(event.resource.toString())) { this.sendBreakpoints(event.resource, true).done(null, errors.onUnexpectedError); } - if (strings.endsWith(event.resource.toString(), '.vscode/launch.json')) { - this.launchJsonChanged = true; - } }); } From 4fd4bef1355ef62ee734d5e6b0c03dbe808b7443 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 11:14:07 +0200 Subject: [PATCH 0991/1070] Change the extension point - Call it viewsContainers - Take the location where containers are contributed --- ...nt.ts => viewsContainersExtensionPoint.ts} | 115 +++++++++++------- .../api/browser/viewsExtensionPoint.ts | 6 +- src/vs/workbench/workbench.main.ts | 2 +- 3 files changed, 77 insertions(+), 46 deletions(-) rename src/vs/workbench/api/browser/{activitybarExtensionPoint.ts => viewsContainersExtensionPoint.ts} (61%) diff --git a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts similarity index 61% rename from src/vs/workbench/api/browser/activitybarExtensionPoint.ts rename to src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts index 15aed855355..df12b72fd5c 100644 --- a/src/vs/workbench/api/browser/activitybarExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts @@ -21,28 +21,84 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { ViewLocation } from 'vs/workbench/common/views'; import { PersistentViewsViewlet } from 'vs/workbench/browser/parts/views/viewsViewlet'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; +import { forEach } from 'vs/base/common/collections'; +import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; +import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -export namespace schema { - // --activity group contribution point - export interface IUserFriendlyActivityGroupDescriptor { - id: string; - title: string; - icon: string; +export interface IUserFriendlyViewsContainerDescriptor { + id: string; + title: string; + icon: string; +} + +const viewsContainerSchema: IJSONSchema = { + type: 'object', + properties: { + id: { + description: localize('vscode.extension.contributes.views.containers.id', "Unique id used to identify the container in which views can be contributed using 'views' contribution point"), + type: 'string' + }, + label: { + description: localize('vscode.extension.contributes.views.containers.title', 'Human readable string used to render the container'), + type: 'string' + }, + icon: { + description: localize('vscode.extension.contributes.views.containers.icon', 'Path to the container icon'), + type: 'string' + } + } +}; + +export const viewsContainerContribution: IJSONSchema = { + description: localize('vscode.extension.contributes.viewsContainer', 'Contributes views containers to the editor'), + type: 'object', + properties: { + 'activitybar': { + description: localize('views.container.activitybar', "Activity Bar"), + type: 'array', + items: viewsContainerSchema + } + } +}; + +export const viewsContainersExtensionPoint: IExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }> = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }>('viewsContainers', [], viewsContainerContribution); +class ViewsContainersExtensionHandler implements IWorkbenchContribution { + + constructor() { + this.handleViewsContainersExtensionPoint(); } - export function isValidActivityGroup(activityGroupDescriptors: IUserFriendlyActivityGroupDescriptor[], collector: ExtensionMessageCollector): boolean { - if (!Array.isArray(activityGroupDescriptors)) { - collector.error(localize('requirearray', "activity groups must be an array")); + private handleViewsContainersExtensionPoint() { + viewsContainersExtensionPoint.setHandler((extensions) => { + for (let extension of extensions) { + const { value, collector } = extension; + forEach(value, entry => { + if (!this.isValidViewsContainer(entry.value, collector)) { + return; + } + switch (entry.key) { + case 'activitybar': + this.contributeToActivitybar(entry.value, extension.description); + break; + } + }); + } + }); + } + + private isValidViewsContainer(viewsContainersDescriptors: IUserFriendlyViewsContainerDescriptor[], collector: ExtensionMessageCollector): boolean { + if (!Array.isArray(viewsContainersDescriptors)) { + collector.error(localize('requirearray', "views containers must be an array")); return false; } - for (let descriptor of activityGroupDescriptors) { + for (let descriptor of viewsContainersDescriptors) { if (typeof descriptor.id !== 'string') { collector.error(localize('requirestring', "property `{0}` is mandatory and must be of type `string`", 'id')); return false; @@ -60,34 +116,8 @@ export namespace schema { return true; } - export const activityGroupContribution: IJSONSchema = { - description: localize('vscode.extension.contributes.activityGroup', 'Contributes an activity group to activity bar'), - type: 'object', - properties: { - id: { - description: localize('vscode.extension.contributes.activityGroup.id', "Unique id used to identify the activity group in which views can be contributed using 'views' contribution point"), - type: 'string' - }, - label: { - description: localize('vscode.extension.contributes.activityGroup.title', 'Human readable string used to render the activity group'), - type: 'string' - }, - icon: { - description: localize('vscode.extension.contributes.activityGroup.icon', 'Path to the activityGroup icon'), - type: 'string' - } - } - }; -} - -export const activityGroupExtensionPoint: IExtensionPoint<schema.IUserFriendlyActivityGroupDescriptor[]> = ExtensionsRegistry.registerExtensionPoint<schema.IUserFriendlyActivityGroupDescriptor[]>('activityGroups', [], schema.activityGroupContribution); -activityGroupExtensionPoint.setHandler((extensions) => { - for (let extension of extensions) { - const { value, collector } = extension; - if (!schema.isValidActivityGroup(value, collector)) { - return; - } - value.forEach((descriptor, index) => { + private contributeToActivitybar(containers: IUserFriendlyViewsContainerDescriptor[], extension: IExtensionDescription) { + containers.forEach((descriptor, index) => { const id = `workbench.view.extension.${descriptor.id}`; const title = descriptor.title; const cssClass = `extensionViewlet-${descriptor.id}`; @@ -95,7 +125,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { // Generate CSS to show the icon in the activity bar const iconClass = `.monaco-workbench > .activitybar .monaco-action-bar .action-label.${cssClass}`; - const iconPath = join(extension.description.extensionFolderPath, descriptor.icon); + const iconPath = join(extension.extensionFolderPath, descriptor.icon); createCSSRule(iconClass, `-webkit-mask: url('${iconPath}') no-repeat 50% 50%; -webkit-mask-size: 22px;`); // Register as viewlet @@ -143,4 +173,7 @@ activityGroupExtensionPoint.setHandler((extensions) => { ); }); } -}); +} + +const workbenchRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench); +workbenchRegistry.registerWorkbenchContribution(ViewsContainersExtensionHandler, LifecyclePhase.Starting); \ No newline at end of file diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index 4d0a9dcc528..24514349310 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -12,12 +12,10 @@ import { ViewLocation, ViewsRegistry, ICustomViewDescriptor } from 'vs/workbench import { CustomTreeViewPanel } from 'vs/workbench/browser/parts/views/customViewPanel'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { coalesce, } from 'vs/base/common/arrays'; -import { activityGroupExtensionPoint } from './activitybarExtensionPoint'; +import { viewsContainersExtensionPoint } from 'vs/workbench/api/browser/viewsContainersExtensionPoint'; namespace schema { - // --views contribution point - export interface IUserFriendlyViewDescriptor { id: string; name: string; @@ -92,7 +90,7 @@ function getViewLocation(value: string): ViewLocation { } } -ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: schema.IUserFriendlyViewDescriptor[] }>('views', [activityGroupExtensionPoint], schema.viewsContribution) +ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: schema.IUserFriendlyViewDescriptor[] }>('views', [viewsContainersExtensionPoint], schema.viewsContribution) .setHandler((extensions) => { for (let extension of extensions) { const { value, collector } = extension; diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index 18d43b1b710..6b09e984955 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -19,8 +19,8 @@ import 'vs/editor/editor.all'; import 'vs/workbench/services/actions/electron-browser/menusExtensionPoint'; // Views +import 'vs/workbench/api/browser/viewsContainersExtensionPoint'; import 'vs/workbench/api/browser/viewsExtensionPoint'; -import 'vs/workbench/api/browser/activitybarExtensionPoint'; // Localizations import 'vs/workbench/parts/localizations/browser/localizations.contribution'; From 57a92cb312c5a181e6cff6e09ca579db24a1f4c0 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 10:50:33 +0200 Subject: [PATCH 0992/1070] Fixes #48141 --- src/vs/base/common/keybindingLabels.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/vs/base/common/keybindingLabels.ts b/src/vs/base/common/keybindingLabels.ts index c9a7cec8e18..29916e201d4 100644 --- a/src/vs/base/common/keybindingLabels.ts +++ b/src/vs/base/common/keybindingLabels.ts @@ -54,10 +54,10 @@ export const UILabelProvider = new ModifierLabelProvider( separator: '', }, { - ctrlKey: nls.localize('ctrlKey', "Ctrl"), - shiftKey: nls.localize('shiftKey', "Shift"), - altKey: nls.localize('altKey', "Alt"), - metaKey: nls.localize('windowsKey', "Windows"), + ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, "Ctrl"), + shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, "Shift"), + altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, "Alt"), + metaKey: nls.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, "Windows"), separator: '+', } ); @@ -67,17 +67,17 @@ export const UILabelProvider = new ModifierLabelProvider( */ export const AriaLabelProvider = new ModifierLabelProvider( { - ctrlKey: nls.localize('ctrlKey.long', "Control"), - shiftKey: nls.localize('shiftKey.long', "Shift"), - altKey: nls.localize('altKey.long', "Alt"), - metaKey: nls.localize('cmdKey.long', "Command"), + ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, "Control"), + shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, "Shift"), + altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, "Alt"), + metaKey: nls.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, "Command"), separator: '+', }, { - ctrlKey: nls.localize('ctrlKey.long', "Control"), - shiftKey: nls.localize('shiftKey.long', "Shift"), - altKey: nls.localize('altKey.long', "Alt"), - metaKey: nls.localize('windowsKey.long', "Windows"), + ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, "Control"), + shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, "Shift"), + altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, "Alt"), + metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, "Windows"), separator: '+', } ); From 3500eb8731a516ca4f9ea8cf39c3886f5a211a65 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 11:40:55 +0200 Subject: [PATCH 0993/1070] back to FileError, #47475 --- src/vs/platform/files/common/files.ts | 18 --------- src/vs/vscode.proposed.d.ts | 34 +++++----------- .../electron-browser/mainThreadFileSystem.ts | 4 +- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHostTypes.ts | 26 ++++++++++++ .../electron-browser/remoteFileService.ts | 40 ++++++++++++++++--- 6 files changed, 73 insertions(+), 51 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 25d4550d7fa..57e66accfa5 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -156,24 +156,6 @@ export enum FileType2 { SymbolicLink = 4, } -export class FileError extends Error { - - static readonly EntryExists = new FileError('EEXIST'); - static readonly EntryNotFound = new FileError('ENOENT'); - static readonly EntryNotADirectory = new FileError('ENOTDIR'); - static readonly EntryIsADirectory = new FileError('EISDIR'); - - constructor(readonly code: string, message?: string) { - super(message || code); - } - is(err: any): err is FileError { - if (!err || typeof err !== 'object') { - return false; - } - return err.code === this.code; - } -} - export enum FileOpenFlags { Read = 0b0001, Write = 0b0010, diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 7a55ba9b0e2..a78f6101190 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -84,32 +84,18 @@ declare module 'vscode' { // create(resource: Uri): Thenable<FileStat>; } - // export class FileError extends Error { + /** + * + */ + export class FileError extends Error { - // /** - // * Entry already exists, e.g. when creating a file or folder. - // */ - // static readonly EntryExists: FileError; + static EntryExists(message?: string): FileError; + static EntryNotFound(message?: string): FileError; + static EntryNotADirectory(message?: string): FileError; + static EntryIsADirectory(message?: string): FileError; - // /** - // * Entry does not exist. - // */ - // static readonly EntryNotFound: FileError; - - // /** - // * Entry is not a directory. - // */ - // static readonly EntryNotADirectory: FileError; - - // /** - // * Entry is a directory. - // */ - // static readonly EntryIsADirectory: FileError; - - // readonly code: string; - - // constructor(code: string, message?: string); - // } + constructor(message?: string); + } export enum FileChangeType2 { Changed = 1, diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index b3aedaab4a2..e2c1accca14 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileOpenFlags, IFileChange, IFileService, IStat, IWatchOptions, FileError, FileSystemProviderCapabilities, IFileSystemProvider } from 'vs/platform/files/common/files'; +import { FileOpenFlags, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @@ -88,7 +88,7 @@ class RemoteFileSystemProvider implements IFileSystemProvider { // --- forwarding calls - stat(resource: URI): TPromise<IStat, FileError> { + stat(resource: URI): TPromise<IStat> { return this._proxy.$stat(this._handle, resource).then(undefined, err => { throw err; }); diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 3de53551971..a69e5e34be1 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -713,7 +713,7 @@ export function createApiFactory( FileChangeType2: extHostTypes.FileChangeType2, FileType2: extHostTypes.FileType2, FileOpenFlags: files.FileOpenFlags, - FileError: files.FileError, + FileError: extHostTypes.FileError, FoldingRange: extHostTypes.FoldingRange, FoldingRangeKind: extHostTypes.FoldingRangeKind }; diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index f877921b5d5..ae88f3ded82 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1838,6 +1838,32 @@ export enum FileType2 { SymbolicLink = 4, } +export class FileError extends Error { + + static EntryExists(message?: string): FileError { + return new FileError(message, 'EntryExists', FileError.EntryExists); + } + static EntryNotFound(message?: string): FileError { + return new FileError(message, 'EntryNotFound', FileError.EntryNotFound); + } + static EntryNotADirectory(message?: string): FileError { + return new FileError(message, 'EntryNotADirectory', FileError.EntryNotADirectory); + } + static EntryIsADirectory(message?: string): FileError { + return new FileError(message, 'EntryIsADirectory', FileError.EntryIsADirectory); + } + + constructor(message?: string, code?: string, hide?: Function) { + super(message); + this.name = code ? `FileError/${code}` : `FileError`; + + if (typeof Error.captureStackTrace === 'function' && typeof hide === 'function') { + // nice stack traces + Error.captureStackTrace(this, hide); + } + } +} + //#endregion //#region folding api diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 3d6d056a71b..254c3c9d18f 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -16,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileError, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -200,6 +200,32 @@ export class RemoteFileService extends FileService { || this._supportedSchemes.indexOf(resource.scheme) >= 0; } + private _tryParseFileOperationResult(err: any): FileOperationResult { + if (!(err instanceof Error)) { + return undefined; + } + let match = /FileError\/(.+)$/.exec(err.name); + if (!match) { + return undefined; + } + let res: FileOperationResult; + switch (match[1]) { + case 'EntryNotFound': + res = FileOperationResult.FILE_NOT_FOUND; + break; + case 'EntryIsADirectory': + res = FileOperationResult.FILE_IS_DIRECTORY; + break; + case 'EntryExists': + case 'EntryNotADirectory': + default: + // todo + res = undefined; + break; + } + return res; + } + // --- stat private _withProvider(resource: URI): TPromise<IFileSystemProvider> { @@ -229,7 +255,10 @@ export class RemoteFileService extends FileService { } else { return this._doResolveFiles([{ resource, options }]).then(data => { if (data.length !== 1 || !data[0].success) { - throw new Error(`ENOENT, ${resource}`); + throw new FileOperationError( + localize('fileNotFoundError', "File not found ({0})", resource.toString(true)), + FileOperationResult.FILE_NOT_FOUND + ); } else { return data[0].stat; } @@ -369,10 +398,9 @@ export class RemoteFileService extends FileService { this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, fileStat)); return fileStat; }, err => { - if (FileError.EntryExists.is(err)) { - return TPromise.wrapError(new FileOperationError(err.code, FileOperationResult.FILE_MODIFIED_SINCE, options)); - } - throw err; + const message = localize('err.create', "Failed to create file {0}", resource.toString(false)); + const result = this._tryParseFileOperationResult(err); + throw new FileOperationError(message, result, options); }); } } From c436e7735b8ae541dc0964724ac29e03d62b1f36 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 11:46:17 +0200 Subject: [PATCH 0994/1070] Compute 'enableProposedApi' property on main --- src/vs/workbench/api/node/extHost.api.impl.ts | 23 ------------ src/vs/workbench/api/node/extHost.protocol.ts | 2 -- .../electron-browser/extensionHost.ts | 5 +-- .../electron-browser/extensionService.ts | 36 +++++++++++++++++-- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index a69e5e34be1..d368888e620 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -54,7 +54,6 @@ import { ExtHostFileSystem } from 'vs/workbench/api/node/extHostFileSystem'; import { ExtHostDecorations } from 'vs/workbench/api/node/extHostDecorations'; import { toGlobPattern, toLanguageSelector } from 'vs/workbench/api/node/extHostTypeConverters'; import { ExtensionActivatedByAPI } from 'vs/workbench/api/node/extHostExtensionActivator'; -import { isFalsyOrEmpty } from 'vs/base/common/arrays'; import { OverviewRulerLane } from 'vs/editor/common/model'; import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { ExtHostWebviews } from 'vs/workbench/api/node/extHostWebview'; @@ -164,28 +163,6 @@ export function createApiFactory( }; })(); - if (!isFalsyOrEmpty(product.extensionAllowedProposedApi) - && product.extensionAllowedProposedApi.indexOf(extension.id) >= 0 - ) { - // fast lane -> proposed api is available to all extensions - // that are listed in product.json-files - extension.enableProposedApi = true; - - } else if (extension.enableProposedApi && !extension.isBuiltin) { - if ( - !initData.environment.enableProposedApiForAll && - initData.environment.enableProposedApiFor.indexOf(extension.id) < 0 - ) { - extension.enableProposedApi = false; - console.error(`Extension '${extension.id} cannot use PROPOSED API (must started out of dev or enabled via --enable-proposed-api)`); - - } else { - // proposed api is available when developing or when an extension was explicitly - // spelled out via a command line argument - console.warn(`Extension '${extension.id}' uses PROPOSED API which is subject to change and removal without notice.`); - } - } - // namespace: commands const commands: typeof vscode.commands = { registerCommand(id: string, command: <T>(...args: any[]) => T | Thenable<T>, thisArgs?: any): vscode.Disposable { diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index f18f37f7e78..6bd721a9ec9 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -52,8 +52,6 @@ import { TaskExecutionDTO, TaskDTO, TaskHandleDTO } from 'vs/workbench/api/share export interface IEnvironment { isExtensionDevelopmentDebug: boolean; - enableProposedApiForAll: boolean; - enableProposedApiFor: string | string[]; appRoot: string; appSettingsHome: string; disableExtensions: boolean; diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index c57272a6b22..ad9aab56112 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -371,10 +371,7 @@ export class ExtensionHostProcessWorker { appSettingsHome: this._environmentService.appSettingsHome, disableExtensions: this._environmentService.disableExtensions, extensionDevelopmentPath: this._environmentService.extensionDevelopmentPath, - extensionTestsPath: this._environmentService.extensionTestsPath, - // globally disable proposed api when built and not insiders developing extensions - enableProposedApiForAll: !this._environmentService.isBuilt || (!!this._environmentService.extensionDevelopmentPath && product.nameLong.indexOf('Insiders') >= 0), - enableProposedApiFor: this._environmentService.args['enable-proposed-api'] || [] + extensionTestsPath: this._environmentService.extensionTestsPath }, workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : <IWorkspaceData>this._contextService.getWorkspace(), extensions: extensionDescriptions, diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index ec7847ca19b..7fb1c10edd1 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -41,6 +41,7 @@ import product from 'vs/platform/node/product'; import * as strings from 'vs/base/common/strings'; import { RPCProtocol } from 'vs/workbench/services/extensions/node/rpcProtocol'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; +import { isFalsyOrEmpty } from 'vs/base/common/arrays'; let _SystemExtensionsRoot: string = null; function getSystemExtensionsRoot(): string { @@ -497,7 +498,7 @@ export class ExtensionService extends Disposable implements IExtensionService { private _scanAndHandleExtensions(): void { - this._getRuntimeExtension() + this._getRuntimeExtensions() .then(runtimeExtensons => { this._registry = new ExtensionDescriptionRegistry(runtimeExtensons); @@ -522,7 +523,7 @@ export class ExtensionService extends Disposable implements IExtensionService { }); } - private _getRuntimeExtension(): TPromise<IExtensionDescription[]> { + private _getRuntimeExtensions(): TPromise<IExtensionDescription[]> { const log = new Logger((severity, source, message) => { this._logOrShowMessage(severity, this._isDev ? messageWithSource2(source, message) : message); }); @@ -586,7 +587,36 @@ export class ExtensionService extends Disposable implements IExtensionService { return runtimeExtensions; } }); - }); + }).then(extensions => this._updateEnableProposedApi(extensions)); + } + + private _updateEnableProposedApi(extensions: IExtensionDescription[]): IExtensionDescription[] { + const enableProposedApiForAll = !this._environmentService.isBuilt || (!!this._environmentService.extensionDevelopmentPath && product.nameLong.indexOf('Insiders') >= 0); + const enableProposedApiFor = this._environmentService.args['enable-proposed-api'] || []; + for (const extension of extensions) { + if (!isFalsyOrEmpty(product.extensionAllowedProposedApi) + && product.extensionAllowedProposedApi.indexOf(extension.id) >= 0 + ) { + // fast lane -> proposed api is available to all extensions + // that are listed in product.json-files + extension.enableProposedApi = true; + + } else if (extension.enableProposedApi && !extension.isBuiltin) { + if ( + !enableProposedApiForAll && + enableProposedApiFor.indexOf(extension.id) < 0 + ) { + extension.enableProposedApi = false; + console.error(`Extension '${extension.id} cannot use PROPOSED API (must started out of dev or enabled via --enable-proposed-api)`); + + } else { + // proposed api is available when developing or when an extension was explicitly + // spelled out via a command line argument + console.warn(`Extension '${extension.id}' uses PROPOSED API which is subject to change and removal without notice.`); + } + } + } + return extensions; } private _handleExtensionPointMessage(msg: IMessage) { From e62c7b64efe407d5d37a1d2a74a5aadd22f8a640 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 11:54:48 +0200 Subject: [PATCH 0995/1070] Put contribution behind proposed flag --- src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts index df12b72fd5c..1d28b391934 100644 --- a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts @@ -78,6 +78,10 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { viewsContainersExtensionPoint.setHandler((extensions) => { for (let extension of extensions) { const { value, collector } = extension; + if (extension.description.enableProposedApi) { + collector.error(localize('proposed', "'{0}' contribution is only available when running out of dev or with the following command line switch: --enable-proposed-api {1}", 'viewsContainer', extension.description.id)); + continue; + } forEach(value, entry => { if (!this.isValidViewsContainer(entry.value, collector)) { return; From 8383050186d87bc1a415b3f8cbcc040362a7b638 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 12:09:31 +0200 Subject: [PATCH 0996/1070] debug: report error for postDebugTask fixes #46659 --- src/vs/workbench/parts/debug/electron-browser/debugService.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index fdd564ef76b..73d419154b0 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -1144,7 +1144,9 @@ export class DebugService implements debug.IDebugService { process.inactive = true; this._onDidEndProcess.fire(process); if (process.configuration.postDebugTask) { - this.runTask(process.getId(), process.session.root, process.configuration.postDebugTask); + this.runTask(process.getId(), process.session.root, process.configuration.postDebugTask).done(undefined, err => + this.notificationService.error(err) + ); } } From de10301afb5cd8b4ec0196532869e6b4f912bad1 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 12:12:51 +0200 Subject: [PATCH 0997/1070] mistype --- src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts index 1d28b391934..5a2e2b78965 100644 --- a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts @@ -78,7 +78,7 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { viewsContainersExtensionPoint.setHandler((extensions) => { for (let extension of extensions) { const { value, collector } = extension; - if (extension.description.enableProposedApi) { + if (!extension.description.enableProposedApi) { collector.error(localize('proposed', "'{0}' contribution is only available when running out of dev or with the following command line switch: --enable-proposed-api {1}", 'viewsContainer', extension.description.id)); continue; } From 54583ac65ae1612d6273250a46f10537371389d3 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 12:17:10 +0200 Subject: [PATCH 0998/1070] Fixes Microsoft/monaco-editor#830 --- src/vs/base/browser/dom.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 2a9a1b69116..9aee0d502d6 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -289,7 +289,7 @@ function doRequestAnimationFrame(callback: (time: number) => void): number { || emulatedRequestAnimationFrame ); } - return _animationFrame(callback); + return _animationFrame.call(self, callback); } /** From 433006eb798c7740db019583374dbb9752ce23ad Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 12:28:15 +0200 Subject: [PATCH 0999/1070] add (empty) option bags to provider function to be save for the future, #47475 --- src/vs/vscode.proposed.d.ts | 24 ++++++++++++------- .../workbench/api/node/extHostFileSystem.ts | 12 +++++----- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index a78f6101190..ed80eb31cac 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -132,7 +132,7 @@ declare module 'vscode' { */ export interface FileSystemProvider2 { - _version: 7; + _version: 8; /** * An event to signal that a resource has been created, changed, or deleted. This @@ -149,13 +149,14 @@ declare module 'vscode' { watch(uri: Uri, options: { recursive?: boolean; excludes?: string[] }): Disposable; /** - * Retrieve metadata about a file. + * Retrieve metadata about a file. Throw an [`EntryNotFound`](#FileError.EntryNotFound)-error + * in case the file does not exist. * * @param uri The uri of the file to retrieve meta data about. * @param token A cancellation token. * @return The file metadata about the file. */ - stat(uri: Uri, token: CancellationToken): FileStat2 | Thenable<FileStat2>; + stat(uri: Uri, options: { /*future: followSymlinks*/ }, token: CancellationToken): FileStat2 | Thenable<FileStat2>; /** * Retrieve the meta data of all entries of a [directory](#FileType2.Directory) @@ -164,7 +165,7 @@ declare module 'vscode' { * @param token A cancellation token. * @return A thenable that resolves to an array of tuples of file names and files stats. */ - readDirectory(uri: Uri, token: CancellationToken): [string, FileStat2][] | Thenable<[string, FileStat2][]>; + readDirectory(uri: Uri, options: { /*future: onlyType?*/ }, token: CancellationToken): [string, FileStat2][] | Thenable<[string, FileStat2][]>; /** * Create a new directory. *Note* that new files are created via `write`-calls. @@ -172,7 +173,7 @@ declare module 'vscode' { * @param uri The uri of the *new* folder. * @param token A cancellation token. */ - createDirectory(uri: Uri, token: CancellationToken): FileStat2 | Thenable<FileStat2>; + createDirectory(uri: Uri, options: { /*future: permissions?*/ }, token: CancellationToken): FileStat2 | Thenable<FileStat2>; /** * Read the entire contents of a file. @@ -192,6 +193,15 @@ declare module 'vscode' { */ writeFile(uri: Uri, content: Uint8Array, options: { flags: FileOpenFlags }, token: CancellationToken): void | Thenable<void>; + /** + * Delete a file or folder from the underlying storage. + * + * @param uri The resource that is to be deleted + * @param options Options bag for future use + * @param token A cancellation token. + */ + delete(uri: Uri, options: { /*future: useTrash?, followSymlinks?*/ }, token: CancellationToken): void | Thenable<void>; + /** * Rename a file or folder. * @@ -210,10 +220,6 @@ declare module 'vscode' { * @param token A cancellation token. */ copy?(uri: Uri, target: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable<FileStat2>; - - // todo@remote - // ? useTrash, expose trash - delete(uri: Uri, token: CancellationToken): void | Thenable<void>; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 78d27342c02..ade7b978110 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -59,7 +59,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 7 = 7; + _version: 8 = 8; onDidChangeFile: vscode.Event<vscode.FileChange2[]>; @@ -189,7 +189,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 7) { + if (newProvider && newProvider._version === 8) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); @@ -248,11 +248,11 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } $stat(handle: number, resource: UriComponents): TPromise<files.IStat, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), {}, token)); } $readdir(handle: number, resource: UriComponents): TPromise<[string, files.IStat][], any> { - return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), {}, token)); } $readFile(handle: number, resource: UriComponents, flags: files.FileOpenFlags): TPromise<string> { @@ -268,7 +268,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } $delete(handle: number, resource: UriComponents): TPromise<void, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), {}, token)); } $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise<files.IStat, any> { @@ -280,7 +280,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } $mkdir(handle: number, resource: UriComponents): TPromise<files.IStat, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), {}, token)); } $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void { From 705de3da4d93ca7deac4dbcbeab1b87ce2a52bd1 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 12:34:00 +0200 Subject: [PATCH 1000/1070] debug: surface all errors from the variable substitution via modal dialogs fixes #46870 --- .../electron-browser/debugConfigurationManager.ts | 10 +++++++--- .../parts/debug/electron-browser/debugService.ts | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index e7b737dfddc..72681ca18a1 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -634,9 +634,13 @@ class Launch implements ILaunch { setOSProperties(isLinux, result.linux); // massage configuration attributes - append workspace path to relatvie paths, substitute variables in paths. - Object.keys(result).forEach(key => { - result[key] = this.configurationResolverService.resolveAny(this.getWorkspaceForResolving(), result[key]); - }); + try { + Object.keys(result).forEach(key => { + result[key] = this.configurationResolverService.resolveAny(this.getWorkspaceForResolving(), result[key]); + }); + } catch (e) { + return TPromise.wrapError(e); + } const adapter = this.configurationManager.getDebugger(result.type); return this.configurationResolverService.resolveInteractiveVariables(result, adapter ? adapter.variables : null); diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 73d419154b0..0987dbaca10 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -786,7 +786,7 @@ export class DebugService implements debug.IDebugService { private createProcess(launch: debug.ILaunch, config: debug.IConfig, sessionId: string): TPromise<void> { return this.textFileService.saveAll().then(() => - (launch ? launch.substituteVariables(config) : TPromise.as(config)).then(resolvedConfig => { + (launch ? launch.substituteVariables(config).then(config => config, (err: Error) => this.showError(err.message)) : TPromise.as(config)).then(resolvedConfig => { if (!resolvedConfig) { // User canceled resolving of interactive variables, silently return return undefined; From 9934264f36aa2cb015cdf135e70e2b7ceae431b2 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 12:49:43 +0200 Subject: [PATCH 1001/1070] Fixes #42783: Make sure to call TextModel._setTrackedRange when undoing --- src/vs/editor/common/controller/oneCursor.ts | 5 --- .../test/browser/controller/cursor.test.ts | 37 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/vs/editor/common/controller/oneCursor.ts b/src/vs/editor/common/controller/oneCursor.ts index 30d6a1fb615..363cda5bb40 100644 --- a/src/vs/editor/common/controller/oneCursor.ts +++ b/src/vs/editor/common/controller/oneCursor.ts @@ -93,11 +93,6 @@ export class OneCursor { viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns); } - if (this.modelState && this.viewState && this.modelState.equals(modelState) && this.viewState.equals(viewState)) { - // No-op, early return - return; - } - this.modelState = modelState; this.viewState = viewState; diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index 59d193db530..c7e109750ea 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -2125,6 +2125,43 @@ suite('Editor Controller - Regression tests', () => { model.dispose(); }); + + test('issue #42783: API Calls with Undo Leave Cursor in Wrong Position', () => { + let model = createTextModel( + [ + 'ab' + ].join('\n') + ); + + withTestCodeEditor(null, { model: model }, (editor, cursor) => { + editor.setSelections([ + new Selection(1, 1, 1, 1) + ]); + + editor.executeEdits('test', [{ + range: new Range(1, 1, 1, 3), + text: '' + }]); + assertCursor(cursor, [ + new Selection(1, 1, 1, 1), + ]); + + cursorCommand(cursor, H.Undo, null, 'keyboard'); + assertCursor(cursor, [ + new Selection(1, 1, 1, 1), + ]); + + editor.executeEdits('test', [{ + range: new Range(1, 1, 1, 2), + text: '' + }]); + assertCursor(cursor, [ + new Selection(1, 1, 1, 1), + ]); + }); + + model.dispose(); + }); }); suite('Editor Controller - Cursor Configuration', () => { From 19cb9665a9a35fd47a40a72e5011c109221364ee Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 12:56:02 +0200 Subject: [PATCH 1002/1070] Give a different id for SCM location - Views are contributed to a container inside SCM Viewlet --- src/vs/workbench/common/views.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index ae20aa703cd..c72806df4fb 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -30,7 +30,7 @@ export class ViewLocation { static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer'); static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug'); static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions'); - static readonly SCM: ViewLocation = ViewLocation.register('workbench.view.scm'); + static readonly SCM: ViewLocation = ViewLocation.register('workbench.view.scm.views.contributed'); private constructor(private _id: string) { } get id(): string { return this._id; } From 98c94e009b9b1f96fdfbbf04226a946588f5e2cd Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 15:07:45 +0200 Subject: [PATCH 1003/1070] resources: use fsPath for comparing file resources --- src/vs/base/common/resources.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/base/common/resources.ts b/src/vs/base/common/resources.ts index 8a1e1853bfa..45814e12d24 100644 --- a/src/vs/base/common/resources.ts +++ b/src/vs/base/common/resources.ts @@ -14,6 +14,10 @@ export function basenameOrAuthority(resource: uri): string { export function isEqualOrParent(resource: uri, candidate: uri, ignoreCase?: boolean): boolean { if (resource.scheme === candidate.scheme && resource.authority === candidate.authority) { + if (resource.scheme === 'file') { + return paths.isEqualOrParent(resource.fsPath, candidate.fsPath, ignoreCase); + } + return paths.isEqualOrParent(resource.path, candidate.path, ignoreCase); } From 1fdf60b882f0edc6753fc964b253783eb46d56ef Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 15:15:07 +0200 Subject: [PATCH 1004/1070] add DeprecatedXYZ-aliases, #47475 --- src/vs/vscode.proposed.d.ts | 23 +++++++++++++++---- src/vs/workbench/api/node/extHost.api.impl.ts | 2 ++ .../workbench/api/node/extHostFileSystem.ts | 10 ++++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index ed80eb31cac..d8cb1b5b3a5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -11,7 +11,7 @@ declare module 'vscode' { export function sampleFunction(): Thenable<any>; } - //#region Joh: file system provider + //#region Joh: file system provider (OLD) export enum FileChangeType { Updated = 0, @@ -84,8 +84,22 @@ declare module 'vscode' { // create(resource: Uri): Thenable<FileStat>; } + export type DeprecatedFileChangeType = FileChangeType; + export type DeprecatedFileType = FileType; + export type DeprecatedFileChange = FileChange; + export type DeprecatedFileStat = FileStat; + export type DeprecatedFileSystemProvider = FileSystemProvider; + + export namespace workspace { + export function registerDeprecatedFileSystemProvider(scheme: string, provider: DeprecatedFileSystemProvider): Disposable; + } + + //#endregion + + //#region Joh: file system provider (new) + /** - * + * */ export class FileError extends Error { @@ -194,8 +208,8 @@ declare module 'vscode' { writeFile(uri: Uri, content: Uint8Array, options: { flags: FileOpenFlags }, token: CancellationToken): void | Thenable<void>; /** - * Delete a file or folder from the underlying storage. - * + * Delete a file or folder from the underlying storage. + * * @param uri The resource that is to be deleted * @param options Options bag for future use * @param token A cancellation token. @@ -224,7 +238,6 @@ declare module 'vscode' { export namespace workspace { export function registerFileSystemProvider(scheme: string, provider: FileSystemProvider, newProvider?: FileSystemProvider2): Disposable; - export function registerDeprecatedFileSystemProvider(scheme: string, provider: FileSystemProvider): Disposable; } //#endregion diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index d368888e620..4c5cce2c9db 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -687,6 +687,8 @@ export function createApiFactory( FileChangeType: extHostTypes.FileChangeType, FileType: extHostTypes.FileType, + DeprecatedFileChangeType: extHostTypes.FileChangeType, + DeprecatedFileType: extHostTypes.FileType, FileChangeType2: extHostTypes.FileChangeType2, FileType2: extHostTypes.FileType2, FileOpenFlags: files.FileOpenFlags, diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index ade7b978110..18b53fc9687 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -63,7 +63,7 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { onDidChangeFile: vscode.Event<vscode.FileChange2[]>; - constructor(private readonly _delegate: vscode.FileSystemProvider) { + constructor(private readonly _delegate: vscode.DeprecatedFileSystemProvider) { if (!this._delegate.onDidChange) { this.onDidChangeFile = Event.None; } else { @@ -89,7 +89,7 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { }); } - private static _modernizeFileStat(stat: vscode.FileStat): vscode.FileStat2 { + private static _modernizeFileStat(stat: vscode.DeprecatedFileStat): vscode.FileStat2 { let { mtime, size, type } = stat; let newType: vscode.FileType2; @@ -108,7 +108,7 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { return { mtime, size, type: newType }; } - private static _modernizeFileChange(e: vscode.FileChange): vscode.FileChange2 { + private static _modernizeFileChange(e: vscode.DeprecatedFileChange): vscode.FileChange2 { let { resource, type } = e; let newType: vscode.FileChangeType2; switch (type) { @@ -184,11 +184,11 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { extHostLanguageFeatures.registerDocumentLinkProvider('*', this._linkProvider); } - registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider) { + registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.DeprecatedFileSystemProvider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); } - registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { + registerFileSystemProvider(scheme: string, provider: vscode.DeprecatedFileSystemProvider, newProvider: vscode.FileSystemProvider2) { if (newProvider && newProvider._version === 8) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else if (provider) { From 42a5c7930948a4cddb8a371d3f2965ea475fefcd Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 15:46:39 +0200 Subject: [PATCH 1005/1070] Fixes #45146 --- .../contrib/snippet/snippetController2.ts | 8 ++++++ .../editor/contrib/snippet/snippetSession.ts | 27 +++++++++++++++++++ .../mainThreadSaveParticipant.ts | 7 +++++ 3 files changed, 42 insertions(+) diff --git a/src/vs/editor/contrib/snippet/snippetController2.ts b/src/vs/editor/contrib/snippet/snippetController2.ts index 9ec45c47c8f..83abd441a26 100644 --- a/src/vs/editor/contrib/snippet/snippetController2.ts +++ b/src/vs/editor/contrib/snippet/snippetController2.ts @@ -14,6 +14,7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { showSimpleSuggestions } from 'vs/editor/contrib/suggest/suggest'; import { ISuggestion } from 'vs/editor/common/modes'; import { Selection } from 'vs/editor/common/core/selection'; +import { Range } from 'vs/editor/common/core/range'; import { Choice } from 'vs/editor/contrib/snippet/snippetParser'; import { repeat } from 'vs/base/common/strings'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; @@ -203,6 +204,13 @@ export class SnippetController2 implements IEditorContribution { this._session.next(); this._updateState(); } + + getSessionEnclosingRange(): Range { + if (this._session) { + return this._session.getEnclosingRange(); + } + return undefined; + } } diff --git a/src/vs/editor/contrib/snippet/snippetSession.ts b/src/vs/editor/contrib/snippet/snippetSession.ts index be8168b070e..31be6b2ba16 100644 --- a/src/vs/editor/contrib/snippet/snippetSession.ts +++ b/src/vs/editor/contrib/snippet/snippetSession.ts @@ -226,6 +226,20 @@ export class OneSnippet { this._placeholderGroups = groupBy(this._snippet.placeholders, Placeholder.compareByIndex); }); } + + public getEnclosingRange(): Range { + let result: Range; + const model = this._editor.getModel(); + this._placeholderDecorations.forEach((decorationId) => { + const placeholderRange = model.getDecorationRange(decorationId); + if (!result) { + result = placeholderRange; + } else { + result = result.plusRange(placeholderRange); + } + }); + return result; + } } export class SnippetSession { @@ -510,4 +524,17 @@ export class SnippetSession { // have any left, we don't have a selection anymore return allPossibleSelections.size > 0; } + + public getEnclosingRange(): Range { + let result: Range; + for (const snippet of this._snippets) { + const snippetRange = snippet.getEnclosingRange(); + if (!result) { + result = snippetRange; + } else { + result = result.plusRange(snippetRange); + } + } + return result; + } } diff --git a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts index bfa416d8b51..c5c267edb8d 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts @@ -29,6 +29,7 @@ import { localize } from 'vs/nls'; import { isFalsyOrEmpty } from 'vs/base/common/arrays'; import { ILogService } from 'vs/platform/log/common/log'; import { shouldSynchronizeModel } from 'vs/editor/common/services/modelService'; +import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2'; export interface ISaveParticipantParticipant extends ISaveParticipant { // progressMessage: string; @@ -60,6 +61,12 @@ class TrimWhitespaceParticipant implements ISaveParticipantParticipant { prevSelection = editor.getSelections(); if (isAutoSaved) { cursors.push(...prevSelection.map(s => new Position(s.positionLineNumber, s.positionColumn))); + const snippetsRange = SnippetController2.get(editor).getSessionEnclosingRange(); + if (snippetsRange) { + for (let lineNumber = snippetsRange.startLineNumber; lineNumber <= snippetsRange.endLineNumber; lineNumber++) { + cursors.push(new Position(lineNumber, model.getLineMaxColumn(lineNumber))); + } + } } } From ffd91480d7c8cdc38bec9f3476a82a0dc0c507d1 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 15:52:36 +0200 Subject: [PATCH 1006/1070] context menu on title area is specific for sidebarPart thus move it there fixes #46237 --- .../workbench/browser/parts/compositePart.ts | 29 ++----------------- .../browser/parts/sidebar/sidebarPart.ts | 27 ++++++++++++++++- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index 5e919a5668c..4111789e023 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -15,7 +15,6 @@ import * as strings from 'vs/base/common/strings'; import { Emitter } from 'vs/base/common/event'; import * as types from 'vs/base/common/types'; import * as errors from 'vs/base/common/errors'; -import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar'; import { IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar'; import { ProgressBar } from 'vs/base/browser/ui/progressbar/progressbar'; @@ -36,7 +35,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { attachProgressBarStyler } from 'vs/platform/theme/common/styler'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { Dimension, EventType } from 'vs/base/browser/dom'; +import { Dimension } from 'vs/base/browser/dom'; export interface ICompositeTitleLabel { @@ -74,7 +73,7 @@ export abstract class CompositePart<T extends Composite> extends Part { private telemetryService: ITelemetryService, protected contextMenuService: IContextMenuService, protected partService: IPartService, - private keybindingService: IKeybindingService, + protected keybindingService: IKeybindingService, protected instantiationService: IInstantiationService, themeService: IThemeService, protected readonly registry: CompositeRegistry<T>, @@ -408,8 +407,6 @@ export abstract class CompositePart<T extends Composite> extends Part { 'class': ['composite', 'title'] }); - $(titleArea).on(EventType.CONTEXT_MENU, (e: MouseEvent) => this.onTitleAreaContextMenu(new StandardMouseEvent(e))); - // Left Title Label this.titleLabel = this.createTitleLabel(titleArea.getHTMLElement()); @@ -456,27 +453,7 @@ export abstract class CompositePart<T extends Composite> extends Part { this.titleLabel.updateStyles(); } - private onTitleAreaContextMenu(event: StandardMouseEvent): void { - if (this.activeComposite) { - const contextMenuActions = this.getTitleAreaContextMenuActions(); - if (contextMenuActions.length) { - const anchor: { x: number, y: number } = { x: event.posx, y: event.posy }; - this.contextMenuService.showContextMenu({ - getAnchor: () => anchor, - getActions: () => TPromise.as(contextMenuActions), - getActionItem: action => this.actionItemProvider(action as Action), - actionRunner: this.activeComposite.getActionRunner(), - getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id) - }); - } - } - } - - protected getTitleAreaContextMenuActions(): IAction[] { - return this.activeComposite ? this.activeComposite.getContextMenuActions() : []; - } - - private actionItemProvider(action: Action): IActionItem { + protected actionItemProvider(action: Action): IActionItem { // Check Active Composite if (this.activeComposite) { diff --git a/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts b/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts index 172dfe24ff2..d4826a2b8f6 100644 --- a/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts +++ b/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts @@ -26,8 +26,9 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND, SIDE_BAR_BORDER } from 'vs/workbench/common/theme'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { Dimension } from 'vs/base/browser/dom'; +import { Dimension, EventType } from 'vs/base/browser/dom'; import { $ } from 'vs/base/browser/builder'; +import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; export class SidebarPart extends CompositePart<Viewlet> { @@ -76,6 +77,13 @@ export class SidebarPart extends CompositePart<Viewlet> { return this._onDidCompositeClose.event as Event<IViewlet>; } + public createTitleArea(parent: HTMLElement): HTMLElement { + const titleArea = super.createTitleArea(parent); + $(titleArea).on(EventType.CONTEXT_MENU, (e: MouseEvent) => this.onTitleAreaContextMenu(new StandardMouseEvent(e))); + + return titleArea; + } + public updateStyles(): void { super.updateStyles(); @@ -133,6 +141,23 @@ export class SidebarPart extends CompositePart<Viewlet> { return super.layout(dimension); } + + private onTitleAreaContextMenu(event: StandardMouseEvent): void { + const activeViewlet = this.getActiveViewlet() as Viewlet; + if (activeViewlet) { + const contextMenuActions = activeViewlet ? activeViewlet.getContextMenuActions() : []; + if (contextMenuActions.length) { + const anchor: { x: number, y: number } = { x: event.posx, y: event.posy }; + this.contextMenuService.showContextMenu({ + getAnchor: () => anchor, + getActions: () => TPromise.as(contextMenuActions), + getActionItem: action => this.actionItemProvider(action as Action), + actionRunner: activeViewlet.getActionRunner(), + getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id) + }); + } + } + } } class FocusSideBarAction extends Action { From f952b5d7be4aaf0971d762d337e63fb409534906 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 16:08:27 +0200 Subject: [PATCH 1007/1070] Fix #48216 --- src/vs/workbench/parts/markers/electron-browser/messages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/markers/electron-browser/messages.ts b/src/vs/workbench/parts/markers/electron-browser/messages.ts index 022b2a787a9..7368df79ae4 100644 --- a/src/vs/workbench/parts/markers/electron-browser/messages.ts +++ b/src/vs/workbench/parts/markers/electron-browser/messages.ts @@ -23,7 +23,7 @@ export default class Messages { public static MARKERS_PANEL_NO_PROBLEMS_BUILT: string = nls.localize('markers.panel.no.problems.build', "No problems have been detected in the workspace so far."); public static MARKERS_PANEL_NO_PROBLEMS_FILTERS: string = nls.localize('markers.panel.no.problems.filters', "No results found with provided filter criteria."); - public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "All problems are hidden because files exculde filter is enabled."); + public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "All problems are hidden because files exclude filter is enabled."); public static MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.useFilesExclude', "Filter using Files Exclude Setting"); public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.donotUseFilesExclude', "Do not use Files Exclude Setting"); From a8839f858e6c7001262d8219da7593dd28cbdcf9 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 16:30:26 +0200 Subject: [PATCH 1008/1070] add an arg to resolve code lenses, #44846 --- src/vs/editor/contrib/codelens/codelens.ts | 22 ++++++++++-- .../workbench/api/node/extHostApiCommands.ts | 7 ++-- .../api/extHostApiCommands.test.ts | 34 +++++++++++++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/vs/editor/contrib/codelens/codelens.ts b/src/vs/editor/contrib/codelens/codelens.ts index 453b065969f..3f80ac5442a 100644 --- a/src/vs/editor/contrib/codelens/codelens.ts +++ b/src/vs/editor/contrib/codelens/codelens.ts @@ -14,6 +14,7 @@ import { registerLanguageCommand } from 'vs/editor/browser/editorExtensions'; import { CodeLensProviderRegistry, CodeLensProvider, ICodeLensSymbol } from 'vs/editor/common/modes'; import { IModelService } from 'vs/editor/common/services/modelService'; import { asWinJsPromise } from 'vs/base/common/async'; +import { CancellationToken } from 'vs/base/common/cancellation'; export interface ICodeLensData { symbol: ICodeLensSymbol; @@ -58,7 +59,7 @@ export function getCodeLensData(model: ITextModel): TPromise<ICodeLensData[]> { registerLanguageCommand('_executeCodeLensProvider', function (accessor, args) { - const { resource } = args; + let { resource, itemResolveCount } = args; if (!(resource instanceof URI)) { throw illegalArgument(); } @@ -68,5 +69,22 @@ registerLanguageCommand('_executeCodeLensProvider', function (accessor, args) { throw illegalArgument(); } - return getCodeLensData(model).then(value => value.map(item => item.symbol)); + const result: ICodeLensSymbol[] = []; + return getCodeLensData(model).then(value => { + + let resolve: Thenable<any>[] = []; + + for (const item of value) { + if (typeof itemResolveCount === 'undefined') { + result.push(item.symbol); + } else if (itemResolveCount-- > 0) { + resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol))); + } + } + + return Promise.all(resolve); + + }).then(() => { + return result; + }); }); diff --git a/src/vs/workbench/api/node/extHostApiCommands.ts b/src/vs/workbench/api/node/extHostApiCommands.ts index 92313180694..8c99eee403f 100644 --- a/src/vs/workbench/api/node/extHostApiCommands.ts +++ b/src/vs/workbench/api/node/extHostApiCommands.ts @@ -137,7 +137,8 @@ export class ExtHostApiCommands { this._register('vscode.executeCodeLensProvider', this._executeCodeLensProvider, { description: 'Execute CodeLens provider.', args: [ - { name: 'uri', description: 'Uri of a text document', constraint: URI } + { name: 'uri', description: 'Uri of a text document', constraint: URI }, + { name: 'itemResolveCount', description: '(optional) Number of lenses that should be resolved and returned. Will only retrun resolved lenses, will impact performance)', constraint: value => value === void 0 || typeof value === 'number' } ], returns: 'A promise that resolves to an array of CodeLens-instances.' }); @@ -472,8 +473,8 @@ export class ExtHostApiCommands { })); } - private _executeCodeLensProvider(resource: URI): Thenable<vscode.CodeLens[]> { - const args = { resource }; + private _executeCodeLensProvider(resource: URI, itemResolveCount: number): Thenable<vscode.CodeLens[]> { + const args = { resource, itemResolveCount }; return this._commands.executeCommand<modes.ICodeLensSymbol[]>('_executeCodeLensProvider', args) .then(tryMapWith(item => { return new types.CodeLens( diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index b024891dc84..b9a820e8e5b 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -534,6 +534,40 @@ suite('ExtHostLanguageFeatureCommands', function () { }); }); + test('CodeLens, resolve', async function () { + + let resolveCount = 0; + + disposables.push(extHost.registerCodeLensProvider(defaultSelector, <vscode.CodeLensProvider>{ + provideCodeLenses(): any { + return [ + new types.CodeLens(new types.Range(0, 0, 1, 1)), + new types.CodeLens(new types.Range(0, 0, 1, 1)), + new types.CodeLens(new types.Range(0, 0, 1, 1)), + new types.CodeLens(new types.Range(0, 0, 1, 1)) + ]; + }, + resolveCodeLens(codeLens: types.CodeLens) { + codeLens.command = { title: resolveCount.toString(), command: 'resolved' }; + resolveCount += 1; + return codeLens; + } + })); + + await rpcProtocol.sync(); + + let value = await commands.executeCommand<vscode.CodeLens[]>('vscode.executeCodeLensProvider', model.uri, 2); + + assert.equal(value.length, 2); // the resolve argument defines the number of results being returned + assert.equal(resolveCount, 2); + + resolveCount = 0; + value = await commands.executeCommand<vscode.CodeLens[]>('vscode.executeCodeLensProvider', model.uri); + + assert.equal(value.length, 4); + assert.equal(resolveCount, 0); + }); + test('Links, back and forth', function () { disposables.push(extHost.registerDocumentLinkProvider(defaultSelector, <vscode.DocumentLinkProvider>{ From 46386015a81eaa94a84413bd406c4364a77449e7 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Thu, 19 Apr 2018 16:48:39 +0200 Subject: [PATCH 1009/1070] Fixes #48206 --- src/vs/editor/common/config/commonEditorConfig.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index b898ce6fde7..2ae72c0dd17 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -211,7 +211,7 @@ const editorConfiguration: IConfigurationNode = { nls.localize('lineNumbers.interval', "Line numbers are rendered every 10 lines.") ], 'default': 'on', - 'description': nls.localize('lineNumbers', "Controls the display of line numbers. Possible values are 'on', 'off', 'relative' and 'interval'.") + 'description': nls.localize('lineNumbers', "Controls the display of line numbers.") }, 'editor.rulers': { 'type': 'array', @@ -268,13 +268,13 @@ const editorConfiguration: IConfigurationNode = { 'type': 'string', 'enum': ['left', 'right'], 'default': EDITOR_DEFAULTS.viewInfo.minimap.side, - 'description': nls.localize('minimap.side', "Controls the side where to render the minimap. Possible values are \'right\' and \'left\'") + 'description': nls.localize('minimap.side', "Controls the side where to render the minimap.") }, 'editor.minimap.showSlider': { 'type': 'string', 'enum': ['always', 'mouseover'], 'default': EDITOR_DEFAULTS.viewInfo.minimap.showSlider, - 'description': nls.localize('minimap.showSlider', "Controls whether the minimap slider is automatically hidden. Possible values are \'always\' and \'mouseover\'") + 'description': nls.localize('minimap.showSlider', "Controls whether the minimap slider is automatically hidden.") }, 'editor.minimap.renderCharacters': { 'type': 'boolean', @@ -520,7 +520,7 @@ const editorConfiguration: IConfigurationNode = { 'type': 'string', 'enum': ['blink', 'smooth', 'phase', 'expand', 'solid'], 'default': editorOptions.blinkingStyleToString(EDITOR_DEFAULTS.viewInfo.cursorBlinking), - 'description': nls.localize('cursorBlinking', "Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'") + 'description': nls.localize('cursorBlinking', "Control the cursor animation style.") }, 'editor.mouseWheelZoom': { 'type': 'boolean', From db9cddaa6eef3309ea28990fe1931de10ddd48dd Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 17:27:40 +0200 Subject: [PATCH 1010/1070] explorer: do not allow to creatae a new file / folder while in the process of creating a new file fixes #47606 --- src/vs/workbench/parts/files/common/explorerModel.ts | 3 ++- src/vs/workbench/parts/files/electron-browser/fileActions.ts | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index 7b5493dfb3b..df76d082ac3 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -378,13 +378,14 @@ export class ExplorerItem { /* A helper that can be used to show a placeholder when creating a new stat */ export class NewStatPlaceholder extends ExplorerItem { + public static NAME = ''; private static ID = 0; private id: number; private directoryPlaceholder: boolean; constructor(isDirectory: boolean, root: ExplorerItem) { - super(URI.file(''), root, false, false, ''); + super(URI.file(''), root, false, false, NewStatPlaceholder.NAME); this.id = NewStatPlaceholder.ID++; this.isDirectoryResolved = isDirectory; diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 88358fa7f22..93d95cffa90 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -391,6 +391,10 @@ export class BaseNewAction extends BaseFileAction { if (!folder) { return TPromise.wrapError(new Error('Invalid parent folder to create.')); } + if (!!folder.getChild(NewStatPlaceholder.NAME)) { + // Do not allow to creatae a new file/folder while in the process of creating a new file/folder #47606 + return TPromise.as(new Error('Parent folder is already in the process of creating a file')); + } return this.tree.reveal(folder, 0.5).then(() => { return this.tree.expand(folder).then(() => { From 2ad75aa47bb4ff53c13acf28491c86ac5e1db554 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 18:12:56 +0200 Subject: [PATCH 1011/1070] Fix #48179 --- .../browser/parts/views/panelViewlet.ts | 31 +++++++++++++------ .../browser/parts/views/viewsViewlet.ts | 28 ++++++++++------- .../parts/debug/browser/debugViewlet.ts | 28 ++++++++++------- .../parts/scm/electron-browser/scmViewlet.ts | 12 +++---- 4 files changed, 60 insertions(+), 39 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/panelViewlet.ts b/src/vs/workbench/browser/parts/views/panelViewlet.ts index bd6e9fac431..76656e42490 100644 --- a/src/vs/workbench/browser/parts/views/panelViewlet.ts +++ b/src/vs/workbench/browser/parts/views/panelViewlet.ts @@ -247,7 +247,20 @@ export class PanelViewlet extends Viewlet { return Math.max(...sizes); } - addPanel(panel: ViewletPanel, size: number, index = this.panelItems.length - 1): void { + addPanels(panels: { panel: ViewletPanel, size: number, index?: number }[]): void { + const wasSingleView = this.isSingleView(); + + for (const { panel, size, index } of panels) { + this.addPanel(panel, size, index); + } + + this.updateViewHeaders(); + if (this.isSingleView() !== wasSingleView) { + this.updateTitleArea(); + } + } + + private addPanel(panel: ViewletPanel, size: number, index = this.panelItems.length - 1): void { const disposables: IDisposable[] = []; const onDidFocus = panel.onDidFocus(() => this.lastFocusedPanel = panel, null, disposables); const onDidChange = panel.onDidChange(() => { @@ -265,17 +278,22 @@ export class PanelViewlet extends Viewlet { const disposable = combinedDisposable([onDidFocus, panelStyler, onDidChange]); const panelItem: IViewletPanelItem = { panel, disposable }; - const wasSingleView = this.isSingleView(); this.panelItems.splice(index, 0, panelItem); this.panelview.addPanel(panel, size, index); + } + + removePanels(panels: ViewletPanel[]): void { + const wasSingleView = this.isSingleView(); + + panels.forEach(panel => this.removePanel(panel)); this.updateViewHeaders(); - if (this.isSingleView() !== wasSingleView) { + if (wasSingleView !== this.isSingleView()) { this.updateTitleArea(); } } - removePanel(panel: ViewletPanel): void { + private removePanel(panel: ViewletPanel): void { const index = firstIndex(this.panelItems, i => i.panel === panel); if (index === -1) { @@ -286,15 +304,10 @@ export class PanelViewlet extends Viewlet { this.lastFocusedPanel = undefined; } - const wasSingleView = this.isSingleView(); this.panelview.removePanel(panel); const [panelItem] = this.panelItems.splice(index, 1); panelItem.disposable.dispose(); - this.updateViewHeaders(); - if (wasSingleView !== this.isSingleView()) { - this.updateTitleArea(); - } } movePanel(from: ViewletPanel, to: ViewletPanel): void { diff --git a/src/vs/workbench/browser/parts/views/viewsViewlet.ts b/src/vs/workbench/browser/parts/views/viewsViewlet.ts index b6ab9b7a7bd..18f58d76c88 100644 --- a/src/vs/workbench/browser/parts/views/viewsViewlet.ts +++ b/src/vs/workbench/browser/parts/views/viewsViewlet.ts @@ -370,14 +370,15 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet { this.snapshotViewsStates(); if (toRemove.length) { - for (const viewDescriptor of toRemove) { - let view = this.getView(viewDescriptor.id); - this.removePanel(view); - this.viewsViewletPanels.splice(this.viewsViewletPanels.indexOf(view), 1); - view.dispose(); + const panelsToRemove: ViewsViewletPanel[] = toRemove.map(viewDescriptor => this.getView(viewDescriptor.id)); + this.removePanels(panelsToRemove); + for (const panel of panelsToRemove) { + this.viewsViewletPanels.splice(this.viewsViewletPanels.indexOf(panel), 1); + panel.dispose(); } } + const panelsToAdd: { panel: ViewsViewletPanel, size: number, index: number }[] = []; for (const viewDescriptor of toAdd) { let viewState = this.viewsStates.get(viewDescriptor.id); let index = visible.indexOf(viewDescriptor); @@ -392,8 +393,13 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet { toCreate.push(view); const size = (viewState && viewState.size) || 200; - this.addPanel(view, size, index); - this.viewsViewletPanels.splice(index, 0, view); + panelsToAdd.push({ panel: view, size, index }); + } + + this.addPanels(panelsToAdd); + + for (const { panel, index } of panelsToAdd) { + this.viewsViewletPanels.splice(index, 0, panel); } return TPromise.join(toCreate.map(view => view.create())) @@ -545,18 +551,16 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet { } if (ViewLocation.get(this.location.id)) { - let visibleViewsCount = 0; - if (this.areExtensionsReady) { - visibleViewsCount = this.getViewDescriptorsFromRegistry().reduce((visibleViewsCount, v) => visibleViewsCount + (this.canBeVisible(v) ? 1 : 0), 0); - } else { + if (!this.areExtensionsReady) { + let visibleViewsCount = 0; // Check in cache so that view do not jump. See #29609 this.viewsStates.forEach((viewState, id) => { if (!viewState.isHidden) { visibleViewsCount++; } }); + return visibleViewsCount === 1; } - return visibleViewsCount === 1; } return super.isSingleView(); diff --git a/src/vs/workbench/parts/debug/browser/debugViewlet.ts b/src/vs/workbench/parts/debug/browser/debugViewlet.ts index 5470e587f06..35ee37d8769 100644 --- a/src/vs/workbench/parts/debug/browser/debugViewlet.ts +++ b/src/vs/workbench/parts/debug/browser/debugViewlet.ts @@ -109,22 +109,26 @@ export class DebugViewlet extends PersistentViewsViewlet { } } - addPanel(panel: ViewsViewletPanel, size: number, index?: number): void { - super.addPanel(panel, size, index); + addPanels(panels: { panel: ViewsViewletPanel, size: number, index?: number }[]): void { + super.addPanels(panels); - // attach event listener to - if (panel.id === BREAKPOINTS_VIEW_ID) { - this.breakpointView = panel; - this.updateBreakpointsMaxSize(); - } else { - this.panelListeners.set(panel.id, panel.onDidChange(() => this.updateBreakpointsMaxSize())); + for (const { panel } of panels) { + // attach event listener to + if (panel.id === BREAKPOINTS_VIEW_ID) { + this.breakpointView = panel; + this.updateBreakpointsMaxSize(); + } else { + this.panelListeners.set(panel.id, panel.onDidChange(() => this.updateBreakpointsMaxSize())); + } } } - removePanel(panel: ViewsViewletPanel): void { - super.removePanel(panel); - dispose(this.panelListeners.get(panel.id)); - this.panelListeners.delete(panel.id); + removePanels(panels: ViewsViewletPanel[]): void { + super.removePanels(panels); + for (const panel of panels) { + dispose(this.panelListeners.get(panel.id)); + this.panelListeners.delete(panel.id); + } } private updateBreakpointsMaxSize(): void { diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 24668ee7847..51dadcef081 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -1163,13 +1163,13 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { if (shouldMainPanelBeVisible) { this.mainPanel = this.instantiationService.createInstance(MainPanel, this); - this.addPanel(this.mainPanel, this.mainPanel.minimumSize, 0); + this.addPanels([{ panel: this.mainPanel, size: this.mainPanel.minimumSize, index: 0 }]); const selectionChangeDisposable = this.mainPanel.onSelectionChange(this.onSelectionChange, this); this.onSelectionChange(this.mainPanel.getSelection()); this.mainPanelDisposable = toDisposable(() => { - this.removePanel(this.mainPanel); + this.removePanels([this.mainPanel]); selectionChangeDisposable.dispose(); this.mainPanel.dispose(); }); @@ -1294,12 +1294,12 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { let index = repositoryPanels.length + (this.mainPanel ? 1 : 0); this.repositoryPanels = [...repositoryPanels, ...newRepositoryPanels]; newRepositoryPanels.forEach(panel => { - this.addPanel(panel, panel.minimumSize, index++); + this.addPanels([{ panel, size: panel.minimumSize, index: index++ }]); panel.repository.focus(); }); // Remove unselected panels - panelsToRemove.forEach(panel => this.removePanel(panel)); + this.removePanels(panelsToRemove); // Restore main panel height if (this.isVisible() && typeof this.cachedMainPanelHeight === 'number') { @@ -1350,7 +1350,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { viewletSettings: {} // what is this }) as ViewsViewletPanel; - this.addPanel(panel, size || panel.minimumSize, start + index); + this.addPanels([{ panel, size: size || panel.minimumSize, index: start + index }]); const contextMenuDisposable = addDisposableListener(panel.draggableElement, 'contextmenu', e => { e.stopPropagation(); @@ -1409,7 +1409,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { const start = this.getContributedViewsStartIndex(); const panel = this.panels[start + index]; - this.removePanel(panel); + this.removePanels([panel]); const [disposable] = this.contributedViewDisposables.splice(index, 1); disposable.dispose(); From 6c3cb56e490bbaddc75acfd3bd0953b1550bcbb7 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 18:14:33 +0200 Subject: [PATCH 1012/1070] don't count already resolved items, #44846 --- src/vs/editor/contrib/codelens/codelens.ts | 2 +- .../test/electron-browser/api/extHostApiCommands.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/codelens/codelens.ts b/src/vs/editor/contrib/codelens/codelens.ts index 3f80ac5442a..92821ec5ee6 100644 --- a/src/vs/editor/contrib/codelens/codelens.ts +++ b/src/vs/editor/contrib/codelens/codelens.ts @@ -75,7 +75,7 @@ registerLanguageCommand('_executeCodeLensProvider', function (accessor, args) { let resolve: Thenable<any>[] = []; for (const item of value) { - if (typeof itemResolveCount === 'undefined') { + if (typeof itemResolveCount === 'undefined' || Boolean(item.symbol.command)) { result.push(item.symbol); } else if (itemResolveCount-- > 0) { resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol))); diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index b9a820e8e5b..4801ffcda53 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -544,7 +544,7 @@ suite('ExtHostLanguageFeatureCommands', function () { new types.CodeLens(new types.Range(0, 0, 1, 1)), new types.CodeLens(new types.Range(0, 0, 1, 1)), new types.CodeLens(new types.Range(0, 0, 1, 1)), - new types.CodeLens(new types.Range(0, 0, 1, 1)) + new types.CodeLens(new types.Range(0, 0, 1, 1), { title: 'Already resolved', command: 'fff' }) ]; }, resolveCodeLens(codeLens: types.CodeLens) { @@ -558,7 +558,7 @@ suite('ExtHostLanguageFeatureCommands', function () { let value = await commands.executeCommand<vscode.CodeLens[]>('vscode.executeCodeLensProvider', model.uri, 2); - assert.equal(value.length, 2); // the resolve argument defines the number of results being returned + assert.equal(value.length, 3); // the resolve argument defines the number of results being returned assert.equal(resolveCount, 2); resolveCount = 0; From 1c7867152bc49efc304078829892c7fae12259e2 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Thu, 19 Apr 2018 18:25:21 +0200 Subject: [PATCH 1013/1070] fix bad loading root indentation fixes #41696 --- .../parts/files/electron-browser/views/explorerViewer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index c32ade7e82c..7fc664f81c4 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -76,7 +76,7 @@ export class FileDataSource implements IDataSource { } public hasChildren(tree: ITree, stat: ExplorerItem | Model): boolean { - return stat instanceof Model || (stat instanceof ExplorerItem && stat.isDirectory); + return stat instanceof Model || (stat instanceof ExplorerItem && (stat.isDirectory || stat.isRoot)); } public getChildren(tree: ITree, stat: ExplorerItem | Model): TPromise<ExplorerItem[]> { From 8574a05e0fc3bb2415aeb7d233c271ae0780f702 Mon Sep 17 00:00:00 2001 From: Andre Weinand <aweinand@microsoft.com> Date: Thu, 19 Apr 2018 18:24:50 +0200 Subject: [PATCH 1014/1070] support configResolver in EH --- .../mainThreadDebugService.ts | 5 + src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHost.protocol.ts | 1 + .../workbench/api/node/extHostDebugService.ts | 100 +++++- src/vs/workbench/parts/debug/common/debug.ts | 26 +- .../debugConfigurationManager.ts | 60 +--- .../debug/electron-browser/debugService.ts | 25 +- .../parts/debug/node/debugAdapter.ts | 26 +- src/vs/workbench/parts/debug/node/debugger.ts | 24 +- .../parts/debug/test/node/debugger.test.ts | 2 +- .../configurationResolverService.ts | 289 ++++-------------- .../node/variableResolver.ts | 196 ++++++++++++ .../configurationResolverService.test.ts | 29 +- 13 files changed, 468 insertions(+), 317 deletions(-) create mode 100644 src/vs/workbench/services/configurationResolver/node/variableResolver.ts diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index c43140980b6..893b8962517 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -16,6 +16,7 @@ import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostC import severity from 'vs/base/common/severity'; import { AbstractDebugAdapter, convertToVSCPaths, convertToDAPaths } from 'vs/workbench/parts/debug/node/debugAdapter'; import * as paths from 'vs/base/common/paths'; +import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; @extHostNamedCustomer(MainContext.MainThreadDebugService) @@ -66,6 +67,10 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape, IDeb return da; } + substituteVariables(folder: IWorkspaceFolder, config: IConfig): TPromise<IConfig> { + return this._proxy.$substituteVariables(folder.uri, config); + } + runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void> { return this._proxy.$runInTerminal(args, config); } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 4c5cce2c9db..a4a7b247fce 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -107,7 +107,7 @@ export function createApiFactory( const extHostCommands = rpcProtocol.set(ExtHostContext.ExtHostCommands, new ExtHostCommands(rpcProtocol, extHostHeapService, extHostLogService)); const extHostTreeViews = rpcProtocol.set(ExtHostContext.ExtHostTreeViews, new ExtHostTreeViews(rpcProtocol.getProxy(MainContext.MainThreadTreeViews), extHostCommands)); rpcProtocol.set(ExtHostContext.ExtHostWorkspace, extHostWorkspace); - const extHostDebugService = rpcProtocol.set(ExtHostContext.ExtHostDebugService, new ExtHostDebugService(rpcProtocol, extHostWorkspace, extensionService)); + const extHostDebugService = rpcProtocol.set(ExtHostContext.ExtHostDebugService, new ExtHostDebugService(rpcProtocol, extHostWorkspace, extensionService, extHostDocumentsAndEditors, extHostConfiguration)); rpcProtocol.set(ExtHostContext.ExtHostConfiguration, extHostConfiguration); const extHostDiagnostics = rpcProtocol.set(ExtHostContext.ExtHostDiagnostics, new ExtHostDiagnostics(rpcProtocol)); const extHostLanguageFeatures = rpcProtocol.set(ExtHostContext.ExtHostLanguageFeatures, new ExtHostLanguageFeatures(rpcProtocol, null, extHostDocuments, extHostCommands, extHostHeapService, extHostDiagnostics)); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 6bd721a9ec9..7e1410d4de1 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -790,6 +790,7 @@ export interface ISourceMultiBreakpointDto { } export interface ExtHostDebugServiceShape { + $substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>; $runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>; $startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null): TPromise<void>; $stopDASession(handle: number): TPromise<void>; diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index 7e7a0fe405b..c8b29476bb2 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -4,6 +4,9 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; +import * as paths from 'vs/base/common/paths'; +import { Schemas } from 'vs/base/common/network'; +import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { Event, Emitter } from 'vs/base/common/event'; import { asWinJsPromise } from 'vs/base/common/async'; @@ -11,16 +14,20 @@ import { MainContext, MainThreadDebugServiceShape, ExtHostDebugServiceShape, DebugSessionUUID, IMainContext, IBreakpointsDeltaDto, ISourceMultiBreakpointDto, IFunctionBreakpointDto } from 'vs/workbench/api/node/extHost.protocol'; -import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; import * as vscode from 'vscode'; -import URI, { UriComponents } from 'vs/base/common/uri'; import { Disposable, Position, Location, SourceBreakpoint, FunctionBreakpoint } from 'vs/workbench/api/node/extHostTypes'; import { generateUuid } from 'vs/base/common/uuid'; import { DebugAdapter, convertToVSCPaths, convertToDAPaths } from 'vs/workbench/parts/debug/node/debugAdapter'; -import * as paths from 'vs/base/common/paths'; +import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService'; -import { IAdapterExecutable, ITerminalSettings, IDebuggerContribution } from 'vs/workbench/parts/debug/common/debug'; +import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/node/extHostDocumentsAndEditors'; +import { IAdapterExecutable, ITerminalSettings, IDebuggerContribution, IConfig } from 'vs/workbench/parts/debug/common/debug'; import { getTerminalLauncher } from 'vs/workbench/parts/debug/node/terminals'; +import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; +import { VariableResolver } from 'vs/workbench/services/configurationResolver/node/variableResolver'; +import { IConfigurationResolverService } from '../../services/configurationResolver/common/configurationResolver'; +import { IStringDictionary } from 'vs/base/common/collections'; +import { ExtHostConfiguration } from './extHostConfiguration'; export class ExtHostDebugService implements ExtHostDebugServiceShape { @@ -56,8 +63,15 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { private _debugAdapters: Map<number, DebugAdapter>; + private _variableResolver: IConfigurationResolverService; - constructor(mainContext: IMainContext, private _workspace: ExtHostWorkspace, private _extensionService: ExtHostExtensionService) { + + constructor(mainContext: IMainContext, + private _workspace: ExtHostWorkspace, + private _extensionService: ExtHostExtensionService, + private _editorsService: ExtHostDocumentsAndEditors, + private _configurationService: ExtHostConfiguration + ) { this._handleCounter = 0; this._handlers = new Map<number, vscode.DebugConfigurationProvider>(); @@ -110,6 +124,14 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { return void 0; } + public $substituteVariables(folderUri: UriComponents | undefined, config: IConfig): TPromise<IConfig> { + if (!this._variableResolver) { + this._variableResolver = new ExtHostVariableResolverService(this._workspace, this._editorsService, this._configurationService); + } + const folder = <IWorkspaceFolder>this.getFolder(folderUri); + return asWinJsPromise(token => DebugAdapter.substituteVariables(folder, config, this._variableResolver)); + } + public $startDASession(handle: number, debugType: string, adpaterExecutable: IAdapterExecutable | null): TPromise<void> { const mythis = this; @@ -503,3 +525,71 @@ export class ExtHostDebugConsole implements vscode.DebugConsole { this.append(value + '\n'); } } + +class ExtHostVariableResolverService implements IConfigurationResolverService { + + _serviceBrand: any; + _variableResolver: VariableResolver; + + constructor(workspace: ExtHostWorkspace, editors: ExtHostDocumentsAndEditors, configuration: ExtHostConfiguration) { + this._variableResolver = new VariableResolver({ + getFolderUri: (folderName: string): URI => { + const folders = workspace.getWorkspaceFolders(); + const found = folders.filter(f => f.name === folderName); + if (found && found.length > 0) { + return found[0].uri; + } + return undefined; + }, + getWorkspaceFolderCount: (): number => { + return workspace.getWorkspaceFolders().length; + }, + getConfigurationValue: (folderUri: URI, section: string) => { + return configuration.getConfiguration(undefined, folderUri).get<string>(section); + }, + getEnvironmentService: (name: string): string => { + return undefined; + }, + getFilePath: (): string | undefined => { + const activeEditor = editors.activeEditor(); + if (activeEditor) { + const resource = activeEditor.document.uri; + if (resource.scheme === Schemas.file) { + return paths.normalize(resource.fsPath, true); + } + } + return undefined; + }, + getSelectedText: (): string | undefined => { + debugger; + const activeEditor = editors.activeEditor(); + if (activeEditor && !activeEditor.selection.isEmpty) { + return activeEditor.document.getText(activeEditor.selection); + } + return undefined; + }, + getLineNumber: (): string => { + const activeEditor = editors.activeEditor(); + if (activeEditor) { + return String(activeEditor.selection.end.line + 1); + } + return undefined; + } + }, process.env); + } + + public resolve(root: IWorkspaceFolder, value: string): string; + public resolve(root: IWorkspaceFolder, value: string[]): string[]; + public resolve(root: IWorkspaceFolder, value: IStringDictionary<string>): IStringDictionary<string>; + public resolve(root: IWorkspaceFolder, value: any): any { + return this._variableResolver.resolveAny(root ? root.uri : undefined, value); + } + + public resolveAny(root: IWorkspaceFolder, value: any): any { + return this._variableResolver.resolveAny(root ? root.uri : undefined, value); + } + + resolveInteractiveVariables(configuration: any, interactiveVariablesMap: { [key: string]: string; }): TPromise<any, any> { + throw new Error('Method not implemented.'); + } +} \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index 6477133f88a..566acd9d9af 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -360,23 +360,29 @@ export interface IGlobalConfig { } export interface IEnvConfig { - name?: string; - type: string; - request: string; internalConsoleOptions?: 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart'; preLaunchTask?: string; postDebugTask?: string; - __restart?: any; - __sessionId?: string; debugServer?: number; noDebug?: boolean; - port?: number; } export interface IConfig extends IEnvConfig { + + // fundamental attributes + type: string; + request: string; + name?: string; + + // platform specifics windows?: IEnvConfig; osx?: IEnvConfig; linux?: IEnvConfig; + + // internals + __sessionId?: string; + __restart?: any; + port?: number; // TODO } export interface ICompound { @@ -398,6 +404,7 @@ export interface IDebugAdapter extends IDisposable { export interface IDebugAdapterProvider extends ITerminalLauncher { createDebugAdapter(debugType: string, adapterInfo: IAdapterExecutable | null): IDebugAdapter; + substituteVariables(folder: IWorkspaceFolder, config: IConfig): TPromise<IConfig>; } export interface IAdapterExecutable { @@ -497,6 +504,7 @@ export interface IConfigurationManager { registerDebugAdapterProvider(debugTypes: string[], debugAdapterLauncher: IDebugAdapterProvider): IDisposable; createDebugAdapter(debugType: string, adapterExecutable: IAdapterExecutable | null): IDebugAdapter | undefined; + substituteVariables(debugType: string, folder: IWorkspaceFolder, config: IConfig): TPromise<IConfig>; runInTerminal(debugType: string, args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>; } @@ -540,12 +548,6 @@ export interface ILaunch { */ getConfigurationNames(includeCompounds?: boolean): string[]; - /** - * Returns the resolved configuration. - * Replaces os specific values, system variables, interactive variables. - */ - substituteVariables(config: IConfig): TPromise<IConfig>; - /** * Opens the launch.json file. Creates if it does not exist. */ diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index 72681ca18a1..1428ee55ed1 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -8,7 +8,6 @@ import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; import { TPromise } from 'vs/base/common/winjs.base'; import * as strings from 'vs/base/common/strings'; -import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; import * as objects from 'vs/base/common/objects'; import uri from 'vs/base/common/uri'; import * as paths from 'vs/base/common/paths'; @@ -26,7 +25,7 @@ import { IFileService } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ICommandService } from 'vs/platform/commands/common/commands'; -import { IDebugConfigurationProvider, IDebuggerContribution, ICompound, IDebugConfiguration, IConfig, IEnvConfig, IGlobalConfig, IConfigurationManager, ILaunch, IAdapterExecutable, IDebugAdapterProvider, IDebugAdapter, ITerminalSettings, ITerminalLauncher } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugConfigurationProvider, IDebuggerContribution, ICompound, IDebugConfiguration, IConfig, IGlobalConfig, IConfigurationManager, ILaunch, IAdapterExecutable, IDebugAdapterProvider, IDebugAdapter, ITerminalSettings, ITerminalLauncher } from 'vs/workbench/parts/debug/common/debug'; import { Debugger } from 'vs/workbench/parts/debug/node/debugger'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; @@ -242,7 +241,8 @@ export class ConfigurationManager implements IConfigurationManager { @IInstantiationService private instantiationService: IInstantiationService, @ICommandService private commandService: ICommandService, @IStorageService private storageService: IStorageService, - @ILifecycleService lifecycleService: ILifecycleService + @ILifecycleService lifecycleService: ILifecycleService, + @IConfigurationResolverService private configurationResolverService: IConfigurationResolverService ) { this.providers = []; this.debuggers = []; @@ -326,6 +326,14 @@ export class ConfigurationManager implements IConfigurationManager { return undefined; } + public substituteVariables(debugType: string, folder: IWorkspaceFolder, config: IConfig): TPromise<IConfig> { + let dap = this.getDebugAdapterProvider(debugType); + if (dap) { + return dap.substituteVariables(folder, config); + } + return TPromise.as(config); + } + public runInTerminal(debugType: string, args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void> { let tl: ITerminalLauncher = this.getDebugAdapterProvider(debugType); @@ -355,7 +363,7 @@ export class ConfigurationManager implements IConfigurationManager { if (duplicate) { duplicate.merge(rawAdapter, extension.description); } else { - this.debuggers.push(new Debugger(this, rawAdapter, extension.description, this.configurationService, this.commandService)); + this.debuggers.push(new Debugger(this, rawAdapter, extension.description, this.configurationService, this.commandService, this.configurationResolverService)); } }); }); @@ -548,7 +556,6 @@ class Launch implements ILaunch { @IFileService private fileService: IFileService, @IWorkbenchEditorService protected editorService: IWorkbenchEditorService, @IConfigurationService protected configurationService: IConfigurationService, - @IConfigurationResolverService private configurationResolverService: IConfigurationResolverService, @IWorkspaceContextService protected contextService: IWorkspaceContextService, @IExtensionService private extensionService: IExtensionService ) { @@ -607,45 +614,6 @@ class Launch implements ILaunch { return config.configurations.filter(config => config && config.name === name).shift(); } - protected getWorkspaceForResolving(): IWorkspaceFolder { - if (this.workspace) { - return this.workspace; - } - - if (this.contextService.getWorkspace().folders.length === 1) { - return this.contextService.getWorkspace().folders[0]; - } - - return undefined; - } - - public substituteVariables(config: IConfig): TPromise<IConfig> { - const result = objects.deepClone(config) as IConfig; - // Set operating system specific properties #1873 - const setOSProperties = (flag: boolean, osConfig: IEnvConfig) => { - if (flag && osConfig) { - Object.keys(osConfig).forEach(key => { - result[key] = osConfig[key]; - }); - } - }; - setOSProperties(isWindows, result.windows); - setOSProperties(isMacintosh, result.osx); - setOSProperties(isLinux, result.linux); - - // massage configuration attributes - append workspace path to relatvie paths, substitute variables in paths. - try { - Object.keys(result).forEach(key => { - result[key] = this.configurationResolverService.resolveAny(this.getWorkspaceForResolving(), result[key]); - }); - } catch (e) { - return TPromise.wrapError(e); - } - - const adapter = this.configurationManager.getDebugger(result.type); - return this.configurationResolverService.resolveInteractiveVariables(result, adapter ? adapter.variables : null); - } - public openConfigFile(sideBySide: boolean, type?: string): TPromise<IEditor> { return this.extensionService.activateByEvent('onDebugInitialConfigurations').then(() => this.extensionService.activateByEvent('onDebug').then(() => { const resource = this.uri; @@ -715,7 +683,7 @@ class WorkspaceLaunch extends Launch implements ILaunch { @IWorkspaceContextService contextService: IWorkspaceContextService, @IExtensionService extensionService: IExtensionService ) { - super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService, extensionService); + super(configurationManager, undefined, fileService, editorService, configurationService, contextService, extensionService); } get uri(): uri { @@ -747,7 +715,7 @@ class UserLaunch extends Launch implements ILaunch { @IWorkspaceContextService contextService: IWorkspaceContextService, @IExtensionService extensionService: IExtensionService ) { - super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService, extensionService); + super(configurationManager, undefined, fileService, editorService, configurationService, contextService, extensionService); } get uri(): uri { diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 0987dbaca10..afa634c5d1c 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -784,9 +784,32 @@ export class DebugService implements debug.IDebugService { }); } + private substituteVariables(launch: debug.ILaunch, config: debug.IConfig): TPromise<debug.IConfig> { + const dbg = this.configurationManager.getDebugger(config.type); + if (dbg) { + let folder: IWorkspaceFolder = undefined; + if (launch.workspace) { + folder = launch.workspace; + } else { + const folders = this.contextService.getWorkspace().folders; + if (folders.length === 1) { + folder = folders[0]; + } + } + return dbg.substituteVariables(folder, config).then(config => { + return config; + }, (err: Error) => { + this.showError(err.message); + return undefined; // bail out + }); + } + return TPromise.as(config); + } + private createProcess(launch: debug.ILaunch, config: debug.IConfig, sessionId: string): TPromise<void> { return this.textFileService.saveAll().then(() => - (launch ? launch.substituteVariables(config).then(config => config, (err: Error) => this.showError(err.message)) : TPromise.as(config)).then(resolvedConfig => { + this.substituteVariables(launch, config).then(resolvedConfig => { + if (!resolvedConfig) { // User canceled resolving of interactive variables, silently return return undefined; diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index f09c6fadc0e..c74bd1c9e4d 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -17,7 +17,9 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { ExtensionsChannelId } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { IOutputService } from 'vs/workbench/parts/output/common/output'; -import { IDebugAdapter, IAdapterExecutable, IDebuggerContribution, IPlatformSpecificAdapterContribution } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugAdapter, IAdapterExecutable, IDebuggerContribution, IPlatformSpecificAdapterContribution, IConfig } from 'vs/workbench/parts/debug/common/debug'; +import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; +import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; /** * Abstract implementation of the low level API for a debug adapter. @@ -406,6 +408,28 @@ export class DebugAdapter extends StreamDebugAdapter { }; } } + + static substituteVariables(workspaceFolder: IWorkspaceFolder, config: IConfig, resolverService: IConfigurationResolverService): IConfig { + + const result = objects.deepClone(config) as IConfig; + + // hoist platform specific attributes to top level + if (platform.isWindows && result.windows) { + Object.keys(result.windows).forEach(key => result[key] = result.windows[key]); + } else if (platform.isMacintosh && result.osx) { + Object.keys(result.osx).forEach(key => result[key] = result.osx[key]); + } else if (platform.isLinux && result.linux) { + Object.keys(result.linux).forEach(key => result[key] = result.linux[key]); + } + + // delete all platform specific sections + delete result.windows; + delete result.osx; + delete result.linux; + + // substitute all variables in string values + return resolverService.resolveAny(workspaceFolder, result); + } } // path hooks helpers diff --git a/src/vs/workbench/parts/debug/node/debugger.ts b/src/vs/workbench/parts/debug/node/debugger.ts index b3e1907e2ce..e6e1ffed7ab 100644 --- a/src/vs/workbench/parts/debug/node/debugger.ts +++ b/src/vs/workbench/parts/debug/node/debugger.ts @@ -15,6 +15,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ICommandService } from 'vs/platform/commands/common/commands'; import { IOutputService } from 'vs/workbench/parts/output/common/output'; import { DebugAdapter } from 'vs/workbench/parts/debug/node/debugAdapter'; +import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; export class Debugger { @@ -22,7 +23,8 @@ export class Debugger { constructor(private configurationManager: IConfigurationManager, private debuggerContribution: IDebuggerContribution, public extensionDescription: IExtensionDescription, @IConfigurationService private configurationService: IConfigurationService, - @ICommandService private commandService: ICommandService + @ICommandService private commandService: ICommandService, + @IConfigurationResolverService private configurationResolverService: IConfigurationResolverService, ) { this._mergedExtensionDescriptions = [extensionDescription]; } @@ -59,6 +61,26 @@ export class Debugger { }); } + public substituteVariables(folder: IWorkspaceFolder, config: IConfig): TPromise<IConfig> { + + let configP: TPromise<IConfig>; + const debugConfigs = this.configurationService.getValue<IDebugConfiguration>('debug'); + if (debugConfigs.extensionHostDebugAdapter) { + configP = this.configurationManager.substituteVariables(this.type, folder, config); + } else { + try { + configP = TPromise.as(DebugAdapter.substituteVariables(folder, config, this.configurationResolverService)); + } catch (e) { + return TPromise.wrapError(e); + } + } + + return configP.then(result => { + // substitute 'command' variables (including interactive) + return this.configurationResolverService.resolveInteractiveVariables(result, this.variables); + }); + } + public runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments): TPromise<void> { const debugConfigs = this.configurationService.getValue<IDebugConfiguration>('debug'); const config = this.configurationService.getValue<ITerminalSettings>('terminal'); diff --git a/src/vs/workbench/parts/debug/test/node/debugger.test.ts b/src/vs/workbench/parts/debug/test/node/debugger.test.ts index 9e57914a9a9..0e7dadf2ea2 100644 --- a/src/vs/workbench/parts/debug/test/node/debugger.test.ts +++ b/src/vs/workbench/parts/debug/test/node/debugger.test.ts @@ -120,7 +120,7 @@ suite('Debug - Debugger', () => { }; setup(() => { - _debugger = new Debugger(configurationManager, debuggerContribution, extensionDescriptor0, new TestConfigurationService(), null); + _debugger = new Debugger(configurationManager, debuggerContribution, extensionDescriptor0, new TestConfigurationService(), null, null); }); teardown(() => { diff --git a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts index 833a69b8929..26c6ee9cf95 100644 --- a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts +++ b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts @@ -3,10 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import uri from 'vs/base/common/uri'; import * as paths from 'vs/base/common/paths'; -import * as types from 'vs/base/common/types'; +import { Schemas } from 'vs/base/common/network'; import { TPromise } from 'vs/base/common/winjs.base'; import { sequence } from 'vs/base/common/async'; +import { toResource } from 'vs/workbench/common/editor'; import { IStringDictionary } from 'vs/base/common/collections'; import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; @@ -14,210 +16,11 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkspaceFolder, IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { toResource } from 'vs/workbench/common/editor'; -import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; +import { IProcessEnvironment } from 'vs/base/common/platform'; +import { VariableResolver } from 'vs/workbench/services/configurationResolver/node/variableResolver'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { relative } from 'path'; -import { IProcessEnvironment, isWindows } from 'vs/base/common/platform'; -import { normalizeDriveLetter } from 'vs/base/common/labels'; -import { Schemas } from 'vs/base/common/network'; -import { localize } from 'vs/nls'; +import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; -class VariableResolver { - static VARIABLE_REGEXP = /\$\{(.*?)\}/g; - private envVariables: IProcessEnvironment; - - constructor( - envVariables: IProcessEnvironment, - private configurationService: IConfigurationService, - private editorService: IWorkbenchEditorService, - private environmentService: IEnvironmentService, - private workspaceContextService: IWorkspaceContextService - ) { - if (isWindows) { - this.envVariables = Object.create(null); - Object.keys(envVariables).forEach(key => { - this.envVariables[key.toLowerCase()] = envVariables[key]; - }); - } else { - this.envVariables = envVariables; - } - } - - resolve(context: IWorkspaceFolder, value: string): string { - const filePath = this.getFilePath(); - return value.replace(VariableResolver.VARIABLE_REGEXP, (match: string, variable: string) => { - const parts = variable.split(':'); - let sufix: string; - if (parts && parts.length > 1) { - variable = parts[0]; - sufix = parts[1]; - } - - switch (variable) { - case 'env': { - if (sufix) { - if (isWindows) { - sufix = sufix.toLowerCase(); - } - - const env = this.envVariables[sufix]; - if (types.isString(env)) { - return env; - } - - // For `env` we should do the same as a normal shell does - evaluates missing envs to an empty string #46436 - return ''; - } - } - case 'config': { - if (sufix) { - const config = this.configurationService.getValue<string>(sufix, context ? { resource: context.uri } : undefined); - if (!types.isUndefinedOrNull(config) && !types.isObject(config)) { - return config; - } - } - } - default: { - if (sufix) { - const folder = this.workspaceContextService.getWorkspace().folders.filter(f => f.name === sufix).pop(); - if (folder) { - context = folder; - } - } - - switch (variable) { - case 'workspaceRoot': - case 'workspaceFolder': { - if (context) { - return normalizeDriveLetter(context.uri.fsPath); - } - if (this.workspaceContextService.getWorkspace().folders.length > 1) { - throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'${workspaceFolder}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.")); - } - - throw new Error(localize('canNotResolveWorkspaceFolder', "'${workspaceFolder}' can not be resolved. Please open a folder.")); - } case 'cwd': - return context ? normalizeDriveLetter(context.uri.fsPath) : process.cwd(); - case 'workspaceRootFolderName': - case 'workspaceFolderBasename': { - if (context) { - return paths.basename(context.uri.fsPath); - } - if (this.workspaceContextService.getWorkspace().folders.length > 1) { - throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "'${workspaceFolderBasename}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.")); - } - - throw new Error(localize('canNotResolveFolderBasename', "'${workspaceFolderBasename}' can not be resolved. Please open a folder.")); - } case 'lineNumber': { - const lineNumber = this.getLineNumber(); - if (lineNumber) { - return lineNumber; - } - - throw new Error(localize('canNotResolveLineNumber', "'${lineNumber}' can not be resolved. Please open an editor.")); - } case 'selectedText': { - const selectedText = this.getSelectedText(); - if (selectedText) { - return selectedText; - } - - throw new Error(localize('canNotResolveSelectedText', "'${selectedText}' can not be resolved. Please open an editor.")); - } case 'file': { - if (filePath) { - return filePath; - } - - throw new Error(localize('canNotResolveFile', "'${file}' can not be resolved. Please open an editor.")); - } case 'relativeFile': { - if (context && filePath) { - return paths.normalize(relative(context.uri.fsPath, filePath)); - } - if (filePath) { - return filePath; - } - - throw new Error(localize('canNotResolveRelativeFile', "'${relativeFile}' can not be resolved. Please open an editor.")); - } case 'fileDirname': { - if (filePath) { - return paths.dirname(filePath); - } - - throw new Error(localize('canNotResolveFileDirname', "'${fileDirname}' can not be resolved. Please open an editor.")); - } case 'fileExtname': { - if (filePath) { - return paths.extname(filePath); - } - - throw new Error(localize('canNotResolveFileExtname', "'${fileExtname}' can not be resolved. Please open an editor.")); - } case 'fileBasename': { - if (filePath) { - return paths.basename(filePath); - } - - throw new Error(localize('canNotResolveFileBasename', "'${fileBasename}' can not be resolved. Please open an editor.")); - } case 'fileBasenameNoExtension': { - if (filePath) { - const basename = paths.basename(filePath); - return basename.slice(0, basename.length - paths.extname(basename).length); - } - - throw new Error(localize('canNotResolveFileBasenameNoExtension', "'${fileBasenameNoExtension}' can not be resolved. Please open an editor.")); - } - case 'execPath': - return this.environmentService.execPath; - - default: - return match; - } - } - } - }); - } - - private getSelectedText(): string { - const activeEditor = this.editorService.getActiveEditor(); - if (activeEditor) { - const editorControl = (<ICodeEditor>activeEditor.getControl()); - if (editorControl) { - const editorModel = editorControl.getModel(); - const editorSelection = editorControl.getSelection(); - if (editorModel && editorSelection) { - return editorModel.getValueInRange(editorSelection); - } - } - } - - return undefined; - } - - private getFilePath(): string { - let input = this.editorService.getActiveEditorInput(); - if (input instanceof DiffEditorInput) { - input = input.modifiedInput; - } - - const fileResource = toResource(input, { filter: Schemas.file }); - if (!fileResource) { - return undefined; - } - - return paths.normalize(fileResource.fsPath, true); - } - - private getLineNumber(): string { - const activeEditor = this.editorService.getActiveEditor(); - if (activeEditor) { - const editorControl = (<ICodeEditor>activeEditor.getControl()); - if (editorControl) { - const lineNumber = editorControl.getSelection().positionLineNumber; - return String(lineNumber); - } - } - - return undefined; - } -} export class ConfigurationResolverService implements IConfigurationResolverService { _serviceBrand: any; @@ -231,42 +34,68 @@ export class ConfigurationResolverService implements IConfigurationResolverServi @ICommandService private commandService: ICommandService, @IWorkspaceContextService workspaceContextService: IWorkspaceContextService ) { - this.resolver = new VariableResolver(envVariables, configurationService, editorService, environmentService, workspaceContextService); + this.resolver = new VariableResolver({ + getFolderUri: (folderName: string): uri => { + const folder = workspaceContextService.getWorkspace().folders.filter(f => f.name === folderName).pop(); + return folder ? folder.uri : undefined; + }, + getWorkspaceFolderCount: (): number => { + return workspaceContextService.getWorkspace().folders.length; + }, + getConfigurationValue: (folderUri: uri, suffix: string) => { + return configurationService.getValue<string>(suffix, folderUri ? { resource: folderUri } : undefined); + }, + getEnvironmentService: (name: string) => { + return environmentService[name]; + }, + getFilePath: (): string | undefined => { + let input = editorService.getActiveEditorInput(); + if (input instanceof DiffEditorInput) { + input = input.modifiedInput; + } + const fileResource = toResource(input, { filter: Schemas.file }); + if (!fileResource) { + return undefined; + } + return paths.normalize(fileResource.fsPath, true); + }, + getSelectedText: (): string | undefined => { + const activeEditor = editorService.getActiveEditor(); + if (activeEditor) { + const editorControl = (<ICodeEditor>activeEditor.getControl()); + if (editorControl) { + const editorModel = editorControl.getModel(); + const editorSelection = editorControl.getSelection(); + if (editorModel && editorSelection) { + return editorModel.getValueInRange(editorSelection); + } + } + } + return undefined; + }, + getLineNumber: (): string => { + const activeEditor = editorService.getActiveEditor(); + if (activeEditor) { + const editorControl = (<ICodeEditor>activeEditor.getControl()); + if (editorControl) { + const lineNumber = editorControl.getSelection().positionLineNumber; + return String(lineNumber); + } + } + return undefined; + } + }, envVariables); } public resolve(root: IWorkspaceFolder, value: string): string; public resolve(root: IWorkspaceFolder, value: string[]): string[]; public resolve(root: IWorkspaceFolder, value: IStringDictionary<string>): IStringDictionary<string>; public resolve(root: IWorkspaceFolder, value: any): any { - if (types.isString(value)) { - return this.resolver.resolve(root, value); - } else if (types.isArray(value)) { - return value.map(s => this.resolver.resolve(root, s)); - } else if (types.isObject(value)) { - let result: IStringDictionary<string | IStringDictionary<string> | string[]> = Object.create(null); - Object.keys(value).forEach(key => { - result[key] = this.resolve(root, value[key]); - }); - - return result; - } - return value; + return this.resolver.resolveAny(root ? root.uri : undefined, value); } public resolveAny(root: IWorkspaceFolder, value: any): any { - if (types.isString(value)) { - return this.resolver.resolve(root, value); - } else if (types.isArray(value)) { - return value.map(s => this.resolveAny(root, s)); - } else if (types.isObject(value)) { - let result: IStringDictionary<string | IStringDictionary<string> | string[]> = Object.create(null); - Object.keys(value).forEach(key => { - result[key] = this.resolveAny(root, value[key]); - }); - - return result; - } - return value; + return this.resolver.resolveAny(root ? root.uri : undefined, value); } /** diff --git a/src/vs/workbench/services/configurationResolver/node/variableResolver.ts b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts new file mode 100644 index 00000000000..edc0d4c0752 --- /dev/null +++ b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts @@ -0,0 +1,196 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as paths from 'vs/base/common/paths'; +import * as types from 'vs/base/common/types'; +import { IStringDictionary } from 'vs/base/common/collections'; +import { relative } from 'path'; +import { IProcessEnvironment, isWindows } from 'vs/base/common/platform'; +import { normalizeDriveLetter } from 'vs/base/common/labels'; +import { localize } from 'vs/nls'; +import uri from 'vs/base/common/uri'; + + +export interface IVariableAccessor { + getFolderUri(folderName: string): uri | undefined; + getWorkspaceFolderCount(): number; + getConfigurationValue(folderUri: uri, section: string): string | undefined; + getEnvironmentService(name: string): string | undefined; + getFilePath(): string | undefined; + getSelectedText(): string | undefined; + getLineNumber(): string; +} + +export class VariableResolver { + + static VARIABLE_REGEXP = /\$\{(.*?)\}/g; + + private envVariables: IProcessEnvironment; + + constructor( + private accessor: IVariableAccessor, + envVariables: IProcessEnvironment + ) { + if (isWindows) { + this.envVariables = Object.create(null); + Object.keys(envVariables).forEach(key => { + this.envVariables[key.toLowerCase()] = envVariables[key]; + }); + } else { + this.envVariables = envVariables; + } + } + + resolveAny(folderUri: uri, value: any): any { + if (types.isString(value)) { + return this.resolve(folderUri, value); + } else if (types.isArray(value)) { + return value.map(s => this.resolveAny(folderUri, s)); + } else if (types.isObject(value)) { + let result: IStringDictionary<string | IStringDictionary<string> | string[]> = Object.create(null); + Object.keys(value).forEach(key => { + result[key] = this.resolveAny(folderUri, value[key]); + }); + return result; + } + return value; + } + + resolve(folderUri: uri, value: string): string { + + const filePath = this.accessor.getFilePath(); + + return value.replace(VariableResolver.VARIABLE_REGEXP, (match: string, variable: string) => { + + let argument: string; + const parts = variable.split(':'); + if (parts && parts.length > 1) { + variable = parts[0]; + argument = parts[1]; + } + + switch (variable) { + case 'env': + if (argument) { + if (isWindows) { + argument = argument.toLowerCase(); + } + const env = this.envVariables[argument]; + if (types.isString(env)) { + return env; + } + // For `env` we should do the same as a normal shell does - evaluates missing envs to an empty string #46436 + return ''; + } + throw new Error(localize('missingEnvVarName', "'{0}' can not be resolved because no environment variable is given.", match)); + + case 'config': + if (argument) { + const config = this.accessor.getConfigurationValue(folderUri, argument); + if (!types.isUndefinedOrNull(config) && !types.isObject(config)) { + return config; + } + throw new Error(localize('configNoString', "'{0}' can not be resolved because '{1}' is a structured value.", match, argument)); + } + throw new Error(localize('missingConfigName', "'{0}' can not be resolved because no settings name is given.", match)); + + default: { + + if (argument) { + const folder = this.accessor.getFolderUri(argument); + if (folder) { + folderUri = folder; + } + } + + switch (variable) { + case 'workspaceRoot': + case 'workspaceFolder': + if (folderUri) { + return normalizeDriveLetter(folderUri.fsPath); + } + if (this.accessor.getWorkspaceFolderCount() > 1) { + throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'{0}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match)); + } + throw new Error(localize('canNotResolveWorkspaceFolder', "'{0}' can not be resolved. Please open a folder.", match)); + + case 'cwd': + return folderUri ? normalizeDriveLetter(folderUri.fsPath) : process.cwd(); + + case 'workspaceRootFolderName': + case 'workspaceFolderBasename': + if (folderUri) { + return paths.basename(folderUri.fsPath); + } + if (this.accessor.getWorkspaceFolderCount() > 1) { + throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "'{0}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match)); + } + throw new Error(localize('canNotResolveFolderBasename', "'{0}' can not be resolved. Please open a folder.", match)); + + case 'lineNumber': + const lineNumber = this.accessor.getLineNumber(); + if (lineNumber) { + return lineNumber; + } + throw new Error(localize('canNotResolveLineNumber', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'selectedText': + const selectedText = this.accessor.getSelectedText(); + if (selectedText) { + return selectedText; + } + throw new Error(localize('canNotResolveSelectedText', "'{0}' can not be resolved. Please open an editor and select some text.", match)); + + case 'file': + if (filePath) { + return filePath; + } + throw new Error(localize('canNotResolveFile', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'relativeFile': + if (folderUri && filePath) { + return paths.normalize(relative(folderUri.fsPath, filePath)); + } + if (filePath) { + return filePath; + } + throw new Error(localize('canNotResolveRelativeFile', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'fileDirname': + if (filePath) { + return paths.dirname(filePath); + } + throw new Error(localize('canNotResolveFileDirname', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'fileExtname': + if (filePath) { + return paths.extname(filePath); + } + throw new Error(localize('canNotResolveFileExtname', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'fileBasename': + if (filePath) { + return paths.basename(filePath); + } + throw new Error(localize('canNotResolveFileBasename', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'fileBasenameNoExtension': + if (filePath) { + const basename = paths.basename(filePath); + return basename.slice(0, basename.length - paths.extname(basename).length); + } + throw new Error(localize('canNotResolveFileBasenameNoExtension', "'{0}' can not be resolved. Please open an editor.", match)); + + case 'execPath': + return this.accessor.getEnvironmentService('execPath'); + + default: + return match; + } + } + } + }); + } +} diff --git a/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts b/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts index fe2ba2d40dd..5b514fb535b 100644 --- a/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts +++ b/src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts @@ -196,18 +196,6 @@ suite('Configuration Resolver Service', () => { assert.strictEqual(service.resolve(workspace, 'abc ${config:editor.fontFamily} ${config:editor.lineNumbers} ${config:editor.insertSpaces} xyz'), 'abc foo 123 false xyz'); }); - test('configuration should not evaluate Javascript', () => { - let configurationService: IConfigurationService; - configurationService = new MockConfigurationService({ - editor: { - abc: 'foo' - } - }); - - let service = new ConfigurationResolverService(envVariables, new TestEditorService(), TestEnvironmentService, configurationService, mockCommandService, new TestContextService()); - assert.strictEqual(service.resolve(workspace, 'abc ${config:editor[\'abc\'.substr(0)]} xyz'), 'abc ${config:editor[\'abc\'.substr(0)]} xyz'); - }); - test('uses original variable as fallback', () => { let configurationService: IConfigurationService; configurationService = new MockConfigurationService({ @@ -215,10 +203,8 @@ suite('Configuration Resolver Service', () => { }); let service = new ConfigurationResolverService(envVariables, new TestEditorService(), TestEnvironmentService, configurationService, mockCommandService, new TestContextService()); - assert.strictEqual(service.resolve(workspace, 'abc ${invalidVariable} xyz'), 'abc ${invalidVariable} xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${env:invalidVariable} xyz'), 'abc xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${config:editor.abc.def} xyz'), 'abc ${config:editor.abc.def} xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${config:panel.abc} xyz'), 'abc ${config:panel.abc} xyz'); + assert.strictEqual(service.resolve(workspace, 'abc ${unknownVariable} xyz'), 'abc ${unknownVariable} xyz'); + assert.strictEqual(service.resolve(workspace, 'abc ${env:unknownVariable} xyz'), 'abc xyz'); }); test('configuration variables with invalid accessor', () => { @@ -230,9 +216,14 @@ suite('Configuration Resolver Service', () => { }); let service = new ConfigurationResolverService(envVariables, new TestEditorService(), TestEnvironmentService, configurationService, mockCommandService, new TestContextService()); - assert.strictEqual(service.resolve(workspace, 'abc ${config:} xyz'), 'abc ${config:} xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${config:editor..fontFamily} xyz'), 'abc ${config:editor..fontFamily} xyz'); - assert.strictEqual(service.resolve(workspace, 'abc ${config:editor.none.none2} xyz'), 'abc ${config:editor.none.none2} xyz'); + + assert.throws(() => service.resolve(workspace, 'abc ${env} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${env:} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${config} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${config:} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${config:editor} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${config:editor..fontFamily} xyz')); + assert.throws(() => service.resolve(workspace, 'abc ${config:editor.none.none2} xyz')); }); test('interactive variable simple', () => { From d907469a092efea2270698f56db8743f29f558f7 Mon Sep 17 00:00:00 2001 From: Andre Weinand <aweinand@microsoft.com> Date: Thu, 19 Apr 2018 18:39:42 +0200 Subject: [PATCH 1015/1070] export ExtHostVariableResolverService --- src/vs/workbench/api/node/extHostDebugService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index c8b29476bb2..2ae91c279e1 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -526,7 +526,7 @@ export class ExtHostDebugConsole implements vscode.DebugConsole { } } -class ExtHostVariableResolverService implements IConfigurationResolverService { +export class ExtHostVariableResolverService implements IConfigurationResolverService { _serviceBrand: any; _variableResolver: VariableResolver; From 91191fb866914e667ce086458ff0b37cc34eddb5 Mon Sep 17 00:00:00 2001 From: Matt Bierner <matb@microsoft.com> Date: Thu, 19 Apr 2018 10:55:49 -0700 Subject: [PATCH 1016/1070] Promote webview Api to stable (#47989) * Promote webview Api to stable Fixes #43713 Fixes #28263 * Rename position back to viewColumn and mark viewColumn as deprecated This allows us to more easily re-introduce a `position` property once we have gridlayout * Move dispose methods onto webview itself Also better hide a few 'internal' methods / properties on the panel / webview * Revert "Move dispose methods onto webview itself" This reverts commit 8fab6cc1a10b7c1c8c18f09df196240e93939881. * Move title onto webview panel * Use _ names for private setters * Remove unused emitter and dispose onMessageEmitter * Preview internal emitters with _ --- .../src/features/preview.ts | 6 +- src/vs/vscode.d.ts | 179 ++++++++++++++++++ src/vs/vscode.proposed.d.ts | 178 +---------------- src/vs/workbench/api/node/extHost.api.impl.ts | 6 +- src/vs/workbench/api/node/extHostWebview.ts | 82 ++++---- 5 files changed, 227 insertions(+), 224 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index a1c2cf45a13..067d0c11085 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -236,7 +236,7 @@ export class MarkdownPreview { } public get position(): vscode.ViewColumn | undefined { - return this.editor.position; + return this.editor.viewColumn; } public isWebviewOf(webview: vscode.WebviewPanel): boolean { @@ -269,7 +269,7 @@ export class MarkdownPreview { public toggleLock() { this._locked = !this._locked; - this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); + this.editor.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); } private isPreviewOf(resource: vscode.Uri): boolean { @@ -327,7 +327,7 @@ export class MarkdownPreview { this.currentVersion = { resource, version: document.version }; const content = await this._contentProvider.provideTextDocumentContent(document, this._previewConfigurations, this.line); if (this._resource === resource) { - this.editor.webview.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); + this.editor.title = MarkdownPreview.getPreviewTitle(this._resource, this._locked); this.editor.webview.html = content; } } diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 85bb26a4ed0..bebfdbb8891 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -4820,6 +4820,173 @@ declare module 'vscode' { resolveTask(task: Task, token?: CancellationToken): ProviderResult<Task>; } + /** + * Content settings for a webview. + */ + export interface WebviewOptions { + /** + * Should scripts be enabled in the webview content? + * + * Defaults to false (scripts-disabled). + */ + readonly enableScripts?: boolean; + + /** + * Should command uris be enabled in webview content? + * + * Defaults to false. + */ + readonly enableCommandUris?: boolean; + + /** + * Root paths from which the webview can load local (filesystem) resources using the `vscode-resource:` scheme. + * + * Default to the root folders of the current workspace plus the extension's install directory. + * + * Pass in an empty array to disallow access to any local resources. + */ + readonly localResourceRoots?: ReadonlyArray<Uri>; + } + + /** + * A webview displays html content, like an iframe. + */ + export interface Webview { + /** + * Content settings for the webview. + */ + readonly options: WebviewOptions; + + /** + * Contents of the webview. + * + * Should be a complete html document. + */ + html: string; + + /** + * Fired when the webview content posts a message. + */ + readonly onDidReceiveMessage: Event<any>; + + /** + * Post a message to the webview content. + * + * Messages are only develivered if the webview is visible. + * + * @param message Body of the message. + */ + postMessage(message: any): Thenable<boolean>; + } + + /** + * Content settings for a webview panel. + */ + export interface WebviewPanelOptions { + /** + * Should the find widget be enabled in the panel? + * + * Defaults to false. + */ + readonly enableFindWidget?: boolean; + + /** + * Should the webview panel's content (iframe) be kept around even when the panel + * is no longer visible? + * + * Normally the webview panel's html context is created when the panel becomes visible + * and destroyed when it is is hidden. Extensions that have complex state + * or UI can set the `retainContextWhenHidden` to make VS Code keep the webview + * context around, even when the webview moves to a background tab. When + * the panel becomes visible again, the context is automatically restored + * in the exact same state it was in originally. + * + * `retainContextWhenHidden` has a high memory overhead and should only be used if + * your panel's context cannot be quickly saved and restored. + */ + readonly retainContextWhenHidden?: boolean; + } + + /** + * A panel that contains a webview. + */ + interface WebviewPanel { + /** + * Type of the webview panel, such as `'markdown.preview'`. + */ + readonly viewType: string; + + /** + * Title of the panel shown in UI. + */ + title: string; + + /** + * Webview belonging to the panel. + */ + readonly webview: Webview; + + /** + * Content settings for the webview panel. + */ + readonly options: WebviewPanelOptions; + + /** + * Editor position of the panel. This property is only set if the webview is in + * one of the three editor view columns. + * + * @deprecated + */ + readonly viewColumn?: ViewColumn; + + /** + * Is the panel currently visible? + */ + readonly visible: boolean; + + /** + * Fired when the panel's view state changes. + */ + readonly onDidChangeViewState: Event<WebviewPanelOnDidChangeViewStateEvent>; + + /** + * Fired when the panel is disposed. + * + * This may be because the user closed the panel or because `.dispose()` was + * called on it. + * + * Trying to use the panel after it has been disposed throws an exception. + */ + readonly onDidDispose: Event<void>; + + /** + * Show the webview panel in a given column. + * + * A webview panel may only show in a single column at a time. If it is already showing, this + * method moves it to a new column. + */ + reveal(viewColumn: ViewColumn): void; + + /** + * Dispose of the webview panel. + * + * This closes the panel if it showing and disposes of the resources owned by the webview. + * Webview panels are also disposed when the user closes the webview panel. Both cases + * fire the `onDispose` event. + */ + dispose(): any; + } + + /** + * Event fired when a webview panel's view state changes. + */ + export interface WebviewPanelOnDidChangeViewStateEvent { + /** + * Webview panel whose view state changed. + */ + readonly webviewPanel: WebviewPanel; + } + /** * Namespace describing the environment the editor runs in. */ @@ -5302,6 +5469,18 @@ declare module 'vscode' { */ export function createOutputChannel(name: string): OutputChannel; + /** + * Create and show a new webview panel. + * + * @param viewType Identifies the type of the webview panel. + * @param title Title of the panel. + * @param position Editor column to show the new panel in. + * @param options Settings for the new panel. + * + * @return New webview panel. + */ + export function createWebviewPanel(viewType: string, title: string, position: ViewColumn, options: WebviewPanelOptions & WebviewOptions): WebviewPanel; + /** * Set a message to the status bar. This is a short hand for the more powerful * status bar [items](#window.createStatusBarItem). diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index d8cb1b5b3a5..17164135bf9 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -474,171 +474,7 @@ declare module 'vscode' { //#endregion - //#region Matt: WebView - - /** - * Content settings for a webview. - */ - export interface WebviewOptions { - /** - * Should scripts be enabled in the webview content? - * - * Defaults to false (scripts-disabled). - */ - readonly enableScripts?: boolean; - - /** - * Should command uris be enabled in webview content? - * - * Defaults to false. - */ - readonly enableCommandUris?: boolean; - - /** - * Root paths from which the webview can load local (filesystem) resources using the `vscode-resource:` scheme. - * - * Default to the root folders of the current workspace plus the extension's install directory. - * - * Pass in an empty array to disallow access to any local resources. - */ - readonly localResourceRoots?: ReadonlyArray<Uri>; - } - - /** - * A webview displays html content, like an iframe. - */ - export interface Webview { - /** - * Content settings for the webview. - */ - readonly options: WebviewOptions; - - /** - * Title of the webview shown in UI. - */ - title: string; - - /** - * Contents of the webview. - * - * Should be a complete html document. - */ - html: string; - - /** - * Fired when the webview content posts a message. - */ - readonly onDidReceiveMessage: Event<any>; - - /** - * Post a message to the webview content. - * - * Messages are only develivered if the webview is visible. - * - * @param message Body of the message. - */ - postMessage(message: any): Thenable<boolean>; - } - - /** - * Content settings for a webview panel. - */ - export interface WebviewPanelOptions { - /** - * Should the find widget be enabled in the panel? - * - * Defaults to false. - */ - readonly enableFindWidget?: boolean; - - /** - * Should the webview panel's content (iframe) be kept around even when the panel - * is no longer visible? - * - * Normally the webview panel's html context is created when the panel becomes visible - * and destroyed when it is is hidden. Extensions that have complex state - * or UI can set the `retainContextWhenHidden` to make VS Code keep the webview - * context around, even when the webview moves to a background tab. When - * the panel becomes visible again, the context is automatically restored - * in the exact same state it was in originally. - * - * `retainContextWhenHidden` has a high memory overhead and should only be used if - * your panel's context cannot be quickly saved and restored. - */ - readonly retainContextWhenHidden?: boolean; - } - - /** - * A panel that contains a webview. - */ - interface WebviewPanel { - /** - * Type of the webview panel, such as `'markdown.preview'`. - */ - readonly viewType: string; - - /** - * Webview belonging to the panel. - */ - readonly webview: Webview; - - /** - * Content settings for the webview panel. - */ - readonly options: WebviewPanelOptions; - - /** - * Editor position of the panel. - */ - readonly position?: ViewColumn; - - /** - * Is the panel current visible? - */ - readonly visible: boolean; - - /** - * Fired when the panel's view state changes. - */ - readonly onDidChangeViewState: Event<WebviewPanelOnDidChangeViewStateEvent>; - - /** - * Fired when the panel is disposed. - * - * This may be because the user closed the panel or because `.dispose()` was - * called on it. - * - * Trying to use the panel after it has been disposed throws an exception. - */ - readonly onDidDispose: Event<void>; - - /** - * Show the webview panel in a given column. - * - * A webview panel may only show in a single column at a time. If it is already showing, this - * method moves it to a new column. - */ - reveal(viewColumn: ViewColumn): void; - - /** - * Dispose of the webview panel. - * - * This closes the panel if it showing and disposes of the resources owned by the webview. - * Webview panels are also disposed when the user closes the webview panel. Both cases - * fire the `onDispose` event. - */ - dispose(): any; - } - - /** - * Event fired when a webview panel's view state changes. - */ - export interface WebviewPanelOnDidChangeViewStateEvent { - /** - * Webview panel whose view state changed. - */ - readonly webviewPanel: WebviewPanel; - } + //#region Matt: WebView Serializer /** * Save and restore webview panels that have been persisted when vscode shuts down. @@ -670,18 +506,6 @@ declare module 'vscode' { } namespace window { - /** - * Create and show a new webview panel. - * - * @param viewType Identifies the type of the webview panel. - * @param title Title of the panel. - * @param position Editor column to show the new panel in. - * @param options Settings for the new webview panel. - * - * @return New webview panel. - */ - export function createWebviewPanel(viewType: string, title: string, position: ViewColumn, options: WebviewPanelOptions & WebviewOptions): WebviewPanel; - /** * Registers a webview panel serializer. * diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index a4a7b247fce..c91f1a47d3f 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -408,6 +408,9 @@ export function createApiFactory( createOutputChannel(name: string): vscode.OutputChannel { return extHostOutputService.createOutputChannel(name); }, + createWebviewPanel(viewType: string, title: string, column: vscode.ViewColumn, options: vscode.WebviewPanelOptions & vscode.WebviewOptions): vscode.WebviewPanel { + return extHostWebviews.createWebview(viewType, title, column, options, extension.extensionFolderPath); + }, createTerminal(nameOrOptions: vscode.TerminalOptions | string, shellPath?: string, shellArgs?: string[]): vscode.Terminal { if (typeof nameOrOptions === 'object') { return extHostTerminalService.createTerminalFromOptions(<vscode.TerminalOptions>nameOrOptions); @@ -427,9 +430,6 @@ export function createApiFactory( registerDecorationProvider: proposedApiFunction(extension, (provider: vscode.DecorationProvider) => { return extHostDecorations.registerDecorationProvider(provider, extension.id); }), - createWebviewPanel: proposedApiFunction(extension, (viewType: string, title: string, column: vscode.ViewColumn, options: vscode.WebviewPanelOptions & vscode.WebviewOptions) => { - return extHostWebviews.createWebview(viewType, title, column, options, extension.extensionFolderPath); - }), registerWebviewPanelSerializer: proposedApiFunction(extension, (viewType: string, serializer: vscode.WebviewPanelSerializer) => { return extHostWebviews.registerWebviewPanelSerializer(viewType, serializer); }) diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index a841e091574..7849ba9ea13 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -14,44 +14,25 @@ import { Disposable } from './extHostTypes'; export class ExtHostWebview implements vscode.Webview { private readonly _handle: WebviewPanelHandle; private readonly _proxy: MainThreadWebviewsShape; - private _title: string; private _html: string; private _options: vscode.WebviewOptions; private _isDisposed: boolean = false; - public readonly onMessageEmitter = new Emitter<any>(); - public readonly onDidReceiveMessage: Event<any> = this.onMessageEmitter.event; - - public readonly onDidChangeViewStateEmitter = new Emitter<vscode.WebviewPanelOnDidChangeViewStateEvent>(); - public readonly onDidChangeViewState: Event<vscode.WebviewPanelOnDidChangeViewStateEvent> = this.onDidChangeViewStateEmitter.event; + readonly _onMessageEmitter = new Emitter<any>(); + public readonly onDidReceiveMessage: Event<any> = this._onMessageEmitter.event; constructor( handle: WebviewPanelHandle, proxy: MainThreadWebviewsShape, - title: string, options: vscode.WebviewOptions ) { this._handle = handle; this._proxy = proxy; - this._title = title; this._options = options; } dispose() { - this.onDidChangeViewStateEmitter.dispose(); - } - - get title(): string { - this.assertNotDisposed(); - return this._title; - } - - set title(value: string) { - this.assertNotDisposed(); - if (this._title !== value) { - this._title = value; - this._proxy.$setTitle(this._handle, value); - } + this._onMessageEmitter.dispose(); } get html(): string { @@ -94,23 +75,26 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { private readonly _handle: WebviewPanelHandle; private readonly _proxy: MainThreadWebviewsShape; private readonly _viewType: string; + private _title: string; + private readonly _options: vscode.WebviewPanelOptions; private readonly _webview: ExtHostWebview; private _isDisposed: boolean = false; private _viewColumn: vscode.ViewColumn; private _visible: boolean = true; - public readonly onDisposeEmitter = new Emitter<void>(); - public readonly onDidDispose: Event<void> = this.onDisposeEmitter.event; + readonly _onDisposeEmitter = new Emitter<void>(); + public readonly onDidDispose: Event<void> = this._onDisposeEmitter.event; - public readonly onDidChangeViewStateEmitter = new Emitter<vscode.WebviewPanelOnDidChangeViewStateEvent>(); - public readonly onDidChangeViewState: Event<vscode.WebviewPanelOnDidChangeViewStateEvent> = this.onDidChangeViewStateEmitter.event; + readonly _onDidChangeViewStateEmitter = new Emitter<vscode.WebviewPanelOnDidChangeViewStateEvent>(); + public readonly onDidChangeViewState: Event<vscode.WebviewPanelOnDidChangeViewStateEvent> = this._onDidChangeViewStateEmitter.event; constructor( handle: WebviewPanelHandle, proxy: MainThreadWebviewsShape, viewType: string, + title: string, viewColumn: vscode.ViewColumn, editorOptions: vscode.WebviewPanelOptions, webview: ExtHostWebview @@ -120,6 +104,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { this._viewType = viewType; this._options = editorOptions; this._viewColumn = viewColumn; + this._title = title; this._webview = webview; } @@ -129,12 +114,14 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { } this._isDisposed = true; - this.onDisposeEmitter.fire(); + this._onDisposeEmitter.fire(); this._proxy.$disposeWebview(this._handle); - this.onDisposeEmitter.dispose(); - this.onDidChangeViewStateEmitter.dispose(); + this._webview.dispose(); + + this._onDisposeEmitter.dispose(); + this._onDidChangeViewStateEmitter.dispose(); } get webview() { @@ -147,16 +134,29 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { return this._viewType; } + get title(): string { + this.assertNotDisposed(); + return this._title; + } + + set title(value: string) { + this.assertNotDisposed(); + if (this._title !== value) { + this._title = value; + this._proxy.$setTitle(this._handle, value); + } + } + get options() { return this._options; } - get position(): vscode.ViewColumn { + get viewColumn(): vscode.ViewColumn { this.assertNotDisposed(); return this._viewColumn; } - set position(value: vscode.ViewColumn) { + _setViewColumn(value: vscode.ViewColumn) { this.assertNotDisposed(); this._viewColumn = value; } @@ -166,7 +166,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { return this._visible; } - set visible(value: boolean) { + _setVisible(value: boolean) { this.assertNotDisposed(); this._visible = value; } @@ -212,8 +212,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { const handle = ExtHostWebviews.webviewHandlePool++ + ''; this._proxy.$createWebviewPanel(handle, viewType, title, typeConverters.fromViewColumn(viewColumn), options, extensionFolderPath); - const webview = new ExtHostWebview(handle, this._proxy, title, options); - const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, viewColumn, options, webview); + const webview = new ExtHostWebview(handle, this._proxy, options); + const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, title, viewColumn, options, webview); this._webviewPanels.set(handle, panel); return panel; } @@ -238,7 +238,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { $onMessage(handle: WebviewPanelHandle, message: any): void { const panel = this.getWebviewPanel(handle); if (panel) { - panel.webview.onMessageEmitter.fire(message); + panel.webview._onMessageEmitter.fire(message); } } @@ -246,10 +246,10 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { const panel = this.getWebviewPanel(handle); if (panel) { const viewColumn = typeConverters.toViewColumn(position); - if (panel.visible !== visible || panel.position !== viewColumn) { - panel.visible = visible; - panel.position = viewColumn; - panel.onDidChangeViewStateEmitter.fire({ webviewPanel: panel }); + if (panel.visible !== visible || panel.viewColumn !== viewColumn) { + panel._setVisible(visible); + panel._setViewColumn(viewColumn); + panel._onDidChangeViewStateEmitter.fire({ webviewPanel: panel }); } } } @@ -276,8 +276,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { return TPromise.wrapError(new Error(`No serializer found for '${viewType}'`)); } - const webview = new ExtHostWebview(webviewHandle, this._proxy, title, options); - const revivedPanel = new ExtHostWebviewPanel(webviewHandle, this._proxy, viewType, typeConverters.toViewColumn(position), options, webview); + const webview = new ExtHostWebview(webviewHandle, this._proxy, options); + const revivedPanel = new ExtHostWebviewPanel(webviewHandle, this._proxy, viewType, title, typeConverters.toViewColumn(position), options, webview); this._webviewPanels.set(webviewHandle, revivedPanel); return serializer.deserializeWebviewPanel(revivedPanel, state); } From 8bff39552567101bae2ba2f45c5e405e97c59f25 Mon Sep 17 00:00:00 2001 From: Daniel Imms <daimms@microsoft.com> Date: Thu, 19 Apr 2018 11:08:31 -0700 Subject: [PATCH 1017/1070] Dispose of proxy listeners properly --- .../mainThreadTerminalService.ts | 7 +++---- .../parts/terminal/common/terminal.ts | 9 +++++---- .../node/terminalProcessExtHostProxy.ts | 20 +++++++++++++------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 2086db18928..434652bfaf6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -109,10 +109,9 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape env: request.shellLaunchConfig.env }; this._proxy.$createProcess(request.proxy.terminalId, shellLaunchConfigDto, request.cols, request.rows); - // TODO: Dispose of this properly when the terminal/process dies - this._toDispose.push(request.proxy.onInput(data => this._proxy.$acceptProcessInput(request.proxy.terminalId, data))); - this._toDispose.push(request.proxy.onResize((cols, rows) => this._proxy.$acceptProcessResize(request.proxy.terminalId, cols, rows))); - this._toDispose.push(request.proxy.onShutdown(() => this._proxy.$acceptProcessShutdown(request.proxy.terminalId))); + request.proxy.onInput(data => this._proxy.$acceptProcessInput(request.proxy.terminalId, data)); + request.proxy.onResize((cols, rows) => this._proxy.$acceptProcessResize(request.proxy.terminalId, cols, rows)); + request.proxy.onShutdown(() => this._proxy.$acceptProcessShutdown(request.proxy.terminalId)); } public $sendProcessTitle(terminalId: number, title: string): void { diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index c1fa9345179..dfe9d89cc12 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -518,16 +518,17 @@ export enum ProcessState { } -export interface ITerminalProcessExtHostProxy { +export interface ITerminalProcessExtHostProxy extends IDisposable { readonly terminalId: number; emitData(data: string): void; emitTitle(title: string): void; emitPid(pid: number): void; emitExit(exitCode: number): void; - onInput(listener: (data: string) => void): IDisposable; - onResize(listener: (cols: number, rows: number) => void): IDisposable; - onShutdown(listener: () => void): IDisposable; + + onInput(listener: (data: string) => void): void; + onResize(listener: (cols: number, rows: number) => void): void; + onShutdown(listener: () => void): void; } export interface ITerminalProcessExtHostRequest { diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index b03a15e8f69..e096a6b2532 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -12,6 +12,8 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin // For ext host processes connected checks happen on the ext host public connected: boolean = true; + private _disposables: IDisposable[] = []; + constructor( public terminalId: number, shellLaunchConfig: IShellLaunchConfig, @@ -25,6 +27,11 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin this._terminalService.requestExtHostProcess(this, shellLaunchConfig, cols, rows); } + public dispose(): void { + this._disposables.forEach(d => d.dispose()); + this._disposables.length = 0; + } + public emitData(data: string): void { this.emit('message', { type: 'data', content: data } as IMessageFromTerminalProcess); } @@ -39,6 +46,7 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin public emitExit(exitCode: number): void { this.emit('exit', exitCode); + this.dispose(); } public send(message: IMessageToTerminalProcess): boolean { @@ -50,21 +58,21 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin return true; } - public onInput(listener: (data: string) => void): IDisposable { + public onInput(listener: (data: string) => void): void { const outerListener = (data) => listener(data); this.on('input', outerListener); - return toDisposable(() => this.removeListener('input', outerListener)); + this._disposables.push(toDisposable(() => this.removeListener('input', outerListener))); } - public onResize(listener: (cols: number, rows: number) => void): IDisposable { + public onResize(listener: (cols: number, rows: number) => void): void { const outerListener = (cols, rows) => listener(cols, rows); this.on('resize', outerListener); - return toDisposable(() => this.removeListener('resize', outerListener)); + this._disposables.push(toDisposable(() => this.removeListener('resize', outerListener))); } - public onShutdown(listener: () => void): IDisposable { + public onShutdown(listener: () => void): void { const outerListener = () => listener(); this.on('shutdown', outerListener); - return toDisposable(() => this.removeListener('shutdown', outerListener)); + this._disposables.push(toDisposable(() => this.removeListener('shutdown', outerListener))); } } \ No newline at end of file From c96a5875805c1621219fd19e4155fe4916deb113 Mon Sep 17 00:00:00 2001 From: Daniel Imms <daimms@microsoft.com> Date: Thu, 19 Apr 2018 11:22:33 -0700 Subject: [PATCH 1018/1070] Increase delay before sending ext host process requests Macbook seems to take longer that my Ubuntu desktop --- .../parts/terminal/electron-browser/terminalService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 744961567f8..99b68f28a89 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -101,7 +101,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina // TODO: MainThreadTerminalService is not ready at this point, fix this setTimeout(() => { this._onInstanceRequestExtHostProcess.fire({ proxy, shellLaunchConfig, cols, rows }); - }, 100); + }, 500); }); } From d6a7167064b43a273e10ab0a0ae6a12d52f15a24 Mon Sep 17 00:00:00 2001 From: Daniel Imms <daimms@microsoft.com> Date: Thu, 19 Apr 2018 11:39:33 -0700 Subject: [PATCH 1019/1070] Import absolute paths --- .../parts/terminal/electron-browser/terminalService.ts | 2 +- .../parts/terminal/node/terminalProcessExtHostProxy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 99b68f28a89..1ee8373b643 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -27,7 +27,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati import { ipcRenderer as ipc } from 'electron'; import { IOpenFileRequest } from 'vs/platform/windows/common/windows'; import { TerminalInstance } from 'vs/workbench/parts/terminal/electron-browser/terminalInstance'; -import { IExtensionService } from '../../../services/extensions/common/extensions'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; export class TerminalService extends AbstractTerminalService implements ITerminalService { private _configHelper: TerminalConfigHelper; diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index e096a6b2532..9c842fbbfa8 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -6,7 +6,7 @@ import { ITerminalChildProcess, IMessageToTerminalProcess, IMessageFromTerminalProcess } from 'vs/workbench/parts/terminal/node/terminal'; import { EventEmitter } from 'events'; import { ITerminalService, ITerminalProcessExtHostProxy, IShellLaunchConfig } from 'vs/workbench/parts/terminal/common/terminal'; -import { IDisposable, toDisposable } from '../../../../base/common/lifecycle'; +import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; export class TerminalProcessExtHostProxy extends EventEmitter implements ITerminalChildProcess, ITerminalProcessExtHostProxy { // For ext host processes connected checks happen on the ext host From 42d89b795600886bd7388fcb85a084fcd246307c Mon Sep 17 00:00:00 2001 From: Pine Wu <octref@gmail.com> Date: Thu, 19 Apr 2018 11:52:16 -0700 Subject: [PATCH 1020/1070] [css] update service --- extensions/css-language-features/server/package.json | 2 +- extensions/css-language-features/server/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 060c0ee7732..24a014d533a 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,7 +8,7 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.7", + "vscode-css-languageservice": "^3.0.9-next.9", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2" }, diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 06e9bd19565..3c9a4d205dd 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -10,9 +10,9 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-css-languageservice@^3.0.9-next.7: - version "3.0.9-next.7" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.7.tgz#1eb8deadaa6bfaf55187656ea6fb6b7e8d71cd7f" +vscode-css-languageservice@^3.0.9-next.9: + version "3.0.9-next.9" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.9.tgz#19ccc4d27a0ce0bed0ebbc3f884fcaea974ae497" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" From 0dfd04470bd7e05351435f3d65aa05452c79e648 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Thu, 19 Apr 2018 21:23:24 +0200 Subject: [PATCH 1021/1070] #43645 Update schema --- .../api/browser/viewsContainersExtensionPoint.ts | 2 +- .../workbench/api/browser/viewsExtensionPoint.ts | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts index 5a2e2b78965..36a9e67cbb1 100644 --- a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts @@ -60,7 +60,7 @@ export const viewsContainerContribution: IJSONSchema = { type: 'object', properties: { 'activitybar': { - description: localize('views.container.activitybar', "Activity Bar"), + description: localize('views.container.activitybar', "Contribute views containers to Activity Bar"), type: 'array', items: viewsContainerSchema } diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index 24514349310..0fda4bcaa1a 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -69,15 +69,23 @@ namespace schema { type: 'object', properties: { 'explorer': { - description: localize('views.explorer', "Explorer View"), + description: localize('views.explorer', "Contributes views to Explorer container in the Activity bar"), type: 'array', - items: viewDescriptor + items: viewDescriptor, + default: [] }, 'debug': { - description: localize('views.debug', "Debug View"), + description: localize('views.debug', "Contributes views to Debug container in the Activity bar"), type: 'array', - items: viewDescriptor + items: viewDescriptor, + default: [] } + }, + additionalProperties: { + description: localize('views.contributed', "Contributes views to contributed views container"), + type: 'array', + items: viewDescriptor, + default: [] } }; } From be4e48fbe77d193487b907f17656882b5a44dc9a Mon Sep 17 00:00:00 2001 From: Pine Wu <octref@gmail.com> Date: Thu, 19 Apr 2018 14:45:07 -0700 Subject: [PATCH 1022/1070] [css] update service --- extensions/css-language-features/server/package.json | 2 +- extensions/css-language-features/server/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 24a014d533a..97379871be5 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,7 +8,7 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.9", + "vscode-css-languageservice": "^3.0.9-next.10", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2" }, diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 3c9a4d205dd..9cf05dd88ee 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -10,9 +10,9 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-css-languageservice@^3.0.9-next.9: - version "3.0.9-next.9" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.9.tgz#19ccc4d27a0ce0bed0ebbc3f884fcaea974ae497" +vscode-css-languageservice@^3.0.9-next.10: + version "3.0.9-next.10" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.10.tgz#be73d571221176b43d2c398a4a27f7d38206952d" dependencies: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" From d770ce503a136c8592d8cb30c033ce7027cdfb13 Mon Sep 17 00:00:00 2001 From: Matt Bierner <matb@microsoft.com> Date: Thu, 19 Apr 2018 15:50:54 -0700 Subject: [PATCH 1023/1070] Make sure we handle webview position updates when an entire editor group moves --- src/vs/vscode.d.ts | 4 +++- .../api/electron-browser/mainThreadWebview.ts | 17 ++++++++++++++++- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostWebview.ts | 9 ++------- .../webview/electron-browser/webviewEditor.ts | 2 +- .../electron-browser/webviewEditorInput.ts | 2 +- .../electron-browser/webviewEditorService.ts | 6 +----- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index bebfdbb8891..93650ca4d4c 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -4964,8 +4964,10 @@ declare module 'vscode' { * * A webview panel may only show in a single column at a time. If it is already showing, this * method moves it to a new column. + * + * @param viewColumn View column to show the panel in. Shows in the current `viewColumn` if undefined. */ - reveal(viewColumn: ViewColumn): void; + reveal(viewColumn?: ViewColumn): void; /** * Dispose of the webview panel. diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index c6411afa704..501549b3bbc 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -52,6 +52,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv ) { this._proxy = context.getProxy(ExtHostContext.ExtHostWebviews); editorGroupService.onEditorsChanged(this.onEditorsChanged, this, this._toDispose); + editorGroupService.onEditorGroupMoved(this.onEditorGroupMoved, this, this._toDispose); this._toDispose.push(_webviewService.registerReviver(MainThreadWebviews.viewType, this)); @@ -96,7 +97,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv webview.html = value; } - $reveal(handle: WebviewPanelHandle, column: Position): void { + $reveal(handle: WebviewPanelHandle, column: Position | undefined): void { const webview = this.getWebview(handle); this._webviewService.revealWebview(webview, column); } @@ -227,6 +228,20 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv } } + private onEditorGroupMoved(): void { + for (const workbenchEditor of this._editorService.getVisibleEditors()) { + if (!workbenchEditor.input) { + return; + } + + this._webviews.forEach((input, handle) => { + if (workbenchEditor.input.matches(input) && input.position !== workbenchEditor.position) { + input.updatePosition(workbenchEditor.position); + this._proxy.$onDidChangeWebviewPanelViewState(handle, handle === this._activeWebview, workbenchEditor.position); + } + }); + } + } private onDidClickLink(handle: WebviewPanelHandle, link: URI): void { if (!link) { return; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index a6130803b52..798b71e2207 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -355,7 +355,7 @@ export type WebviewPanelHandle = string; export interface MainThreadWebviewsShape extends IDisposable { $createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionFolderPath: string): void; $disposeWebview(handle: WebviewPanelHandle): void; - $reveal(handle: WebviewPanelHandle, column: EditorPosition): void; + $reveal(handle: WebviewPanelHandle, column: EditorPosition | undefined): void; $setTitle(handle: WebviewPanelHandle, value: string): void; $setHtml(handle: WebviewPanelHandle, value: string): void; $postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>; diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index 7849ba9ea13..e91157377ab 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -58,11 +58,6 @@ export class ExtHostWebview implements vscode.Webview { return this._proxy.$postMessage(this._handle, message); } - public reveal(viewColumn: vscode.ViewColumn): void { - this.assertNotDisposed(); - this._proxy.$reveal(this._handle, typeConverters.fromViewColumn(viewColumn)); - } - private assertNotDisposed() { if (this._isDisposed) { throw new Error('Webview is disposed'); @@ -176,9 +171,9 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel { return this._proxy.$postMessage(this._handle, message); } - public reveal(viewColumn: vscode.ViewColumn): void { + public reveal(viewColumn?: vscode.ViewColumn): void { this.assertNotDisposed(); - this._proxy.$reveal(this._handle, typeConverters.fromViewColumn(viewColumn)); + this._proxy.$reveal(this._handle, viewColumn ? typeConverters.fromViewColumn(viewColumn) : undefined); } private assertNotDisposed() { diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 6ff804fc51d..aada9f588dc 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -148,7 +148,7 @@ export class WebviewEditor extends BaseWebviewEditor { await super.setInput(input, options); await input.resolve(); - await input.onBecameActive(this.position); + await input.updatePosition(this.position); this.updateWebview(input); } diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts index 13bdd34b0a4..516b46d3d5b 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorInput.ts @@ -224,7 +224,7 @@ export class WebviewEditorInput extends EditorInput { this._currentWebviewHtml = ''; } - public onBecameActive(position: Position): void { + public updatePosition(position: Position): void { this._position = position; } } diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts index 03cf243a74a..1d0f11200ca 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditorService.ts @@ -100,11 +100,7 @@ export class WebviewEditorService implements IWebviewEditorService { webview: WebviewEditorInput, column: Position | undefined ): void { - if (typeof column === 'undefined') { - column = webview.position; - } - - if (webview.position === column) { + if (typeof column === 'undefined' || webview.position === column) { this._editorService.openEditor(webview, { preserveFocus: false }, column); } else { this._editorGroupService.moveEditor(webview, webview.position, column, { preserveFocus: false }); From cfb6059563596ed306b953d397a634833b18cb89 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao <ramyar@microsoft.com> Date: Thu, 19 Apr 2018 16:23:11 -0700 Subject: [PATCH 1024/1070] Refactoring few emmet unit tests --- .../emmet/src/test/abbreviationAction.test.ts | 43 ++++++------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/extensions/emmet/src/test/abbreviationAction.test.ts b/extensions/emmet/src/test/abbreviationAction.test.ts index bff15fc6ecc..a8bd637da32 100644 --- a/extensions/emmet/src/test/abbreviationAction.test.ts +++ b/extensions/emmet/src/test/abbreviationAction.test.ts @@ -339,45 +339,21 @@ suite('Tests for jsx, xml and xsl', () => { }); test('No expanding text inside open tag in completion list (jsx)', () => { - return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { - editor.selection = new Selection(2, 4, 2, 4); - const cancelSrc = new CancellationTokenSource(); - const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); - assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); - return Promise.resolve(); - }); + return testNoCompletion('jsx', htmlContents, new Selection(2, 4, 2, 4)); }); test('No expanding tag that is opened, but not closed in completion list (jsx)', () => { - return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { - editor.selection = new Selection(9, 6, 9, 6); - const cancelSrc = new CancellationTokenSource(); - const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); - assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); - return Promise.resolve(); - }); + return testNoCompletion('jsx', htmlContents, new Selection(9, 6, 9, 6)); }); test('No expanding text inside open tag when there is no closing tag in completion list (jsx)', () => { - return withRandomFileEditor(htmlContents, 'jsx', (editor, doc) => { - editor.selection = new Selection(9, 8, 9, 8); - const cancelSrc = new CancellationTokenSource(); - const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); - assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); - return Promise.resolve(); - }); + return testNoCompletion('jsx', htmlContents, new Selection(9, 8, 9, 8)); }); test('No expanding text in completion list inside open tag when there is no closing tag when there is no parent node (jsx)', () => { - const fileContents = '<img s'; - return withRandomFileEditor(fileContents, 'jsx', (editor, doc) => { - editor.selection = new Selection(0, 6, 0, 6); - const cancelSrc = new CancellationTokenSource(); - const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); - assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); - return Promise.resolve(); - }); + return testNoCompletion('jsx', '<img s', new Selection(0, 6, 0, 6)); }); + }); function testExpandAbbreviation(syntax: string, selection: Selection, abbreviation: string, expandedText: string, shouldFail?: boolean): Thenable<any> { @@ -424,3 +400,12 @@ function testHtmlCompletionProvider(selection: Selection, abbreviation: string, }); } +function testNoCompletion(syntax: string, fileContents: string, selection: Selection): Thenable<any> { + return withRandomFileEditor(fileContents, syntax, (editor, doc) => { + editor.selection = selection; + const cancelSrc = new CancellationTokenSource(); + const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke }); + assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`); + return Promise.resolve(); + }); +} From 30a82b4adac7c42555e739c47cadb916ac2a7894 Mon Sep 17 00:00:00 2001 From: Daniel Ye <danyeh@microsoft.com> Date: Thu, 19 Apr 2018 17:29:20 -0700 Subject: [PATCH 1025/1070] 2018-04-19. Merged in translations from Transifex. --- i18n/chs/extensions/emmet/package.i18n.json | 5 +- .../out/security.i18n.json | 2 + i18n/chs/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 65 +++++++++++++++++++ i18n/chs/src/vs/base/node/processes.i18n.json | 3 +- i18n/chs/src/vs/base/node/zip.i18n.json | 1 + .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 15 ++--- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 10 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 1 + .../codeAction/codeActionCommands.i18n.json | 18 +++++ .../contrib/find/findController.i18n.json | 1 + .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 9 +++ .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../electron-main/issueService.i18n.json | 3 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadWebview.i18n.json | 2 +- .../parts/editor/editorStatus.i18n.json | 2 +- .../parts/editor/resourceViewer.i18n.json | 6 +- .../parts/quickinput/quickInput.i18n.json | 11 ++++ .../parts/quickinput/quickInputBox.i18n.json | 10 +++ .../electron-browser/actions.i18n.json | 1 + .../main.contribution.i18n.json | 1 + .../electron-browser/accessibility.i18n.json | 4 +- .../debug/browser/breakpointsView.i18n.json | 2 +- .../breakpointWidget.i18n.json | 5 +- .../debug.contribution.i18n.json | 3 +- .../debugConfigurationManager.i18n.json | 2 +- .../debugEditorContribution.i18n.json | 7 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 17 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../extensionEditor.i18n.json | 2 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 6 +- .../extensionsViewlet.i18n.json | 2 +- .../browser/editors/textFileEditor.i18n.json | 4 +- .../electron-browser/fileActions.i18n.json | 2 +- .../files.contribution.i18n.json | 6 +- .../views/explorerViewer.i18n.json | 1 - .../htmlPreviewPart.i18n.json | 2 +- .../localizations.contribution.i18n.json | 4 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 11 ++++ .../markersPanelActions.i18n.json | 10 +++ .../electron-browser/messages.i18n.json | 8 ++- .../browser/keybindingsEditor.i18n.json | 31 +++++---- .../keybindingsEditorContribution.i18n.json | 2 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../preferences.contribution.i18n.json | 2 +- .../browser/gotoLineHandler.i18n.json | 2 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 7 +- .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../task.contribution.i18n.json | 9 ++- .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 6 +- .../terminalService.i18n.json | 2 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 8 +-- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../overlay/browser/welcomeOverlay.i18n.json | 1 + .../vs_code_welcome_page.i18n.json | 4 +- .../menusExtensionPoint.i18n.json | 6 +- .../configurationExtensionPoint.i18n.json | 1 + .../configurationEditingService.i18n.json | 1 + .../node/configurationService.i18n.json | 11 ++++ .../configurationResolverService.i18n.json | 24 +++---- .../common/extensionsRegistry.i18n.json | 4 ++ .../extensionService.i18n.json | 3 +- .../electron-browser/fileService.i18n.json | 17 ++++- .../remoteFileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 6 +- .../keybindingService.i18n.json | 6 +- .../colorThemeStore.i18n.json | 2 +- .../fileIconThemeStore.i18n.json | 2 +- i18n/cht/extensions/css/package.i18n.json | 4 +- i18n/cht/extensions/emmet/package.i18n.json | 3 +- i18n/cht/extensions/html/package.i18n.json | 4 +- i18n/cht/extensions/json/package.i18n.json | 4 +- .../out/security.i18n.json | 2 + i18n/cht/extensions/php/package.i18n.json | 3 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 62 ++++++++++++++++++ i18n/cht/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 12 ++++ .../src/vs/code/electron-main/menus.i18n.json | 2 +- .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 1 + .../common/view/editorColorRegistry.i18n.json | 4 ++ .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 7 ++ .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 1 + .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../main.contribution.i18n.json | 7 ++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 2 + .../extensionEditor.i18n.json | 2 - .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 3 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 2 +- .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 1 - .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 7 +- .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 3 + .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 7 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 10 +++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 11 +--- .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 16 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../css-language-features/package.i18n.json | 1 + i18n/deu/extensions/css/package.i18n.json | 3 +- i18n/deu/extensions/emmet/package.i18n.json | 4 +- .../deu/extensions/git/out/commands.i18n.json | 1 + i18n/deu/extensions/git/package.i18n.json | 1 + i18n/deu/extensions/html/package.i18n.json | 4 +- i18n/deu/extensions/json/package.i18n.json | 4 +- .../out/features/preview.i18n.json | 1 + .../package.i18n.json | 1 + .../php-language-features/package.i18n.json | 3 +- i18n/deu/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 12 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 58 +++++++++++++++++ i18n/deu/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 1 - .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 10 +++ .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../common/view/editorColorRegistry.i18n.json | 3 + .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 40 +++++++++++- .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 2 + .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../api/node/extHostProgress.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../main.contribution.i18n.json | 9 +++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 4 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 1 + .../extensionEditor.i18n.json | 7 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 7 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../electron-browser/markers.i18n.json | 3 +- .../markersFileDecorations.i18n.json | 2 + .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 8 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 4 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 15 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../css-language-features/package.i18n.json | 2 + i18n/esn/extensions/css/package.i18n.json | 1 + i18n/esn/extensions/emmet/package.i18n.json | 6 +- .../esn/extensions/git/out/commands.i18n.json | 1 + i18n/esn/extensions/html/package.i18n.json | 3 +- .../out/security.i18n.json | 3 + .../php-language-features/package.i18n.json | 4 +- i18n/esn/extensions/php/package.i18n.json | 3 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 64 ++++++++++++++++++ i18n/esn/src/vs/base/node/processes.i18n.json | 3 +- i18n/esn/src/vs/base/node/zip.i18n.json | 1 + .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 13 ++-- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 2 + .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 10 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 4 ++ .../codeAction/codeActionCommands.i18n.json | 17 +++++ .../contrib/find/findController.i18n.json | 1 + .../contrib/format/formatActions.i18n.json | 4 +- .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 10 +++ .../snippet/snippetVariables.i18n.json | 35 ++++++++++ .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 5 ++ .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../electron-main/issueService.i18n.json | 3 +- .../list/browser/listService.i18n.json | 3 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 2 +- .../api/node/extHostProgress.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 2 +- .../parts/editor/resourceViewer.i18n.json | 6 +- .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 11 ++++ .../parts/quickinput/quickInputBox.i18n.json | 10 +++ .../electron-browser/actions.i18n.json | 1 + .../main.contribution.i18n.json | 10 +++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 3 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 7 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 3 + .../browser/editors/textFileEditor.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 7 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 8 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 8 ++- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 8 +-- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../overlay/browser/welcomeOverlay.i18n.json | 1 + .../vs_code_welcome_page.i18n.json | 2 - .../configurationEditingService.i18n.json | 1 + .../node/configurationService.i18n.json | 11 ++++ .../configurationResolverService.i18n.json | 11 +--- .../common/extensionsRegistry.i18n.json | 4 ++ .../extensionService.i18n.json | 3 +- .../electron-browser/fileService.i18n.json | 16 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + i18n/fra/extensions/css/package.i18n.json | 4 +- i18n/fra/extensions/emmet/package.i18n.json | 5 +- .../fra/extensions/git/out/commands.i18n.json | 1 + i18n/fra/extensions/git/package.i18n.json | 1 + .../out/security.i18n.json | 2 + .../php-language-features/package.i18n.json | 3 +- i18n/fra/extensions/php/package.i18n.json | 3 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 65 +++++++++++++++++++ i18n/fra/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 13 ++-- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 3 + .../codeAction/codeActionCommands.i18n.json | 18 +++++ .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 27 ++++++++ .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../electron-main/issueService.i18n.json | 3 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 2 +- .../parts/editor/editorStatus.i18n.json | 2 +- .../parts/editor/resourceViewer.i18n.json | 6 +- .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 11 ++++ .../parts/quickinput/quickInputBox.i18n.json | 10 +++ .../electron-browser/actions.i18n.json | 1 + .../main.contribution.i18n.json | 7 ++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 6 +- .../debug.contribution.i18n.json | 3 +- .../debugConfigurationManager.i18n.json | 2 +- .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 3 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 10 ++- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 3 + .../browser/editors/textFileEditor.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 8 ++- .../files.contribution.i18n.json | 2 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 3 +- .../electron-browser/markers.i18n.json | 3 +- .../markersFileDecorations.i18n.json | 1 + .../electron-browser/markersPanel.i18n.json | 11 ++++ .../markersPanelActions.i18n.json | 10 +++ .../electron-browser/messages.i18n.json | 18 ++++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 10 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 8 ++- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 8 +-- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../overlay/browser/welcomeOverlay.i18n.json | 1 + .../vs_code_welcome_page.i18n.json | 4 +- .../configurationExtensionPoint.i18n.json | 1 + .../configurationEditingService.i18n.json | 1 + .../node/configurationService.i18n.json | 11 ++++ .../configurationResolverService.i18n.json | 24 +++---- .../common/extensionsRegistry.i18n.json | 4 ++ .../extensionService.i18n.json | 3 +- .../electron-browser/fileService.i18n.json | 16 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + i18n/hun/extensions/emmet/package.i18n.json | 1 - .../out/security.i18n.json | 1 + i18n/hun/extensions/php/package.i18n.json | 1 - .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 58 +++++++++++++++++ i18n/hun/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 13 ++-- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 1 + .../codeAction/codeActionCommands.i18n.json | 18 +++++ .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 9 +++ .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../electron-main/issueService.i18n.json | 3 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadWebview.i18n.json | 2 +- .../parts/editor/editorStatus.i18n.json | 2 +- .../parts/editor/resourceViewer.i18n.json | 6 +- .../parts/quickinput/quickInput.i18n.json | 11 ++++ .../parts/quickinput/quickInputBox.i18n.json | 10 +++ .../electron-browser/actions.i18n.json | 1 + .../main.contribution.i18n.json | 1 + .../debug/browser/breakpointsView.i18n.json | 1 - .../breakpointWidget.i18n.json | 5 +- .../debug.contribution.i18n.json | 3 +- .../debugConfigurationManager.i18n.json | 2 +- .../debugEditorContribution.i18n.json | 6 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 17 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 +- .../browser/editors/textFileEditor.i18n.json | 4 +- .../electron-browser/fileActions.i18n.json | 2 +- .../files.contribution.i18n.json | 2 +- .../views/explorerViewer.i18n.json | 1 - .../localizations.contribution.i18n.json | 2 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 1 - .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 7 +- .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../task.contribution.i18n.json | 9 ++- .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 6 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 8 +-- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../vs_code_welcome_page.i18n.json | 2 - .../configurationExtensionPoint.i18n.json | 1 + .../node/configurationService.i18n.json | 11 ++++ .../configurationResolverService.i18n.json | 14 +--- .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 16 ++++- .../remoteFileService.i18n.json | 1 + i18n/ita/extensions/css/package.i18n.json | 4 +- i18n/ita/extensions/emmet/package.i18n.json | 4 +- .../ita/extensions/git/out/commands.i18n.json | 1 + i18n/ita/extensions/git/package.i18n.json | 1 + i18n/ita/extensions/html/package.i18n.json | 4 +- .../json-language-features/package.i18n.json | 1 + i18n/ita/extensions/json/package.i18n.json | 4 +- .../php-language-features/package.i18n.json | 4 +- i18n/ita/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 57 ++++++++++++++++ i18n/ita/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 1 - .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 10 +++ .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 1 + .../common/view/editorColorRegistry.i18n.json | 4 ++ .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 40 +++++++++++- .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 3 + .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../api/node/extHostProgress.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../main.contribution.i18n.json | 9 +++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 4 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 23 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 6 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 7 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 3 +- .../electron-browser/markers.i18n.json | 3 +- .../markersFileDecorations.i18n.json | 4 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 8 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 4 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 15 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + i18n/jpn/extensions/emmet/package.i18n.json | 5 +- .../out/security.i18n.json | 2 + i18n/jpn/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 65 +++++++++++++++++++ i18n/jpn/src/vs/base/node/processes.i18n.json | 3 +- .../browser/quickOpenModel.i18n.json | 2 +- .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 13 ++-- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 1 + .../codeAction/codeActionCommands.i18n.json | 18 +++++ .../contrib/format/formatActions.i18n.json | 1 + .../vs/editor/contrib/links/links.i18n.json | 2 + .../message/messageController.i18n.json | 9 +++ .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionValidator.i18n.json | 2 +- .../node/integrityServiceImpl.i18n.json | 4 +- .../electron-main/issueService.i18n.json | 3 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadWebview.i18n.json | 2 +- .../parts/editor/editorStatus.i18n.json | 2 +- .../parts/editor/resourceViewer.i18n.json | 6 +- .../parts/quickinput/quickInput.i18n.json | 11 ++++ .../parts/quickinput/quickInputBox.i18n.json | 10 +++ .../electron-browser/actions.i18n.json | 1 + .../main.contribution.i18n.json | 1 + .../debug/browser/breakpointsView.i18n.json | 2 +- .../breakpointWidget.i18n.json | 5 +- .../debug.contribution.i18n.json | 3 +- .../debugConfigurationManager.i18n.json | 2 +- .../debugEditorContribution.i18n.json | 7 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 17 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../extensionEditor.i18n.json | 2 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 +- .../browser/editors/textFileEditor.i18n.json | 4 +- .../electron-browser/fileActions.i18n.json | 2 +- .../files.contribution.i18n.json | 2 +- .../views/explorerViewer.i18n.json | 1 - .../localizations.contribution.i18n.json | 2 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 11 ++++ .../markersPanelActions.i18n.json | 10 +++ .../electron-browser/messages.i18n.json | 8 ++- .../browser/keybindingsEditor.i18n.json | 1 - .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 3 +- .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 7 +- .../search.contribution.i18n.json | 8 ++- .../snippetsService.i18n.json | 2 +- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../task.contribution.i18n.json | 9 ++- .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 8 ++- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 8 +-- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../overlay/browser/welcomeOverlay.i18n.json | 1 + .../vs_code_welcome_page.i18n.json | 2 - .../configurationExtensionPoint.i18n.json | 1 + .../configurationEditingService.i18n.json | 1 + .../node/configurationService.i18n.json | 11 ++++ .../configurationResolverService.i18n.json | 24 +++---- .../common/extensionsRegistry.i18n.json | 4 ++ .../extensionService.i18n.json | 3 +- .../electron-browser/fileService.i18n.json | 17 ++++- .../remoteFileService.i18n.json | 1 + i18n/kor/extensions/css/package.i18n.json | 4 +- i18n/kor/extensions/emmet/package.i18n.json | 4 +- .../kor/extensions/git/out/commands.i18n.json | 1 + i18n/kor/extensions/git/package.i18n.json | 1 + i18n/kor/extensions/html/package.i18n.json | 4 +- .../json-language-features/package.i18n.json | 1 + i18n/kor/extensions/json/package.i18n.json | 4 +- .../out/features/preview.i18n.json | 1 + .../package.i18n.json | 2 + i18n/kor/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 10 +++ .../package.i18n.json | 58 +++++++++++++++++ i18n/kor/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 1 - .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 10 +++ .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../common/view/editorColorRegistry.i18n.json | 6 +- .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 40 +++++++++++- .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 3 + .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../api/node/extHostProgress.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../main.contribution.i18n.json | 9 +++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 4 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 4 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 5 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../search/browser/searchActions.i18n.json | 1 - .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 8 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 15 +++++ .../terminalActions.i18n.json | 4 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../configurationResolverService.i18n.json | 13 +--- .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 15 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../configuration-editing/package.i18n.json | 3 +- .../css-language-features/package.i18n.json | 2 + i18n/ptb/extensions/css/package.i18n.json | 4 +- i18n/ptb/extensions/emmet/package.i18n.json | 6 +- .../extension-editing/package.i18n.json | 3 +- i18n/ptb/extensions/fsharp/package.i18n.json | 3 +- .../ptb/extensions/git/out/commands.i18n.json | 1 + i18n/ptb/extensions/git/package.i18n.json | 1 + i18n/ptb/extensions/go/package.i18n.json | 3 +- i18n/ptb/extensions/groovy/package.i18n.json | 3 +- .../extensions/handlebars/package.i18n.json | 3 +- i18n/ptb/extensions/hlsl/package.i18n.json | 3 +- .../html-language-features/package.i18n.json | 1 + i18n/ptb/extensions/html/package.i18n.json | 4 +- i18n/ptb/extensions/ini/package.i18n.json | 3 +- i18n/ptb/extensions/java/package.i18n.json | 3 +- .../extensions/javascript/package.i18n.json | 3 +- i18n/ptb/extensions/json/package.i18n.json | 4 +- i18n/ptb/extensions/less/package.i18n.json | 3 +- i18n/ptb/extensions/log/package.i18n.json | 3 +- i18n/ptb/extensions/lua/package.i18n.json | 3 +- i18n/ptb/extensions/make/package.i18n.json | 3 +- .../markdown-basics/package.i18n.json | 3 +- .../features/previewContentProvider.i18n.json | 1 + .../out/security.i18n.json | 8 ++- .../package.i18n.json | 8 ++- .../merge-conflict/package.i18n.json | 1 + .../extensions/objective-c/package.i18n.json | 3 +- i18n/ptb/extensions/perl/package.i18n.json | 3 +- .../php-language-features/package.i18n.json | 4 +- i18n/ptb/extensions/php/package.i18n.json | 3 +- .../extensions/powershell/package.i18n.json | 3 +- i18n/ptb/extensions/pug/package.i18n.json | 3 +- i18n/ptb/extensions/python/package.i18n.json | 3 +- i18n/ptb/extensions/r/package.i18n.json | 3 +- i18n/ptb/extensions/razor/package.i18n.json | 3 +- i18n/ptb/extensions/ruby/package.i18n.json | 3 +- i18n/ptb/extensions/rust/package.i18n.json | 3 +- i18n/ptb/extensions/scss/package.i18n.json | 3 +- .../extensions/shaderlab/package.i18n.json | 3 +- .../extensions/shellscript/package.i18n.json | 3 +- i18n/ptb/extensions/sql/package.i18n.json | 3 +- i18n/ptb/extensions/swift/package.i18n.json | 3 +- .../typescript-basics/package.i18n.json | 3 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 64 ++++++++++++++++++ i18n/ptb/extensions/vb/package.i18n.json | 3 +- i18n/ptb/extensions/xml/package.i18n.json | 3 +- i18n/ptb/extensions/yaml/package.i18n.json | 3 +- i18n/ptb/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 3 +- .../issue/issueReporterPage.i18n.json | 13 ++-- .../processExplorerMain.i18n.json | 15 +++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../vs/code/electron-main/windows.i18n.json | 2 +- .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../config/commonEditorConfig.i18n.json | 6 ++ .../common/view/editorColorRegistry.i18n.json | 4 ++ .../codeAction/codeActionCommands.i18n.json | 11 ++++ .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 40 +++++++++++- .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 4 +- .../node/extensionManagementService.i18n.json | 3 + .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadWebview.i18n.json | 3 +- .../editor/editor.contribution.i18n.json | 1 + .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../notificationsCenter.i18n.json | 2 + .../notificationsStatus.i18n.json | 5 +- .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../vs/workbench/browser/viewlet.i18n.json | 1 + .../electron-browser/actions.i18n.json | 4 +- .../main.contribution.i18n.json | 4 ++ .../debug/browser/breakpointsView.i18n.json | 6 +- .../debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 +- .../breakpointWidget.i18n.json | 2 - .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 6 +- .../electron-browser/debugService.i18n.json | 5 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 23 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 6 ++ .../extensionEditor.i18n.json | 8 ++- .../extensionTipsService.i18n.json | 4 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 3 +- .../views/explorerViewer.i18n.json | 1 - .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 1 - .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 4 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 6 +- .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../task.contribution.i18n.json | 5 +- .../common/terminalColorRegistry.i18n.json | 12 ++++ .../terminal.contribution.i18n.json | 1 + .../terminalActions.i18n.json | 1 + ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../vs_code_welcome_page.i18n.json | 2 - .../configurationEditingService.i18n.json | 5 ++ .../node/configurationService.i18n.json | 10 +++ .../common/extensionsRegistry.i18n.json | 1 + .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 14 +++- .../remoteFileService.i18n.json | 1 + .../themes/common/colorThemeSchema.i18n.json | 1 + .../css-language-features/package.i18n.json | 1 + i18n/rus/extensions/css/package.i18n.json | 4 +- i18n/rus/extensions/emmet/package.i18n.json | 4 +- .../rus/extensions/git/out/commands.i18n.json | 1 + i18n/rus/extensions/git/package.i18n.json | 1 + i18n/rus/extensions/html/package.i18n.json | 4 +- .../json-language-features/package.i18n.json | 1 + i18n/rus/extensions/json/package.i18n.json | 4 +- .../out/features/preview.i18n.json | 3 +- .../out/security.i18n.json | 3 + .../package.i18n.json | 1 + .../php-language-features/package.i18n.json | 4 +- i18n/rus/extensions/php/package.i18n.json | 2 +- .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 9 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 58 +++++++++++++++++ i18n/rus/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 1 - .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 10 +++ .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../common/view/editorColorRegistry.i18n.json | 3 + .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../message/messageController.i18n.json | 9 +++ .../snippet/snippetVariables.i18n.json | 40 +++++++++++- .../wordHighlighter/wordHighlighter.i18n.json | 2 + .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionManagementService.i18n.json | 3 + .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../list/browser/listService.i18n.json | 3 +- .../theme/common/colorRegistry.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 1 - .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../api/node/extHostProgress.i18n.json | 3 +- .../parts/editor/editorStatus.i18n.json | 1 - .../parts/editor/resourceViewer.i18n.json | 2 - .../notificationsCenter.i18n.json | 1 + .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../main.contribution.i18n.json | 9 +++ .../debug/browser/breakpointsView.i18n.json | 3 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 5 +- .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 8 +-- .../electron-browser/debugService.i18n.json | 4 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 16 +---- .../parts/debug/node/debugger.i18n.json | 24 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 3 + .../extensionEditor.i18n.json | 9 ++- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 7 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 3 +- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../output.contribution.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 8 ++- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 4 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 15 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 1 + .../electron-browser/TMSyntax.i18n.json | 1 + .../css-language-features/package.i18n.json | 6 +- i18n/trk/extensions/emmet/package.i18n.json | 4 +- .../trk/extensions/git/out/commands.i18n.json | 1 + i18n/trk/extensions/git/package.i18n.json | 1 + i18n/trk/extensions/php/package.i18n.json | 1 - .../out/commands.i18n.json | 16 +++++ .../features/completionItemProvider.i18n.json | 13 ++++ ...rectiveCommentCompletionProvider.i18n.json | 12 ++++ .../implementationsCodeLensProvider.i18n.json | 12 ++++ .../jsDocCompletionProvider.i18n.json | 10 +++ .../out/features/organizeImports.i18n.json | 10 +++ .../out/features/quickFixProvider.i18n.json | 10 +++ .../referencesCodeLensProvider.i18n.json | 12 ++++ .../out/features/taskProvider.i18n.json | 11 ++++ .../out/typescriptServiceClient.i18n.json | 19 ++++++ .../out/utils/api.i18n.json | 10 +++ .../out/utils/logger.i18n.json | 10 +++ .../out/utils/projectStatus.i18n.json | 13 ++++ .../out/utils/typingsStatus.i18n.json | 12 ++++ .../out/utils/versionPicker.i18n.json | 13 ++++ .../out/utils/versionProvider.i18n.json | 11 ++++ .../package.i18n.json | 58 +++++++++++++++++ i18n/trk/src/vs/base/node/processes.i18n.json | 3 +- .../issue/issueReporterMain.i18n.json | 1 - .../issue/issueReporterPage.i18n.json | 10 +-- .../processExplorerMain.i18n.json | 10 +++ .../browser/widget/diffReview.i18n.json | 1 - .../editor/common/commonCodeEditor.i18n.json | 9 +++ .../codeAction/codeActionCommands.i18n.json | 12 ++++ .../message/messageController.i18n.json | 9 +++ .../platform/environment/node/argv.i18n.json | 2 - .../node/extensionValidator.i18n.json | 1 - .../node/integrityServiceImpl.i18n.json | 4 +- .../viewsContainersExtensionPoint.i18n.json | 12 ++++ .../api/browser/viewsExtensionPoint.i18n.json | 5 +- .../mainThreadSaveParticipant.i18n.json | 2 + .../mainThreadWebview.i18n.json | 3 +- .../api/node/extHostTreeViews.i18n.json | 2 +- .../parts/editor/editorStatus.i18n.json | 7 +- .../parts/editor/resourceViewer.i18n.json | 2 - .../parts/quickinput/quickInput.i18n.json | 10 +++ .../parts/quickinput/quickInputBox.i18n.json | 9 +++ .../src/vs/workbench/common/views.i18n.json | 2 +- .../main.contribution.i18n.json | 9 +++ .../debug/browser/breakpointsView.i18n.json | 2 +- .../browser/debugEditorActions.i18n.json | 1 + .../breakpointWidget.i18n.json | 2 - .../debugConfigurationManager.i18n.json | 1 - .../debugEditorContribution.i18n.json | 7 +- .../electron-browser/debugService.i18n.json | 4 +- .../rawDebugSession.i18n.json | 3 - .../parts/debug/node/debugAdapter.i18n.json | 17 +---- .../parts/debug/node/debugger.i18n.json | 23 +++++++ .../parts/debug/node/terminals.i18n.json | 14 ++++ .../browser/extensionsActions.i18n.json | 1 + .../extensionEditor.i18n.json | 6 +- .../extensionTipsService.i18n.json | 2 +- .../extensionsUtils.i18n.json | 4 +- .../extensionsViewlet.i18n.json | 2 + .../electron-browser/fileActions.i18n.json | 7 +- .../files.contribution.i18n.json | 1 + .../views/explorerViewer.i18n.json | 3 +- .../localizations.contribution.i18n.json | 9 +-- .../markers.contribution.i18n.json | 2 +- .../electron-browser/markers.i18n.json | 3 +- .../electron-browser/markersPanel.i18n.json | 9 +++ .../markersPanelActions.i18n.json | 9 +++ .../electron-browser/messages.i18n.json | 13 +++- .../output/browser/outputActions.i18n.json | 3 +- .../browser/keybindingsEditor.i18n.json | 3 +- .../browser/preferencesActions.i18n.json | 1 + .../browser/preferencesEditor.i18n.json | 1 - .../browser/preferencesRenderers.i18n.json | 6 +- .../scm/electron-browser/scmViewlet.i18n.json | 3 +- .../search/browser/searchActions.i18n.json | 3 +- .../parts/search/browser/searchView.i18n.json | 4 ++ .../search.contribution.i18n.json | 8 ++- .../languageSurveys.contribution.i18n.json | 4 +- .../nps.contribution.i18n.json | 4 +- .../tasks/common/problemMatcher.i18n.json | 1 + .../electron-browser/jsonSchema_v2.i18n.json | 7 ++ .../task.contribution.i18n.json | 7 +- .../tasks/node/taskConfiguration.i18n.json | 1 + .../common/terminalColorRegistry.i18n.json | 16 +++++ .../terminalActions.i18n.json | 4 +- ...edWorkspaceSettings.contribution.i18n.json | 4 +- .../update/electron-browser/update.i18n.json | 6 +- .../webview.contribution.i18n.json | 3 +- .../webviewCommands.i18n.json | 11 ++++ .../telemetryOptOut.i18n.json | 2 + .../vs_code_welcome_page.i18n.json | 2 - .../node/configurationService.i18n.json | 10 +++ .../extensionService.i18n.json | 1 - .../electron-browser/fileService.i18n.json | 15 ++++- .../remoteFileService.i18n.json | 1 + .../electron-browser/TMGrammars.i18n.json | 3 +- .../electron-browser/TMSyntax.i18n.json | 1 + .../common/fileIconThemeSchema.i18n.json | 6 +- 1320 files changed, 7478 insertions(+), 1433 deletions(-) create mode 100644 i18n/chs/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/chs/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/chs/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/chs/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/chs/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/chs/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/chs/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/chs/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/chs/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/cht/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/cht/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/cht/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/cht/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/cht/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/cht/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/cht/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/cht/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/deu/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/deu/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/deu/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/deu/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/deu/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/deu/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/deu/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/deu/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/esn/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/esn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/esn/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/esn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/esn/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/esn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/esn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/esn/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/fra/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/fra/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/fra/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/fra/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/fra/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/fra/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/fra/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/fra/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/hun/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/hun/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/hun/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/hun/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/hun/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/hun/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/hun/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/hun/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/ita/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/ita/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/ita/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/ita/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/ita/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/ita/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/ita/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/ita/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/jpn/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/jpn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/jpn/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/jpn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/jpn/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/jpn/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/kor/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/kor/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/kor/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/kor/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/kor/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/kor/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/kor/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/kor/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/ptb/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/ptb/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/ptb/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/ptb/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/ptb/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/ptb/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/rus/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/rus/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/rus/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/rus/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/rus/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/rus/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/rus/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/rus/src/vs/workbench/services/configuration/node/configurationService.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/commands.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/organizeImports.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/features/taskProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/api.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/logger.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/projectStatus.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/versionPicker.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/out/utils/versionProvider.i18n.json create mode 100644 i18n/trk/extensions/typescript-language-features/package.i18n.json create mode 100644 i18n/trk/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json create mode 100644 i18n/trk/src/vs/editor/common/commonCodeEditor.i18n.json create mode 100644 i18n/trk/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json create mode 100644 i18n/trk/src/vs/editor/contrib/message/messageController.i18n.json create mode 100644 i18n/trk/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json create mode 100644 i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json create mode 100644 i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/debug/node/debugger.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/debug/node/terminals.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json create mode 100644 i18n/trk/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json create mode 100644 i18n/trk/src/vs/workbench/services/configuration/node/configurationService.i18n.json diff --git a/i18n/chs/extensions/emmet/package.i18n.json b/i18n/chs/extensions/emmet/package.i18n.json index 14e1d1d65e4..5cf0382870f 100644 --- a/i18n/chs/extensions/emmet/package.i18n.json +++ b/i18n/chs/extensions/emmet/package.i18n.json @@ -35,7 +35,7 @@ "emmetExtensionsPath": "包含 Emmet 配置文件与代码片段的文件夹路径。", "emmetShowExpandedAbbreviation": "在建议中显示展开的 Emmet 缩写。\n选择 \"inMarkupAndStylesheetFilesOnly\" 选项将仅应用于 html、haml、jade、slim、xml、xsl、css、scss、sass、less 和 stylus 文件。\n选择 \"always\" 选项将应用于所有适用文件不限于标记或 CSS 的所有部分。", "emmetShowAbbreviationSuggestions": "显示可能的 Emmet 缩写作为建议。在样式表中或当 emmet.showExpandedAbbreviation 设置为 \"never\" 时不适用。", - "emmetIncludeLanguages": "在默认不支持 Emmet 的语言中启用 Emmet 缩写功能。在此添加该语言与支持 Emmet 的语言之间的映射。\n示例: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", + "emmetIncludeLanguages": "在默认不支持 Emmet 的语言中启用 Emmet 缩写功能。在此添加该语言与受支持的语言间的映射。\n示例: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "用于 Emmet 代码片段的变量", "emmetTriggerExpansionOnTab": "启用后,按下 TAB 键,将展开 Emmet 缩写。", "emmetPreferences": "用于修改 Emmet 某些操作和解析程序的行为的首选项。", @@ -60,5 +60,6 @@ "emmetPreferencesCssMozProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"moz\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"moz\" 前缀,请设为空字符串。", "emmetPreferencesCssOProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"o\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"o\" 前缀,请设为空字符串。", "emmetPreferencesCssMsProperties": "Emmet 缩写中使用的由 \"-\" 打头有 \"ms\" 前缀的 CSS 属性,使用半角逗号 (\",\") 进行分隔。若要始终避免 \"ms\" 前缀,请设为空字符串。", - "emmetPreferencesCssFuzzySearchMinScore": "显示的缩写模糊匹配应达到的最低分数 (0 到 1 之间)。较低的值可能使匹配错误变多,较高的值可能将不会显示应有的匹配项。" + "emmetPreferencesCssFuzzySearchMinScore": "显示的缩写模糊匹配应达到的最低分数 (0 到 1 之间)。较低的值可能使匹配错误变多,较高的值可能将不会显示应有的匹配项。", + "emmetOptimizeStylesheetParsing": "当设置为 false 时,将分析整个文件并确定当前位置能否展开 Emmet 缩写。当设置为 true 时,则仅在 CSS/SCSS/LESS 文件中进行分析。" } \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-language-features/out/security.i18n.json b/i18n/chs/extensions/markdown-language-features/out/security.i18n.json index 152913f9116..43ddb78737c 100644 --- a/i18n/chs/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/chs/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,8 @@ ], "strict.title": "严格", "strict.description": "仅载入安全内容", + "insecureLocalContent.title": "允许不安全的本地内容", + "insecureLocalContent.description": "允许通过 http 载入来自 localhost 的内容", "insecureContent.title": "允许不安全内容", "insecureContent.description": "允许通过 http 载入内容", "disable.title": "禁用", diff --git a/i18n/chs/extensions/php/package.i18n.json b/i18n/chs/extensions/php/package.i18n.json index 4de84845dc2..f946b5c8649 100644 --- a/i18n/chs/extensions/php/package.i18n.json +++ b/i18n/chs/extensions/php/package.i18n.json @@ -6,6 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP 语言功能", + "displayName": "PHP 语言基础功能", "description": "为 PHP 文件提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/commands.i18n.json b/i18n/chs/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..71f03151b6f --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "请在 VS Code 中打开一个文件夹,以使用 TypeScript 或 JavaScript 项目", + "typescript.projectConfigUnsupportedFile": "无法确定 TypeScript 或 JavaScript 项目。不受支持的文件类型", + "typescript.projectConfigCouldNotGetInfo": "无法确定 TypeScript 或 JavaScript 项目", + "typescript.noTypeScriptProjectConfig": "文件不属于 TypeScript 项目。点击[这里]({0})了解更多。", + "typescript.noJavaScriptProjectConfig": "文件不属于 JavaScript 项目。点击[这里]({0})了解更多。", + "typescript.configureTsconfigQuickPick": "配置 tsconfig.json", + "typescript.configureJsconfigQuickPick": "配置 jsconfig.json" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..cec1f8a1e0a --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "选择要应用的代码操作", + "acquiringTypingsLabel": "正在获取 typings...", + "acquiringTypingsDetail": "获取 IntelliSense 的 typings 定义。", + "autoImportLabel": "从 {0} 自动导入" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..0e60e3412a4 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "在 JavaScript 文件中启用语义检查。必须在文件顶部。", + "ts-nocheck": "在 JavaScript 文件中禁用语义检查。必须在文件顶部。", + "ts-ignore": "取消文件下一行的 @ts-check 错误提示。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..021db468b54 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 个实现", + "manyImplementationLabel": "{0} 个实现", + "implementationsErrorLabel": "无法确定实现" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..1d385873b11 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc 注释" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..77f30b069ab --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "整理 import 语句" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..d22ade03db1 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (修复文件中所有)" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..5410b680677 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 个引用", + "manyReferenceLabel": "{0} 个引用", + "referenceErrorLabel": "无法确定引用" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..cd6842c9ce3 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "构建 - {0}", + "buildAndWatchTscLabel": "监视 - {0}" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/chs/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..d4107581eba --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "路径 {0} 未指向有效的 tsserver 安装。请回退到捆绑的 TypeScript 版本。", + "serverCouldNotBeStarted": "无法启动 TypeScript 语言服务器。错误消息为: {0}", + "typescript.openTsServerLog.notSupported": "TS 服务器日志记录需要 TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "TS 服务器日志记录已关闭。请设置 \"typescript.tsserver.log\" 并重启\n TS 服务器以启用日志记录", + "typescript.openTsServerLog.enableAndReloadOption": "启用日志记录并重启 TS 服务器", + "typescript.openTsServerLog.noLogFile": "TS 服务器尚未启动日志记录。", + "openTsServerLog.openFileFailedFailed": "无法打开 TS 服务器日志文件", + "serverDiedAfterStart": "TypeScript 语言服务在其启动后已中止 5 次。将不会重启该服务。", + "serverDiedReportIssue": "使用英文报告问题", + "serverDied": "在过去 5 分钟内,TypeScript 语言服务意外中止了 5 次。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..006fe312258 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "无效版本" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..cd5096356f3 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "若要启用项目范围内的 JavaScript/TypeScript 语言功能,请排除包含多个文件的文件夹,例如: {0}", + "hintExclude.generic": "若要启用项目范围内的 JavaScript/TypeScript 语言功能,请排除包含不需要处理的源文件的大型文件夹。", + "large.label": "配置排除", + "hintExclude.tooltip": "若要启用项目范围内的 JavaScript/TypeScript 语言功能,请排除包含不需要处理的源文件的大型文件夹。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..fe9128f40d0 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "提取数据以实现更好的 TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "无法为 JavaScript 语言功能安装 typings 文件。请确认 NPM 已安装,或在你的用户设置中配置 “typescript.npm”。点击[这里]({0})了解更多。", + "typesInstallerInitializationFailed.doNotCheckAgain": "不再显示" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..c9f87e17e81 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "使用 VS Code 的版本", + "useWorkspaceVersionOption": "使用工作区版本", + "learnMore": "了解详细信息", + "selectTsVersion": "选择用于 JavaScript 和 TypeScript 语言功能的 TypeScript 版本" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/chs/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..4bb999f00f5 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "无法获取此目录 TypeScript 的版本", + "noBundledServerFound": "VS Code 的 tsserver 已被其他应用程序(例如运行异常的病毒检测工具)删除。请重新安装 VS Code。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-language-features/package.i18n.json b/i18n/chs/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..d12cc2e3f75 --- /dev/null +++ b/i18n/chs/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,65 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "JavaScript 和 TypeScript 的语言功能", + "description": "为 JavaScript 和 TypeScript 提供丰富的语言支持。", + "typescript.reloadProjects.title": "重载项目", + "javascript.reloadProjects.title": "重载项目", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "完成函数的参数签名。", + "typescript.tsdk.desc": "指定包含要使用的 tsserver 和 lib*.d.ts 文件的文件夹路径。", + "typescript.disableAutomaticTypeAcquisition": "禁用自动获取类型。需要 TypeScript >= 2.0.6。", + "typescript.tsserver.log": "将 TS 服务器的日志保存到一个文件。此日志可用于诊断 TS 服务器问题。日志可能包含你的项目中的文件路径、源代码和其他可能敏感的信息。", + "typescript.tsserver.pluginPaths": "其他可搜索 TypeScript 语言服务插件的路径。需要 TypeScript >= 2.3.0。", + "typescript.tsserver.pluginPaths.item": "相对或绝对路径。相对路径将根据工作区文件夹进行解析。", + "typescript.tsserver.trace": "对发送到 TS 服务器的消息启用跟踪。此跟踪信息可用于诊断 TS 服务器问题。 跟踪信息可能包含你的项目中的文件路径、源代码和其他可能敏感的信息。", + "typescript.validate.enable": "启用/禁用 TypeScript 验证。", + "typescript.format.enable": "启用/禁用默认 TypeScript 格式化程序。", + "javascript.format.enable": "启用/禁用 JavaScript 格式化程序。", + "format.insertSpaceAfterCommaDelimiter": "定义逗号分隔符后面的空格处理。", + "format.insertSpaceAfterConstructor": "定义构造器关键字后的空格处理。要求 TypeScript >= 2.3.0。", + "format.insertSpaceAfterSemicolonInForStatements": "在 For 语句中,定义分号后面的空格处理。", + "format.insertSpaceBeforeAndAfterBinaryOperators": "定义二进制运算符后面的空格处理", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "定义控制流语句中关键字后面的空格处理。", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "定义匿名函数的函数关键字后面的空格处理。", + "format.insertSpaceBeforeFunctionParenthesis": "在函数参数括号前定义空格处理。需要 TypeScript >= 2.1.5。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": "定义非空小括号的左括号后和右括号前的空格处理方式。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": "定义非空中括号的左括号后和右括号前的空格处理方式。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": "定义非空大括号的左括号后和右括号前的空格处理方式。要求 TypeScript >= 2.3.0。", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "定义模板字符串的左括号后面和右括号前面的空格处理。要求 TypeScript >= 2.0.6。", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "定义 JSX 表达式左括号后面和右括号前面的空格处理。要求 TypeScript >= 2.0.6。", + "format.insertSpaceAfterTypeAssertion": "定义 TypeScript 中类型断言后的空格处理。要求 TypeScript >= 2.4。", + "format.placeOpenBraceOnNewLineForFunctions": "定义函数的左大括号是否放置在新的一行。", + "format.placeOpenBraceOnNewLineForControlBlocks": "定义控制块的左括号是否放置在新的一行。", + "javascript.validate.enable": "启用/禁用 JavaScript 验证。", + "typescript.goToProjectConfig.title": "转到项目配置", + "javascript.goToProjectConfig.title": "转到项目配置", + "javascript.referencesCodeLens.enabled": "启用/禁用在 JavaScript 文件中引用 CodeLens。", + "typescript.referencesCodeLens.enabled": "启用/禁用在 TypeScript 文件中引用 CodeLens。要求 TypeScript >= 2.0.6。", + "typescript.implementationsCodeLens.enabled": "启用/禁用实现 CodeLens。要求 TypeScript >= 2.2.0。", + "typescript.openTsServerLog.title": "打开 TS 服务器日志", + "typescript.restartTsServer": "重启 TS 服务器", + "typescript.selectTypeScriptVersion.title": "选择 TypeScript 版本", + "typescript.reportStyleChecksAsWarnings": "将风格检查问题报告为警告", + "jsDocCompletion.enabled": "启用/禁用自动 JSDoc 注释", + "javascript.implicitProjectConfig.checkJs": "启用/禁用 JavaScript 文件的语义检查。现有的 jsconfig.json 或\n tsconfig.json 文件会覆盖此设置。要求 TypeScript >=2.3.1。", + "typescript.npm": "指定用于自动获取类型的 NPM 可执行文件的路径。要求 TypeScript >= 2.3.4。", + "typescript.check.npmIsInstalled": "检查是否安装了 NPM 以自动获取类型。", + "javascript.nameSuggestions": "启用/禁用在 JavaScript 建议列表中包含文件中的唯一名称。", + "typescript.tsc.autoDetect": "控制 tsc 任务的自动检测。\"off\" 关闭此功能。\"build\" 仅创建单次运行编译任务。\"watch\" 仅创建编译及监视任务。\"on\" 创建构建及监视任务。默认值为 \"on\"。", + "typescript.problemMatchers.tsc.label": "TypeScript 问题", + "typescript.problemMatchers.tscWatch.label": "TypeScript 问题(观看模式)", + "typescript.quickSuggestionsForPaths": "当输入导入路径时启用或禁用快速建议。", + "typescript.locale": "设置报告 TypeScript 错误时使用的区域设置。要求 TypeScript >= 2.6.0。默认 (\"null\") 将使用 VS Code 的区域设置。", + "javascript.implicitProjectConfig.experimentalDecorators": "对不属于任何工程的 JavaScript 文件启用或禁用 \"experimentalDecorators\" 设置。现有的 jsconfig.json 或\n tsconfig.json 文件会覆盖此设置。要求 TypeScript >=2.3.1。", + "typescript.autoImportSuggestions.enabled": "启用或禁用自动导入建议。要求 TypeScript >= 2.6.1", + "typescript.experimental.syntaxFolding": "启用或禁用语法折叠标记。", + "taskDefinition.tsconfig.description": "定义 TS 生成的 tsconfig 文件。", + "javascript.suggestionActions.enabled": "在 JavaScript 文件中启用或禁用编辑器的建议诊断。需要 TypeScript >= 2.8", + "typescript.suggestionActions.enabled": "在 TypeScript 文件中启用或禁用编辑器的建议诊断。需要 TypeScript >= 2.8" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/base/node/processes.i18n.json b/i18n/chs/src/vs/base/node/processes.i18n.json index a3eb373eac7..35229bd6699 100644 --- a/i18n/chs/src/vs/base/node/processes.i18n.json +++ b/i18n/chs/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "无法对 UNC 驱动器执行 shell 命令。" + ] } \ No newline at end of file diff --git a/i18n/chs/src/vs/base/node/zip.i18n.json b/i18n/chs/src/vs/base/node/zip.i18n.json index ac2caa975de..15ef1807072 100644 --- a/i18n/chs/src/vs/base/node/zip.i18n.json +++ b/i18n/chs/src/vs/base/node/zip.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "incompleteExtract": "解压不完整。提取了 {0} / {1} 个项目", "notFound": "在 Zip 中找不到 {0}。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 1be236770c9..5bdbd842cb2 100644 --- a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "在 GitHub 中预览", "loadingData": "正在加载数据...", + "rateLimited": "超出 GitHub 查询限制。请稍候。", "similarIssues": "类似的问题", "open": "开放", "closed": "已关闭", - "noResults": "未找到结果", + "noSimilarIssues": "没有找到类似问题", "settingsSearchIssue": "设置搜索的问题", "bugReporter": "问题报告", "featureRequest": "功能请求", diff --git a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index e66e99336b1..e0e39df949d 100644 --- a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -6,8 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "completeInEnglish": "请使用英文填写表单。", + "completeInEnglish": "请使用英文进行填写。", "issueTypeLabel": "这是一个", + "issueSourceLabel": "提交到", + "vscode": "Visual Studio Code", + "extension": "扩展", + "disableExtensionsLabelText": "请试着在{0}之后重现问题。如果此问题仅在扩展运行时才能重现,那么这可能是一个扩展的问题。", + "disableExtensions": "禁用所有扩展并重新加载窗口", + "chooseExtension": "扩展", "issueTitleLabel": "标题", "issueTitleRequired": "请输入标题。", "titleLengthValidation": "标题太长。", @@ -18,13 +24,6 @@ "extensions": "我的扩展", "searchedExtensions": "已搜索的扩展", "settingsSearchDetails": "设置搜索的详细信息", - "tryDisablingExtensions": "能否在禁用扩展后重现此问题?", - "yes": "是", - "no": "否", - "disableExtensionsLabelText": "尝试在{0}之后重现问题。", - "disableExtensions": "禁用所有扩展并重新加载窗口", - "showRunningExtensionsLabelText": "如果您怀疑这是扩展的问题,请{0}并进行报告。", - "showRunningExtensions": "查看所有运行中的扩展", "details": "请输入详细信息。", "loadingData": "正在加载数据..." } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/chs/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..fd812926a90 --- /dev/null +++ b/i18n/chs/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "CPU %", + "memory": "内存 (MB)", + "pid": "PID", + "name": "名称", + "killProcess": "结束进程", + "forceKillProcess": "强制结束进程" +} \ 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 ba4e0d03653..4f71710a76a 100644 --- a/i18n/chs/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/chs/src/vs/code/electron-main/menus.i18n.json @@ -161,6 +161,7 @@ "mMergeAllWindows": "合并所有窗口", "miToggleDevTools": "切换开发人员工具(&&T)", "miAccessibilityOptions": "辅助功能选项(&&O)", + "miOpenProcessExplorerer": "打开进程管理器(&&P)", "miReportIssue": "使用英文报告问题(&&I)", "miWelcome": "欢迎使用(&&W)", "miInteractivePlayground": "交互式演练场(&&I)", diff --git a/i18n/chs/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/chs/src/vs/editor/browser/widget/diffReview.i18n.json index 46a0d879f13..2397f44f074 100644 --- a/i18n/chs/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/chs/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "关闭", - "header": "第 {0} 个差异(共 {1} 个): 未修改 {2}, {3} 行,已修改 {4}, {5} 行", "blankLine": "空白", "equalLine": "未修改 {0},已修改 {1}: {2}", "insertLine": "+ 已修改 {0}: {1}", diff --git a/i18n/chs/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/chs/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..c66c25ea99c --- /dev/null +++ b/i18n/chs/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cursors.maximum": "光标数量被限制为 {0}。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json index 3a1ef19744b..f3c51a42e64 100644 --- a/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/chs/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "映射为 \"Ctrl\" (Windows 和 Linux) 或 \"Command\" (macOS)", "multiCursorModifier.alt": "映射为 \"Alt\" (Windows 和 Linux) 或 \"Option\" (macOS)", "multiCursorModifier": "在通过鼠标添加多个光标时使用的修改键。\"ctrlCmd\" 会映射为 \"Ctrl\" (Windows 和 Linux) 或 \"Command\" (macOS)。“转到定义”和“打开链接”功能所需的鼠标动作将会相应调整,不与多光标修改键冲突。", + "multiCursorMergeOverlapping": "当多个光标重叠时进行合并。", "quickSuggestions.strings": "在字符串内启用快速建议。", "quickSuggestions.comments": "在注释内启用快速建议。", "quickSuggestions.other": "在字符串和注释外启用快速建议。", @@ -88,6 +89,9 @@ "renderLineHighlight": "控制编辑器应如何呈现当前行突出显示,可能为“无”、“装订线”、“线”和“全部”。", "codeLens": "控制编辑器是否显示 CodeLens", "folding": "控制编辑器是否启用代码折叠功能", + "foldingStrategyAuto": "若语言特定的折叠策略可用,将直接使用;否则,将回退到基于缩进的折叠策略。", + "foldingStrategyIndentation": "始终使用基于缩进的折叠策略", + "foldingStrategy": "控制折叠范围的计算方式。\"auto\" 将使用语言特定的折叠策略 (若可用)。\"indentation\" 将强制使用基于缩进的折叠策略。", "showFoldingControls": "控制是否自动隐藏导航线上的折叠控件。", "matchBrackets": "当选择其中一项时,将突出显示匹配的括号。", "glyphMargin": "控制编辑器是否应呈现垂直字形边距。字形边距最常用于调试。", @@ -105,5 +109,7 @@ "selectionClipboard": "控制是否支持 Linux 主剪贴板。", "sideBySide": "控制 Diff 编辑器以并排或内联形式显示差异", "ignoreTrimWhitespace": "控制差异编辑器是否将对前导空格或尾随空格的更改显示为差异", + "largeFileSize": "控制以字节为单位的文件大小阈值,大于此值时将应用特殊的优化规则", + "largeFileLineCount": "控制文件行数的阈值,大于此值时将应用特殊的优化规则", "renderIndicators": "控制差异编辑器是否为已添加/删除的更改显示 +/- 指示符号" } \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json index 30bc289af02..30fcc2ac988 100644 --- a/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/chs/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "编辑器缩进参考线的颜色。", "editorLineNumbers": "编辑器行号的颜色。", "editorActiveLineNumber": "编辑器活动行号的颜色", + "deprecatedEditorActiveLineNumber": "\"Id\" 已被弃用,请改用 \"editorLineNumber.activeForeground\"。", "editorRuler": "编辑器标尺的颜色。", "editorCodeLensForeground": "编辑器 CodeLens 的前景色", "editorBracketMatchBackground": "匹配括号的背景色", diff --git a/i18n/chs/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/chs/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..e3436f18367 --- /dev/null +++ b/i18n/chs/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "显示修补程序({0})", + "quickFix": "显示修补程序", + "quickfix.trigger.label": "快速修复...", + "editor.action.quickFix.noneMessage": "没有可用的代码操作", + "refactor.label": "重构...", + "editor.action.refactor.noneMessage": "没有可用的重构操作", + "source.label": "源代码操作...", + "editor.action.source.noneMessage": "没有可用的源代码操作", + "organizeImports.label": "整理 import 语句" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/editor/contrib/find/findController.i18n.json b/i18n/chs/src/vs/editor/contrib/find/findController.i18n.json index 7339816bb64..3d18cdf8a9e 100644 --- a/i18n/chs/src/vs/editor/contrib/find/findController.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/find/findController.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "startFindAction": "查找", + "startFindWithSelectionAction": "查找选定内容", "findNextMatchAction": "查找下一个", "findPreviousMatchAction": "查找上一个", "nextSelectionMatchFindAction": "查找下一个选择", diff --git a/i18n/chs/src/vs/editor/contrib/links/links.i18n.json b/i18n/chs/src/vs/editor/contrib/links/links.i18n.json index 40e284cf659..587ed84ae6a 100644 --- a/i18n/chs/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "按住 Ctrl 并单击可访问链接", "links.command.mac": "Cmd + 单击以执行命令", "links.command": "Ctrl + 单击以执行命令", + "links.navigate.al.mac": "按住 Option 并单击可访问链接", "links.navigate.al": "按住 Alt 并单击可访问链接", + "links.command.al.mac": "按住 Option 并单击可执行命令", "links.command.al": "Alt + 单击以执行命令", "invalid.url": "此链接格式不正确,无法打开: {0}", "missing.url": "此链接目标已丢失,无法打开。", diff --git a/i18n/chs/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/chs/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/chs/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/chs/src/vs/platform/environment/node/argv.i18n.json b/i18n/chs/src/vs/platform/environment/node/argv.i18n.json index e97406a614d..53a94cfbcad 100644 --- a/i18n/chs/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/chs/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "通过启用 \"Developer: Startup Performance\" 命令开始。", "prof-startup": "启动期间运行 CPU 探查器", "disableExtensions": "禁用所有已安装的扩展。", - "inspect-extensions": "允许进行扩展的调试与分析。检查开发人员工具可获取连接 URI。", - "inspect-brk-extensions": "允许在扩展主机在启动后暂停时进行扩展的调试与分析。检查开发人员工具可获取连接 URI。", "disableGPU": "禁用 GPU 硬件加速。", "uploadLogs": "将当前会话的日志上传到安全端点。", "maxMemory": "单个窗口最大内存大小 (单位为 MB)。", diff --git a/i18n/chs/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/chs/src/vs/platform/extensions/node/extensionValidator.i18n.json index aed6a75a1f7..ee27fc55d23 100644 --- a/i18n/chs/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/chs/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "无法分析 \"engines.vscode\" 值 {0}。例如请使用: ^0.10.0、^1.2.3、^0.11.0、^0.10.x 等。", + "versionSyntax": "无法解析 \"engines.vscode\" 的值 {0}。请改为如 ^1.22.0, ^1.22.x 等。", "versionSpecificity1": "\"engines.vscode\" ({0}) 中指定的版本不够具体。对于 1.0.0 之前的 vscode 版本,请至少定义主要和次要想要的版本。例如: ^0.10.0、0.10.x、0.11.0 等。", "versionSpecificity2": "\"engines.vscode\" ({0}) 中指定的版本不够具体。对于 1.0.0 之后的 vscode 版本,请至少定义主要想要的版本。例如: ^1.10.0、1.10.x、1.x.x、2.x.x 等。", "versionMismatch": "扩展与 Code {0} 不兼容。扩展需要: {1}。" diff --git a/i18n/chs/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/chs/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 8d2d09183ec..ab22eb3b5eb 100644 --- a/i18n/chs/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/chs/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "{0} 安装似乎损坏。请重新安装。", "integrity.moreInformation": "详细信息", - "integrity.dontShowAgain": "不再显示", - "integrity.prompt": "{0} 安装似乎损坏。请重新安装。" + "integrity.dontShowAgain": "不再显示" } \ No newline at end of file diff --git a/i18n/chs/src/vs/platform/issue/electron-main/issueService.i18n.json b/i18n/chs/src/vs/platform/issue/electron-main/issueService.i18n.json index 5d2b8cde0c8..6e606ef5354 100644 --- a/i18n/chs/src/vs/platform/issue/electron-main/issueService.i18n.json +++ b/i18n/chs/src/vs/platform/issue/electron-main/issueService.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "issueReporter": "问题报告程序" + "issueReporter": "问题报告程序", + "processExplorer": "进程管理器" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/chs/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..962583508c2 --- /dev/null +++ b/i18n/chs/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "属性“{0}”是必要属性,其类型必须是 \"string\"", + "showViewlet": "显示 {0}", + "view": "查看" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/chs/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index a34d566c750..e6fa52bd0f9 100644 --- a/i18n/chs/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/chs/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "向编辑器提供视图", "views.explorer": "资源管理器视图", "views.debug": "调试视图", - "locationId.invalid": "“{0}”为无效视图位置", "duplicateView1": "无法在位置“{1}”注册多个 ID 同为“{0}”的视图。", "duplicateView2": "ID 为“{0}”的视图在位置“{1}”已被注册" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index de275d5e951..a9a4a765557 100644 --- a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview 编辑器" + "errorMessage": "还原视图时出错: {0}" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 4e5c5c77028..885d0713a18 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,7 @@ "screenReaderDetectedExtra": "如果你没有使用屏幕阅读器,请将设置中的“editor.accessibilitySupport”改为“off”。", "disableTabMode": "禁用辅助功能模式", "gotoLine": "转到行", - "indentation": "缩进", + "selectIndentation": "选择缩进", "selectEncoding": "选择编码", "selectEOL": "选择行尾序列", "selectLanguageMode": "选择语言模式", diff --git a/i18n/chs/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 4962fa0f678..041d404a5fb 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,11 @@ "sizeMB": "{0} MB", "sizeGB": "{0} GB", "sizeTB": "{0} TB", - "largeImageError": "图像文件太大 (>1 MB),无法在编辑器中显示。", + "largeImageError": "图片太大,无法在编辑器中显示 ({0})。 ", "resourceOpenExternalButton": "使用外部程序打开图片?", - "nativeBinaryError": "因为此文件是二进制文件,或文件过大,或使用了不受支持的文本编码,将不会在编辑器中显示。", + "nativeFileTooLargeError": "文件太大,无法在编辑器中显示 ({0})。", + "nativeBinaryError": "此文件是二进制文件或使用了不支持的文本编码,无法在编辑器中显示。", + "openAsText": "是否仍要打开?", "zoom.action.fit.label": "整个图像", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..47373efa523 --- /dev/null +++ b/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInput.countSelected": "已选 {0} 项", + "ok": "确定" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..a968ba2efad --- /dev/null +++ b/i18n/chs/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInputBox.ariaLabel": "在此输入可缩小结果范围。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/chs/src/vs/workbench/electron-browser/actions.i18n.json index 55cd77d54ee..c8466983eb9 100644 --- a/i18n/chs/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/chs/src/vs/workbench/electron-browser/actions.i18n.json @@ -32,6 +32,7 @@ "openRecent": "打开最近的文件…", "quickOpenRecent": "快速打开最近的文件…", "reportIssueInEnglish": "使用英文报告问题", + "openProcessExplorer": "打开进程管理器", "reportPerformanceIssue": "报告性能问题", "keybindingsReference": "键盘快捷方式参考", "openDocumentationUrl": "文档", diff --git a/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json index a50946c2cfc..9a315eae3a8 100644 --- a/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -80,6 +80,7 @@ "titleBarStyle": "调整窗口标题栏的外观。更改需要在完全重启后才能应用。", "window.nativeTabs": "\n启用macOS Sierra窗口选项卡。请注意,更改需要完全重新启动程序才能生效。如果配置此选项,本机选项卡将禁用自定义标题栏样式。", "window.smoothScrollingWorkaround": "启用解决方案来修复还原最小化的 VS Code 窗口后平滑滚动消失的问题。这个滚动的卡顿问题出现在拥有精确式触控板的设备上,比如来自 Microsoft 的 Surface 设备(https://github.com/Microsoft/vscode/issues/13612)。如果启用这个解决方案,窗口布局可能会在从最小化状态中还原后有些许闪烁,其他方面则无大碍。", + "window.clickThroughInactive": "启用后,点击非活动窗口后将在激活窗口的同时触发光标之下的元素 (若可点击)。禁用后,点击非活动窗口仅能激活窗口,再次点击才能触发元素。", "zenModeConfigurationTitle": "Zen 模式", "zenMode.fullScreen": "控制打开 Zen Mode 是否也会将工作台置于全屏模式。", "zenMode.centerLayout": "控制是否在 Zen 模式中启用居中布局", diff --git a/i18n/chs/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.i18n.json b/i18n/chs/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.i18n.json index dc3cfbfb4b8..e5e6d7d0f1c 100644 --- a/i18n/chs/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.i18n.json @@ -18,9 +18,9 @@ "configuredOn": "编辑器被配置为对屏幕阅读器的使用进行永久优化 — 你可以编辑设置中的“editor.accessibilitySupport”以改变此行为。", "configuredOff": "编辑器被配置为不对屏幕阅读器的使用进行优化。", "tabFocusModeOnMsg": "在当前编辑器中按 Tab 会将焦点移动到下一个可聚焦的元素。按 {0} 来切换此行为。", - "tabFocusModeOnMsgNoKb": "在当前编辑器中按 Tab 会将焦点移动到下一个可聚焦的元素。当前无法通过键绑定触发命令 {0}。", + "tabFocusModeOnMsgNoKb": "若在当前编辑器中按 Tab 键,将移动焦点到下一个可聚焦的元素。当前无法通过按键绑定触发命令 {0}。", "tabFocusModeOffMsg": "在当前编辑器中按 Tab 将插入制表符。按 {0} 来切换此行为。", - "tabFocusModeOffMsgNoKb": "在当前编辑器中按 Tab 会插入制表符。当前无法通过键绑定触发命令 {0}。", + "tabFocusModeOffMsgNoKb": "若在当前编辑器中按 Tab 键,将插入制表符。当前无法通过按键绑定触发命令 {0}。", "openDocMac": "按 Command+H 以打开浏览器窗口,其中包含更多有关 VS Code 辅助功能的信息。", "openDocWinLinux": "按 Ctrl+H 以打开浏览器窗口,其中包含更多有关 VS Code 辅助功能的信息。", "outroMsg": "你可以按 Esc 或 Shift+Esc 消除此工具提示并返回到编辑器。", diff --git a/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 934cfe0c69a..ab823eb2338 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "编辑断点...", + "breakpoint": "断点", "functionBreakpointsNotSupported": "此调试类型不支持函数断点", "functionBreakpointPlaceholder": "要断开的函数", "functionBreakPointInputAriaLabel": "键入函数断点", diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index dd2cc47ea67..b5164359e2a 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -6,12 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "breakpointWidgetLogMessagePlaceholder": "断点命中时记录的消息。“Enter”键确认,“Esc”键取消。", + "breakpointWidgetLogMessagePlaceholder": "断点命中时记录的消息。{} 内的表达式将被替换。“Enter”键确认,“Esc”键取消。", "breakpointWidgetHitCountPlaceholder": "在满足命中次数条件时中断。按 \"Enter\" 表示接受,\"Esc\" 表示取消。", "breakpointWidgetExpressionPlaceholder": "在表达式计算结果为 true 时中断。按 \"Enter\" 表示接受,\"Esc\" 表示取消。", - "breakpointWidgetLogMessageAriaLabel": "程序将在每次命中此断点时记录这条消息。按 Enter 键接受或按 Esc 键取消。", - "breakpointWidgetHitCountAriaLabel": "如果达到命中次数,程序仅会在此处停止。按 Enter 接受或按 Esc 取消。", - "breakpointWidgetAriaLabel": "如果此条件为 true,程序仅会在此处停止。按 Enter 接受或按 Esc 取消。", "expression": "表达式", "hitCount": "命中次数", "logMessage": "记录消息" diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index f853c73cc83..9c53ac4e9d4 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -27,5 +27,6 @@ "onFirstSessionStart": "仅于第一次启动调试后在状态栏中显示调试", "showInStatusBar": "控制何时显示调试状态栏", "openDebug": "控制是否在调试会话开始时打开调试视图。", - "launch": "全局的调试启动配置。应用作跨工作区共享的 \"launch.json\" 的替代。" + "launch": "全局的调试启动配置。应用作跨工作区共享的 \"launch.json\" 的替代。", + "extensionHostDebugAdapter": "在扩展主机中运行调试适配器" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index be1deb32604..63d4c153cfe 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,7 @@ "useUniqueNames": "配置名称必须唯一。", "app.launch.json.compound.folder": "复合项所在的文件夹的名称。", "app.launch.json.compounds.configurations": "将作为此复合的一部分启动的配置名称。", - "debugNoType": "不可省略调试适配器“类型”,其类型必须是“字符串”。", + "debugNoType": "不可省略调试器的 \"type\" 属性,且其类型必须是 \"string\" 。", "selectDebug": "选择环境", "DebugConfig.failed": "无法在 \".vscode\" 文件夹({0})内创建 \"launch.json\" 文件。", "workspace": "工作区", diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index aaeabd5e279..d32e1d3481b 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "编辑断点...", - "disableBreakpoint": "禁用断点", - "enableBreakpoint": "启用断点", + "breakpoint": "断点", "removeBreakpoints": "删除断点", "removeBreakpointOnColumn": "在列 {0} 上删除断点", "removeLineBreakpoint": "删除行断点", @@ -21,7 +19,8 @@ "enableBreakpoints": "在列 {0} 上启用断点", "enableBreakpointOnLine": "启用行断点", "addBreakpoint": "添加断点", - "conditionalBreakpoint": "添加条件断点...", + "addConditionalBreakpoint": "添加条件断点...", "addLogPoint": "添加记录点...", + "cancel": "取消", "addConfiguration": "添加配置..." } \ No newline at end of file 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 8f802a6783e..3a56b23d721 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "详细信息", - "unableToLaunchDebugAdapter": "无法从“{0}”启动调试适配器。", - "unableToLaunchDebugAdapterNoArgs": "无法启动调试适配器。", - "stoppingDebugAdapter": "{0}。正在停止调试适配器。", "debugAdapterCrash": "调试适配器进程已意外终止" } \ No newline at end of file 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 8348a07cd0e..cd5c87160d6 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 @@ -8,19 +8,6 @@ ], "debugAdapterBinNotFound": "调试适配器可执行的“{0}”不存在。", "debugAdapterCannotDetermineExecutable": "无法确定调试适配器“{0}”的可执行文件。", - "launch.config.comment1": "使用 IntelliSense 了解相关属性。 ", - "launch.config.comment2": "悬停以查看现有属性的描述。", - "launch.config.comment3": "欲了解更多信息,请访问: {0}", - "debugType": "配置类型。", - "debugTypeNotRecognised": "无法识别此调试类型。确保已经安装并启用相应的调试扩展。", - "node2NotSupported": "不再支持 \"node2\",改用 \"node\",并将 \"protocol\" 属性设为 \"inspector\"。", - "debugName": "配置名称;在启动配置下拉菜单中显示。", - "debugRequest": "请求配置类型。可以是“启动”或“附加”。", - "debugServer": "仅用于调试扩展开发: 如果已指定端口,VS 代码会尝试连接到在服务器模式中运行的调试适配器", - "debugPrelaunchTask": "调试会话开始前要运行的任务。", - "debugPostDebugTask": "调试会话结束后运行的任务。", - "debugWindowsConfiguration": "特定于 Windows 的启动配置属性。", - "debugOSXConfiguration": "特定于 OS X 的启动配置属性。", - "debugLinuxConfiguration": "特定于 Linux 的启动配置属性。", - "deprecatedVariables": "已弃用 \"env.\"、\"config.\" 和 \"command.\",改用 \"env:\"、\"config:\" 和 \"command:\"。" + "unableToLaunchDebugAdapter": "无法从“{0}”启动调试适配器。", + "unableToLaunchDebugAdapterNoArgs": "无法启动调试适配器。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..d94c69e8e71 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "使用 IntelliSense 了解相关属性。 ", + "launch.config.comment2": "悬停以查看现有属性的描述。", + "launch.config.comment3": "欲了解更多信息,请访问: {0}", + "debugType": "配置类型。", + "debugTypeNotRecognised": "无法识别此调试类型。确保已经安装并启用相应的调试扩展。", + "node2NotSupported": "不再支持 \"node2\",改用 \"node\",并将 \"protocol\" 属性设为 \"inspector\"。", + "debugName": "配置名称;在启动配置下拉菜单中显示。", + "debugRequest": "请求配置类型。可以是“启动”或“附加”。", + "debugServer": "仅用于调试扩展开发: 如果已指定端口,VS 代码会尝试连接到在服务器模式中运行的调试适配器", + "debugPrelaunchTask": "调试会话开始前要运行的任务。", + "debugPostDebugTask": "调试会话结束后运行的任务。", + "debugWindowsConfiguration": "特定于 Windows 的启动配置属性。", + "debugOSXConfiguration": "特定于 OS X 的启动配置属性。", + "debugLinuxConfiguration": "特定于 Linux 的启动配置属性。", + "deprecatedVariables": "已弃用 \"env.\"、\"config.\" 和 \"command.\",改用 \"env:\"、\"config:\" 和 \"command:\"。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..87183ec39c7 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code 控制台", + "mac.terminal.script.failed": "脚本“{0}”失败,退出代码为 {1}", + "mac.terminal.type.not.supported": "不支持“{0}”", + "press.any.key": "按任意键继续...", + "linux.term.failed": "“{0}”失败,退出代码为 {1}" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 8c7037df74f..9b363a90786 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -37,7 +37,7 @@ "localizations": "本地化 ({0})", "localizations language id": "语言 ID", "localizations language name": "语言名称", - "localizations localized language name": "语言的本地名称", + "localizations localized language name": "语言本地名称", "colorThemes": "颜色主题 ({0})", "iconThemes": "图标主题 ({0})", "colors": "颜色 ({0})", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index d16ee08c77d..4cf0194eb30 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "当前工作区的用户推荐此扩展。", "reallyRecommended2": "建议对这种类型的文件使用“{0}”扩展。", "reallyRecommendedExtensionPack": "建议对这种类型的文件使用“{0}”扩展包。", - "showRecommendations": "显示建议", "install": "安装", + "showRecommendations": "显示建议", "showLanguageExtensions": "商店中有可以对 \".{0}\" 文件提供帮助的扩展。", "workspaceRecommended": "此工作区具有扩展建议。", "installAll": "全部安装", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 60280263286..7b7f8b2905f 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "disableOtherKeymapsConfirmation": "禁用其他键映射 ({0}) 以避免键绑定之间的冲突?", + "disableOtherKeymapsConfirmation": "是否禁用其他按键映射扩展 ({0}),从而避免按键绑定之间的冲突?", "yes": "是", - "no": "否", - "betterMergeDisabled": "现已内置 Better Merge 扩展。此扩展已被安装并禁用,且能被卸载。", - "uninstall": "卸载" + "no": "否" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 292dde16d60..64a4ac691b3 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -14,7 +14,7 @@ "workspaceRecommendedExtensions": "工作区推荐", "builtInExtensions": "功能", "builtInThemesExtensions": "主题", - "builtInBasicsExtensions": "语言", + "builtInBasicsExtensions": "编程语言", "searchExtensions": "在商店中搜索扩展", "sort by installs": "排序依据: 安装计数", "sort by rating": "排序依据: 分级", diff --git a/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 1b8f196bc9e..97c7ad980da 100644 --- a/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,8 +8,8 @@ ], "textFileEditor": "文本文件编辑器", "createFile": "创建文件", - "relaunchWithIncreasedMemoryLimit": "重新启动", - "configureMemoryLimit": "配置", + "relaunchWithIncreasedMemoryLimit": "以 {0} MB 重启", + "configureMemoryLimit": "配置内存限制", "fileEditorWithInputAriaLabel": "{0}。文本文件编辑器。", "fileEditorAriaLabel": "文本文件编辑器。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index aef6c2652d0..e836660825f 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -38,7 +38,7 @@ "trashFailed": "无法删除到废纸篓。是否永久删除?", "deletePermanentlyButtonLabel": "永久删除(&&D)", "retryButtonLabel": "重试(&&R)", - "importFiles": "导入文件", + "addFiles": "添加文件", "confirmOverwrite": "目标文件夹中已存在具有相同名称的文件或文件夹。是否要替换它?", "replaceButtonLabel": "替换(&&R)", "fileIsAncestor": "粘贴的项目是目标文件夹的上级", diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 15d0a742680..b5dc3e0f2f8 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -30,12 +30,12 @@ "autoSaveDelay": "控制在多少毫秒后自动保存更改过的文件。仅在“files.autoSave”设置为“{0}”时适用。", "watcherExclude": "配置文件路径的 glob 模式以从文件监视排除。模式必须在绝对路径上匹配(例如 ** 前缀或完整路径需正确匹配)。更改此设置需要重启。如果在启动时遇到 Code 消耗大量 CPU 时间,则可以排除大型文件夹以减少初始加载。", "hotExit.off": "禁用热退出。", - "hotExit.onExit": "应用程序关闭时将触发热退出。在 Windows/Linux 上关闭最后一个窗口或触发 workbench.action.quit 命令(命令托盘、键绑定、菜单)会引起应用程序关闭。下次启动时将还原所有已备份的窗口。", - "hotExit.onExitAndWindowClose": "应用程序关闭时将触发热退出。在 Windows/Linux 上关闭最后一个窗口、触发 workbench.action.quit 命令(命令托盘、键绑定、菜单)会引起应用程序关闭。对于任何有文件夹打开的窗口,则不论该窗口是否是最后一个窗口。下次启动时将还原所有未打开文件夹的窗口。若要还原打开有文件夹的窗口,请将“window.restoreWindows”设置为“all”。", + "hotExit.onExit": "应用程序关闭时将自动保留未保存内容 (热退出)。关闭的定义为,在 Windows/Linux 上关闭最后一个窗口或者在全平台触发 workbench.action.quit 命令 (命令托盘、键绑定、菜单)。下次启动时将还原所有已备份的窗口。", + "hotExit.onExitAndWindowClose": "应用程序关闭时将自动保留未保存内容 (热退出)。关闭的定义为,在 Windows/Linux 上关闭最后一个窗口,在全平台触发 workbench.action.quit 命令 (命令托盘、键绑定、菜单),对于任何打开有文件夹的窗口,则不论该窗口是否是最后一个窗口。下次启动时将还原所有未打开文件夹的窗口。若要还原打开有文件夹的窗口,请将“window.restoreWindows”设置为“all”。", "hotExit": "控制是否在会话间记住未保存的文件,以允许在退出编辑器时跳过保存提示。", "useExperimentalFileWatcher": "使用新的试验文件观察程序。", "defaultLanguage": "分配给新文件的默认语言模式。", - "maxMemoryForLargeFilesMB": "在尝试打开大型文件时,重新启动程序后应用的新的内存限制 (MB)。如果您希望以较高的限制启动,可以在命令行启动时添加参数 \"--max-memory=新的大小\" 。", + "maxMemoryForLargeFilesMB": "在打开大型文件时,控制 VS Code 可在重启后使用的内存。在命令行中指定“--max-memory=新的大小”参数可达到相同效果。", "editorConfigurationTitle": "编辑器", "formatOnSave": "保存时设置文件的格式。格式化程序必须可用,不能自动保存文件,并且不能关闭编辑器。", "formatOnSaveTimeout": "在保存时格式化操作的超时时间。为 formatOnSave 命令指定时间限制 (单位: 毫秒)。运行超过设定时间的命令将被取消。", diff --git a/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 50c7a30328b..805d10ae124 100644 --- a/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "键入文件名。按 Enter 以确认或按 Esc 以取消。", - "constructedPath": "在 **{1}** 创建{0}", "filesExplorerViewerAriaLabel": "{0},文件资源管理器", "dropFolders": "你是否要将文件夹添加到工作区?", "dropFolder": "你是否要将文件夹添加到工作区?", diff --git a/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json b/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json index 2d7ab40f3c9..3cbb0b9c0cb 100644 --- a/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "html.voidInput": "无效的编辑器输入。" + "html.voidInput": "编辑器输入无效。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 2bc538eaf9f..3654ab60cb3 100644 --- a/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -9,8 +9,8 @@ "updateLocale": "是否将 VS Code 的界面语言更换为 {0} 并重新启动?", "yes": "是", "no": "否", - "doNotAskAgain": "不再询问", - "JsonSchema.locale": "要使用的 UI 语言。", + "neverAgain": "不再显示", + "JsonSchema.locale": "使用的界面语言。", "vscode.extension.contributes.localizations": "向编辑器提供本地化内容", "vscode.extension.contributes.localizations.languageId": "显示字符串翻译的目标语言 ID。", "vscode.extension.contributes.localizations.languageName": "语言的英文名称。", diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 7cf34baa098..04a7e7edc85 100644 --- a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "复制", - "copyMarkerMessage": "复制消息" + "copyMessage": "复制消息" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 158b3a24233..f53a9ecd185 100644 --- a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "总计 {0} 个问题", - "filteredProblems": "显示 {0} 个 (共 {1} 个) 问题" + "totalProblems": "总计 {0} 个问题" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..1a1f6eea1b6 --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "disableFilesExclude": "禁用文件排除。", + "clearFilter": "清除筛选。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..30ef269d07d --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "showing filtered problems": "显示 {0} / {1}" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 9e91dc0ee53..86939d328ca 100644 --- a/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,13 @@ "markers.panel.title.problems": "问题", "markers.panel.aria.label.problems.tree": "按文件分组的问题", "markers.panel.no.problems.build": "目前尚未在工作区检测到问题。", - "markers.panel.no.problems.filters": "使用提供的筛选条件未找到结果", + "markers.panel.no.problems.filters": "在给定的筛选条件下,没有找到结果。", + "markers.panel.no.problems.file.exclusions": "在启用排除筛选器的情况下,所有问题已隐藏。", + "markers.panel.action.useFilesExclude": "使用文件排除设置进行筛选", + "markers.panel.action.donotUseFilesExclude": "不使用文件排除设置", "markers.panel.action.filter": "筛选器问题", - "markers.panel.filter.placeholder": "按类型或文本进行筛选", + "markers.panel.filter.ariaLabel": "筛选器问题", + "markers.panel.filter.placeholder": "筛选。例: text, **/*.ts, !**/node_modules/**", "markers.panel.filter.errors": "错误", "markers.panel.filter.warnings": "警告", "markers.panel.filter.infos": "信息", diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index c40f2b67618..03b2d9ae25a 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,35 +6,34 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "键盘快捷方式", - "showDefaultKeybindings": "显示默认键绑定", - "showUserKeybindings": "显示用户键绑定", - "SearchKeybindings.AriaLabel": "搜索键绑定", - "SearchKeybindings.Placeholder": "搜索键绑定", + "showDefaultKeybindings": "显示默认按键绑定", + "showUserKeybindings": "显示用户按键绑定", + "SearchKeybindings.AriaLabel": "搜索按键绑定", + "SearchKeybindings.Placeholder": "搜索按键绑定", "sortByPrecedene": "按优先级排序", "header-message": "高级自定义请打开和编辑", "keybindings-file-name": "keybindings.json", - "keybindingsLabel": "键绑定", - "changeLabel": "更改键绑定", - "addLabel": "添加键绑定", + "keybindingsLabel": "按键绑定", + "changeLabel": "更改按键绑定", + "addLabel": "添加按键绑定", "removeLabel": "删除键绑定", - "resetLabel": "重置键绑定", - "showSameKeybindings": "显示相同的键绑定", + "resetLabel": "重置按键绑定", + "showSameKeybindings": "显示相同的按键绑定", "copyLabel": "复制", "copyCommandLabel": "拷贝命令", - "error": "编辑键绑定时发生错误“{0}”。请打开 \"keybindings.json\" 文件并检查错误。", + "error": "编辑按键绑定时发生错误“{0}”。请打开 \"keybindings.json\" 文件并检查错误。", "command": "命令", - "keybinding": "键绑定", + "keybinding": "按键绑定", "source": "来源", "when": "何时", - "editKeybindingLabelWithKey": "更改键绑定{0}", + "editKeybindingLabelWithKey": "更改按键绑定 {0}", "editKeybindingLabel": "更改键绑定", - "addKeybindingLabelWithKey": "添加键绑定", + "addKeybindingLabelWithKey": "添加按键绑定 {0}", "addKeybindingLabel": "添加键绑定", "title": "{0} ({1})", "commandAriaLabel": "命令为 {0}。", - "keybindingAriaLabel": "键绑定为 {0}。", - "noKeybinding": "未分配键绑定。", + "keybindingAriaLabel": "按键绑定为 {0}。", + "noKeybinding": "没有绑定按键。", "sourceAriaLabel": "源为 {0}。", "whenAriaLabel": "时间为 {0}。", "noWhen": "没有时间上下文。" diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditorContribution.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditorContribution.i18n.json index 0459db1c2d2..78e022fe03f 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditorContribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/keybindingsEditorContribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "defineKeybinding.start": "定义键绑定", + "defineKeybinding.start": "定义按键绑定", "defineKeybinding.kbLayoutErrorMessage": "在当前键盘布局下无法生成此组合键。", "defineKeybinding.kbLayoutLocalAndUSMessage": "在你的键盘布局上为 **{0}**(美国标准布局上为 **{1}**)。", "defineKeybinding.kbLayoutLocalMessage": "在你的键盘布局上为 **{0}**。" diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index 4195d289c28..630c1ad7278 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "打开默认设置原始文档", + "openSettings": "打开设置", "openGlobalSettings": "打开用户设置", "openGlobalKeybindings": "打开键盘快捷方式", "openGlobalKeybindingsFile": "打开键盘快捷方式文件", diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index b8c1759906a..2a65e037066 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "默认设置", "SearchSettingsWidget.AriaLabel": "搜索设置", "SearchSettingsWidget.Placeholder": "搜索设置", "noSettingsFound": "无结果", @@ -16,6 +15,8 @@ "nlpResult": "自然语言结果", "filterResult": "筛选结果", "defaultSettings": "默认设置", + "defaultUserSettings": "默认用户设置", + "defaultWorkspaceSettings": "默认工作区设置", "defaultFolderSettings": "默认文件夹设置", "defaultEditorReadonly": "在右侧编辑器中编辑以覆盖默认值。", "preferencesAriaLabel": "默认首选项。只读文本编辑器。" diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 31db168fde9..9fc53ead3b4 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "显示扩展“{0}”", "editTtile": "编辑", "replaceDefaultValue": "在设置中替换", - "copyDefaultValue": "复制到设置", - "unsupportedPHPExecutablePathSetting": "此设置必须是“用户设置”。若要为工作区配置 PHP,请打开 PHP 文件并单击状态栏中的“PHP 路径”。", - "unsupportedWorkspaceSetting": "此设置必须是“用户设置”。", - "unsupportedWorkbenchSetting": "当前无法应用此设置。将在直接打开此文件夹时应用。", - "unsupportedWorkbenchSettingDevMode": "当前无法应用此设置。将你在注册时定义其作用域为 \"resource\",或是直接打开此文件夹时应用。" + "copyDefaultValue": "复制到设置" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/preferences/electron-browser/preferences.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/electron-browser/preferences.contribution.i18n.json index ef63a56a1b7..4afe48715b2 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/electron-browser/preferences.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/electron-browser/preferences.contribution.i18n.json @@ -7,6 +7,6 @@ "Do not edit this file. It is machine generated." ], "defaultPreferencesEditor": "默认首选项编辑器", - "keybindingsEditor": "键绑定编辑器", + "keybindingsEditor": "按键绑定编辑器", "preferences": "首选项" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.i18n.json b/i18n/chs/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.i18n.json index 3f7880867ff..295e4c52d56 100644 --- a/i18n/chs/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.i18n.json @@ -10,7 +10,7 @@ "gotoLineLabelEmptyWithLimit": "键入要导航到的介于 1 和 {0} 之间的行号", "gotoLineLabelEmpty": "键入要导航到的行号", "gotoLineColumnLabel": "转到行 {0} 和字符 {1}", - "gotoLineLabel": "转至行 {0}", + "gotoLineLabel": "转至第 {0} 行", "gotoLineHandlerAriaLabel": "键入要导航到的行号。", "cannotRunGotoLine": "首先打开文本文件以转到行" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/chs/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 8c1111d5098..72a33d59853 100644 --- a/i18n/chs/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "安装其他源代码管理提供程序...", "no open repo": "没有活动的源代码管理提供程序。", "source control": "源代码管理", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "隐藏" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 4fc9ae1d616..76dc7862437 100644 --- a/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "显示下一个搜索包含模式", "previousSearchIncludePattern": "显示上一个搜索包含模式", + "nextSearchExcludePattern": "显示下一个搜索排除模式", + "previousSearchExcludePattern": "显示上一个搜索排除模式", "nextSearchTerm": "显示下一个搜索词", "previousSearchTerm": "显示上一个搜索词", - "showSearchViewlet": "显示搜索", "findInFiles": "在文件中查找", "replaceInFiles": "在文件中替换", "RefreshAction.label": "刷新", diff --git a/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json index 101ca4d9984..e6d06592621 100644 --- a/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,9 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "切换搜索详细信息", - "searchIncludeExclude.label": "包含或排除的文件", - "searchIncludeExclude.ariaLabel": "搜索中包含或排除项的模式", - "searchIncludeExclude.placeholder": "例: src, !*.ts, test/**/*.log", + "searchScope.includes": "要包含的文件", + "label.includes": "搜索包含模式", + "searchScope.excludes": "要排除的文件", + "label.excludes": "搜索排除模式", "replaceAll.confirmation.title": "全部替换", "replaceAll.confirm.button": "替换(&&R)", "replaceAll.occurrence.file.message": "已将 {1} 文件中出现的 {0} 替换为“{2}”。", diff --git a/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index b45279594d3..a48247a7489 100644 --- a/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,15 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "搜索", + "copyMatchLabel": "复制", + "copyPathLabel": "复制路径", + "copyAllLabel": "全部复制", + "toggleSearchViewPositionLabel": "切换搜索视图位置", "findInFolder": "在文件夹中查找...", "findInWorkspace": "在工作区中查找...", "showTriggerActions": "转到工作区中的符号...", "name": "搜索", - "search": "搜索", "showSearchViewl": "显示搜索", "view": "查看", "findInFiles": "在文件中查找", @@ -26,5 +30,5 @@ "search.followSymlinks": "控制是否在搜索中跟踪符号链接。", "search.smartCase": "若搜索词全为小写,则不区分大小写进行搜索,否则区分大小写进行搜索", "search.globalFindClipboard": "控制“搜索”视图是否读取或修改 macOS 的共享查找剪贴板", - "search.location": "预览: 控制搜索功能显示在侧边栏还是水平空间更大的面板区域。我们将在下个版本优化面板中搜索的水平布局,之后这将不再是一个预览功能。" + "search.location": "控制搜索功能显示在侧边栏还是水平空间更大的面板区域。我们将在下个版本中优化面板搜索的水平布局,此后,这将不再是一个预览功能。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index d5ec61330df..8f54754adc7 100644 --- a/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "帮助我们改善对 {0} 的支持", "takeShortSurvey": "参与小调查", "remindLater": "稍后提醒", - "neverAgain": "不再显示", - "helpUs": "帮助我们改善对 {0} 的支持" + "neverAgain": "不再显示" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 79f86172895..5f305836c67 100644 --- a/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "您愿意参与一次简短的反馈调查吗?", "takeSurvey": "参与调查", "remindLater": "稍后提醒", - "neverAgain": "不再显示", - "surveyQuestion": "您愿意参与一次简短的反馈调查吗?" + "neverAgain": "不再显示" } \ No newline at end of file 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 b4c4b3ab561..41326098874 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 @@ -11,6 +11,7 @@ "totalErrors": "{0} 个错误", "totalWarnings": "{0} 条警告", "totalInfos": "{0} 条信息", + "problems": "问题", "building": "正在生成...", "manyProblems": "1万+", "runningTasks": "显示运行中的任务", @@ -30,8 +31,10 @@ "selectProblemMatcher": "选择针对何种错误和警告扫描任务输出", "customizeParseErrors": "当前任务配置存在错误。请先更正错误,再自定义任务。", "moreThanOneBuildTask": "当前 tasks.json 中定义了多个生成任务。正在执行第一个。\n", - "TaskSystem.activeSame.background": "任务 \"{0}\" 已激活并处于后台模式。若要终止任务,请选择“任务”菜单中的“终止任务...”。", - "TaskSystem.activeSame.noBackground": "任务 \"{0}\" 已处于活动状态。若要终止任务,请选择“任务”菜单中的“终止任务...”。", + "TaskSystem.activeSame.background": "任务“{0}”已激活,并且处于后台模式。", + "TaskSystem.activeSame.noBackground": "任务“{0}”已处于活动状态。", + "terminateTask": "终止任务", + "restartTask": "重启任务", "TaskSystem.active": "当前已有任务正在运行。请先终止它,然后再执行另一项任务。", "TaskSystem.restartFailed": "未能终止并重启任务 {0}", "TaskService.noConfiguration": "错误: {0} 任务检测没有提供拥有下列配置的任务:\n{1}\n将忽略此任务。\n", @@ -48,8 +51,8 @@ "recentlyUsed": "最近使用的任务", "configured": "已配置的任务", "detected": "检测到的任务", - "TaskService.notAgain": "不再显示", "TaskService.ignoredFolder": "由于使用任务版本 0.1.0,以下工作区文件夹将被忽略: {0}", + "TaskService.notAgain": "不再显示", "TaskService.pickRunTask": "选择要运行的任务", "TaslService.noEntryToRun": "没有找到要运行的任务。配置任务...", "TaskService.fetchingBuildTasks": "正在获取生成任务...", diff --git a/i18n/chs/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..1c55c29463d --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "终端的背景颜色,允许终端的颜色与面板不同。", + "terminal.foreground": "终端的前景颜色。", + "terminalCursor.foreground": "终端光标的前景色。", + "terminalCursor.background": "终端光标的背景色。允许自定义被 block 光标遮住的字符的颜色。", + "terminal.selectionBackground": "终端选中内容的背景颜色。", + "terminal.border": "分隔终端中拆分窗格的边框的颜色。默认值为 panel.border 的颜色", + "terminal.ansiColor": "终端中的 ANSI 颜色“{0}”。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 66844979174..e381f21cfa1 100644 --- a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -21,6 +21,7 @@ "workbench.action.terminal.newWorkspacePlaceholder": "选择当前工作目录新建终端", "workbench.action.terminal.newInActiveWorkspace": "新建集成终端 (活动工作区)", "workbench.action.terminal.split": "拆分终端", + "workbench.action.terminal.splitInActiveWorkspace": "拆分终端 (活动工作区)", "workbench.action.terminal.focusPreviousPane": "聚焦于上一个窗格", "workbench.action.terminal.focusNextPane": "聚焦于下一个窗格", "workbench.action.terminal.resizePaneLeft": "向左调整窗格大小", @@ -43,6 +44,7 @@ "workbench.action.terminal.scrollUpPage": "向上滚动(页)", "workbench.action.terminal.scrollToTop": "滚动到顶部", "workbench.action.terminal.clear": "清除", + "workbench.action.terminal.clearSelection": "清除选定内容", "workbench.action.terminal.allowWorkspaceShell": "允许配置工作区 Shell", "workbench.action.terminal.disallowWorkspaceShell": "禁止配置工作区 Shell", "workbench.action.terminal.rename": "重命名", @@ -52,8 +54,8 @@ "nextTerminalFindTerm": "显示下一个搜索结果", "previousTerminalFindTerm": "显示上一个搜索结果", "quickOpenTerm": "切换活动终端", - "workbench.action.terminal.focusPreviousCommand": "聚焦于上一条命令", - "workbench.action.terminal.focusNextCommand": "聚焦于下一条命令", + "workbench.action.terminal.scrollToPreviousCommand": "滚动到上一条命令", + "workbench.action.terminal.scrollToNextCommand": "滚动到下一条命令", "workbench.action.terminal.selectToPreviousCommand": "选择上一条命令所有内容", "workbench.action.terminal.selectToNextCommand": "选择下一条命令所有内容" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalService.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalService.i18n.json index a03f33d6630..226ce4dc16f 100644 --- a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalService.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalService.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "terminal.integrated.chooseWindowsShellInfo": "可通过选择“自定义”按钮来更改默认的终端 shell。", + "terminal.integrated.chooseWindowsShellInfo": "你可以按下“自定义”按钮并更换默认终端 Shell。", "customize": "自定义", "never again": "不再显示", "terminal.integrated.chooseWindowsShell": "选择首选的终端 shell,你可稍后在设置中进行更改", diff --git a/i18n/chs/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 8b074252bc9..05f2427856b 100644 --- a/i18n/chs/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "此工作区包含仅可在“用户设置”中配置的设置 ({0})。单击[这里]({1})了解更多信息。", "openWorkspaceSettings": "打开工作区设置", - "dontShowAgain": "不再显示", - "unsupportedWorkspaceSettings": "此工作区包含仅可在“用户设置”中配置的设置 ({0})。单击[这里]({1})了解更多信息。" + "dontShowAgain": "不再显示" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 1fcb4a17477..0020728737d 100644 --- a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "稍后", "releaseNotes": "发行说明", "showReleaseNotes": "显示发行说明", "read the release notes": "欢迎使用 {0} v{1}! 是否要阅读发布说明?", @@ -16,13 +15,14 @@ "updateIsReady": "有新的 {0} 的更新可用。", "noUpdatesAvailable": "当前没有可用的更新。", "ok": "确定", - "download now": "立即下载", "thereIsUpdateAvailable": "存在可用更新。", + "download now": "立即下载", + "later": "稍后", + "updateAvailable": "现有更新可用: {0} {1}", "installUpdate": "安装更新", - "updateAvailable": "存在可用更新: {0} {1}", "updateInstalling": "{0} {1} 正在后台安装,我们会在完成后通知您。", + "updateAvailableAfterRestart": "重新启动 {0} 即可应用最新更新。", "updateNow": "立即更新", - "updateAvailableAfterRestart": "{0} 将在重启后更新。", "commandPalette": "命令面板...", "settings": "设置", "keyboardShortcuts": "键盘快捷方式", diff --git a/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index de275d5e951..2de51221fc9 100644 --- a/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview 编辑器" + "webview.editor.label": "webview 编辑器", + "developer": "开发者" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..bad27cc286a --- /dev/null +++ b/i18n/chs/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "打开 Webview 开发工具", + "refreshWebviewLabel": "重新加载 Webview" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json b/i18n/chs/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json index 0340660b904..3f4b053f902 100644 --- a/i18n/chs/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json @@ -13,6 +13,7 @@ "welcomeOverlay.extensions": "管理扩展", "welcomeOverlay.problems": "查看错误和警告", "welcomeOverlay.commandPalette": "查找并运行所有命令", + "welcomeOverlay.notifications": "显示通知", "welcomeOverlay": "用户界面概览", "hideWelcomeOverlay": "隐藏界面概览", "help": "帮助" diff --git a/i18n/chs/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/chs/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 96a695ce8bd..ce47605351f 100644 --- a/i18n/chs/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,8 @@ "welcomePage.installExtensionPacks": "工具和语言", "welcomePage.installExtensionPacksDescription": "安装对 {0} 和 {1} 的支持", "welcomePage.moreExtensions": "更多", - "welcomePage.installKeymapDescription": "安装键盘快捷方式", - "welcomePage.installKeymapExtension": "安装 {0} 和 {1} 的键盘快捷方式", + "welcomePage.installKeymapDescription": "设置与按键绑定", + "welcomePage.installKeymapExtension": "安装 {0} 和 {1} 的设置和快捷键", "welcomePage.others": "其他", "welcomePage.colorTheme": "颜色主题", "welcomePage.colorThemeDescription": "使编辑器和代码呈现你喜欢的外观", diff --git a/i18n/chs/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json b/i18n/chs/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json index aee4d86d554..4f7c3efb7aa 100644 --- a/i18n/chs/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json +++ b/i18n/chs/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json @@ -32,9 +32,9 @@ "requireStringOrObject": "属性“{0}”是必要属性,其类型必须是 \"string\" 或 \"object\"", "requirestrings": "属性“{0}”和“{1}”是必要属性,其类型必须是 \"string\"", "vscode.extension.contributes.commandType.command": "要执行的命令的标识符", - "vscode.extension.contributes.commandType.title": "在 UI 中依据其表示命令的标题", - "vscode.extension.contributes.commandType.category": "(可选)类别字符串按命令在 UI 中分组", - "vscode.extension.contributes.commandType.icon": "(可选)在 UI 中用来表示命令的图标。文件路径或者主题配置", + "vscode.extension.contributes.commandType.title": "在界面中显示的命令名称", + "vscode.extension.contributes.commandType.category": "(可选) 类别字符串,命令在界面中根据此项分组", + "vscode.extension.contributes.commandType.icon": "(可选) 在界面中显示的命令图标。可为文件路径或主题配置", "vscode.extension.contributes.commandType.icon.light": "使用浅色主题时的图标路径", "vscode.extension.contributes.commandType.icon.dark": "使用深色主题时的图标路径", "vscode.extension.contributes.commands": "对命令面板提供命令。", diff --git a/i18n/chs/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json b/i18n/chs/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json index 8ae0d8347fb..43e4308fb70 100644 --- a/i18n/chs/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json +++ b/i18n/chs/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json @@ -8,6 +8,7 @@ ], "vscode.extension.contributes.configuration.title": "设置摘要。此标签将在设置文件中用作分隔注释。", "vscode.extension.contributes.configuration.properties": "配置属性的描述。", + "scope.application.description": "特定于应用的配置,仅可在“用户”设置中配置。", "scope.window.description": "特定于窗口的配置,可在“用户”或“工作区”设置中配置。", "scope.resource.description": "特定于资源的配置,可在“用户”、“工作区”或“文件夹”设置中配置。", "scope.description": "配置适用的范围。可用范围有“窗口”和“资源”。", diff --git a/i18n/chs/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/chs/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 5a029ae777e..5acf3a0fa36 100644 --- a/i18n/chs/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -11,6 +11,7 @@ "open": "打开设置", "saveAndRetry": "保存并重试", "errorUnknownKey": "没有注册配置 {1},因此无法写入 {0}。", + "errorInvalidWorkspaceConfigurationApplication": "无法将 {0} 写入“工作区设置”。此设置只能写于“用户设置”。", "errorInvalidFolderConfiguration": "{0} 不支持文件夹资源域,因此无法写入\"文件夹设置\"。", "errorInvalidUserTarget": "{0} 不支持全局域,因此无法写入\"用户设置\"。", "errorInvalidWorkspaceTarget": "{0} 不在多文件夹工作区环境下支持工作区作用域,因此无法写入“工作区设置”。", diff --git a/i18n/chs/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/chs/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..96542629007 --- /dev/null +++ b/i18n/chs/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedApplicationSetting": "此设置仅可应用于“用户设置”", + "unsupportedWindowSetting": "当前无法应用此设置。将在直接打开此文件夹时应用。" +} \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index e28b73aabd5..a6ae2efb80f 100644 --- a/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -6,16 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "canNotResolveWorkspaceFolderMultiRoot": "无法在多文件夹工作区中解析 ${workspaceFolder}。使用 : 和文件夹名称来限定此变量的作用域。", - "canNotResolveWorkspaceFolder": "无法解析 ${workspaceFolder}。请打开一个文件夹。", - "canNotResolveFolderBasenameMultiRoot": "无法在多文件夹工作区中解析 ${workspaceFolderBasename}。使用 : 和文件夹名称来限定此变量的作用域。", - "canNotResolveFolderBasename": "无法解析 ${workspaceFolderBasename}。请打开一个文件夹。", - "canNotResolveLineNumber": "无法解析 ${lineNumber}。请打开一个编辑器。", - "canNotResolveSelectedText": "无法解析 ${selectedText}。请打开一个编辑器。", - "canNotResolveFile": "无法解析 ${file}。请打开一个编辑器。", - "canNotResolveRelativeFile": "无法解析 ${relativeFile}。请打开一个编辑器。", - "canNotResolveFileDirname": "无法解析 ${fileDirname}。请打开一个编辑器。", - "canNotResolveFileExtname": "无法解析 ${fileExtname}。请打开一个编辑器。", - "canNotResolveFileBasename": "无法解析 ${fileBasename}。请打开一个编辑器。", - "canNotResolveFileBasenameNoExtension": "无法解析 ${fileBasenameNoExtension}。请打开一个编辑器。" + "canNotResolveWorkspaceFolderMultiRoot": "无法在多文件夹工作区中解析 \"${workspaceFolder}\"。使用 \":\" 和工作区文件夹名称来限定此变量的作用域。", + "canNotResolveWorkspaceFolder": "无法解析 \"${workspaceFolder}\"。请打开一个文件夹。", + "canNotResolveFolderBasenameMultiRoot": "无法在多文件夹工作区中解析 \"${workspaceFolderBasename}\"。使用 \":\" 和工作区文件夹名称来限定此变量的作用域。", + "canNotResolveFolderBasename": "无法解析 \"${workspaceFolderBasename}\"。请打开一个文件夹。", + "canNotResolveLineNumber": "无法解析 \"${lineNumber}\"。请打开一个编辑器。", + "canNotResolveSelectedText": "无法解析 \"${selectedText}\"。请打开一个编辑器。", + "canNotResolveFile": "无法解析 \"${file}\"。请打开一个编辑器。", + "canNotResolveRelativeFile": "无法解析 \"${relativeFile}\"。请打开一个编辑器。", + "canNotResolveFileDirname": "无法解析 \"${fileDirname}\"。请打开一个编辑器。", + "canNotResolveFileExtname": "无法解析 \"${fileExtname}\"。请打开一个编辑器。", + "canNotResolveFileBasename": "无法解析 \"${fileBasename}\"。请打开一个编辑器。", + "canNotResolveFileBasenameNoExtension": "无法解析 \"${fileBasenameNoExtension}\"。请打开一个编辑器。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 57b5dd7d36a..ff684f7426b 100644 --- a/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -6,10 +6,12 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "vscode.extension.engines": "引擎兼容性。", "vscode.extension.engines.vscode": "对于 VS Code 扩展,指定与其兼容的 VS Code 版本。不能为 *。 例如: ^0.10.5 表示最低兼容 VS Code 版本 0.10.5。", "vscode.extension.publisher": "VS Code 扩展的发布者。", "vscode.extension.displayName": "VS Code 库中使用的扩展的显示名称。", "vscode.extension.categories": "VS Code 库用于对扩展进行分类的类别。", + "vscode.extension.category.languages.deprecated": "请改用 \"Programming Languages\"", "vscode.extension.galleryBanner": "VS Code 商城使用的横幅。", "vscode.extension.galleryBanner.color": "VS Code 商城页标题上的横幅颜色。", "vscode.extension.galleryBanner.theme": "横幅文字的颜色主题。", @@ -28,6 +30,8 @@ "vscode.extension.badges.url": "徽章图像 URL。", "vscode.extension.badges.href": "徽章链接。", "vscode.extension.badges.description": "徽章说明。", + "vscode.extension.markdown": "控制商店中使用的 Markdown 渲染引擎。可为 \"github\" (默认) 或 \"standard\" (标准)。", + "vscode.extension.qna": "控制市场中的“问与答”(Q&A)链接。设置为 \"marketplace\" 可启用市场的默认“问与答”页面。设置为其他字符串可指向自定义的“问与答”页面。设置为 \"false\" 可完全禁用“问与答”。", "vscode.extension.extensionDependencies": "其他扩展的依赖关系。扩展的标识符始终是 ${publisher}.${name}。例如: vscode.csharp。", "vscode.extension.scripts.prepublish": "包作为 VS Code 扩展发布前执行的脚本。", "vscode.extension.scripts.uninstall": "VS Code 扩展的卸载钩子。在扩展从 VS Code 卸载且 VS Code 重启 (关闭后开启) 后执行的脚本。仅支持 Node 脚本。", diff --git a/i18n/chs/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/chs/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index f38c68b8cf3..53d5f14ef4a 100644 --- a/i18n/chs/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionsDisabled": "已禁用所有扩展。", "extensionHostProcess.crash": "扩展宿主意外终止。", "extensionHostProcess.unresponsiveCrash": "扩展宿主因没有响应而被终止。", - "devTools": "开发人员工具", + "devTools": "打开开发人员工具", "restart": "重启扩展宿主", "overwritingExtension": "使用扩展程序 {1} 覆盖扩展程序 {0}。", "extensionUnderDevelopment": "正在 {0} 处加载开发扩展程序", diff --git a/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 1dd9885b81f..2c68f58f2bb 100644 --- a/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,11 +6,24 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "需要 Microsoft .NET Framework 4.5。请访问链接安装它。", "installNet": "下载 .NET Framework 4.5", "neverShowAgain": "不再显示", - "netVersionError": "需要 Microsoft .NET Framework 4.5。请访问链接安装它。", - "learnMore": "说明", "enospcError": "{0} 无法监视这个大型工作区的文件变化。请访问说明链接解决此问题。", + "learnMore": "说明", + "fileInvalidPath": "无效的文件资源({0})", + "fileIsDirectoryError": "文件是目录", + "fileNotModifiedError": "自以下时间未修改的文件:", + "fileTooLargeForHeapError": "若要打开此大小的文件,需要重新启动 VS Code,并允许其使用更多内存", + "fileTooLargeError": "文件太大,无法打开", + "fileNotFoundError": "找不到文件({0})", + "fileBinaryError": "文件似乎是二进制文件,无法作为文档打开", + "filePermission": "写入文件时权限被拒绝 ({0})", + "fileExists": "已存在要创建的文件 ({0})", + "fileModifiedError": "自以下时间已修改的文件:", + "fileReadOnlyError": "文件为只读文件", + "fileMoveConflict": "无法移动/复制。文件已存在于目标位置。", + "unableToMoveCopyError": "无法移动/复制。文件将替换其所在的文件夹。", "binFailed": "未能将“{0}”移动到回收站", "trashFailed": "未能将“{0}”移动到废纸篓" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/chs/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index c5303d62f77..9cc3a9437e2 100644 --- a/i18n/chs/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "找不到文件({0})", "fileIsDirectoryError": "文件是目录", "fileNotModifiedError": "自以下时间未修改的文件:", "fileBinaryError": "文件似乎是二进制文件,无法作为文档打开" diff --git a/i18n/chs/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/chs/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index c4dacad57b2..d566302d24d 100644 --- a/i18n/chs/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/chs/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "errorKeybindingsFileDirty": "键绑定配置文件已变更,无法写入。请先保存此文件,然后重试。", - "parseErrors": "无法写入键绑定配置文件。请打开文件并更正错误或警告,然后重试。", - "errorInvalidConfiguration": "无法写入键绑定配置文件。文件内含有不是数组类型的对象。请打开文件进行清理,然后重试。", + "errorKeybindingsFileDirty": "按键绑定配置文件已变更,现在无法写入。请先保存此文件,然后重试。", + "parseErrors": "无法写入按键绑定配置文件。请打开文件并更正错误或警告,然后重试。", + "errorInvalidConfiguration": "无法写入按键绑定配置文件。文件内含有非数组类型对象。请打开文件进行清理,然后重试。", "emptyKeybindingsHeader": "将键绑定放入此文件中以覆盖默认值" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/services/keybinding/electron-browser/keybindingService.i18n.json b/i18n/chs/src/vs/workbench/services/keybinding/electron-browser/keybindingService.i18n.json index 17e2dcc8f30..79efaf75e8d 100644 --- a/i18n/chs/src/vs/workbench/services/keybinding/electron-browser/keybindingService.i18n.json +++ b/i18n/chs/src/vs/workbench/services/keybinding/electron-browser/keybindingService.i18n.json @@ -9,16 +9,16 @@ "nonempty": "应为非空值。", "requirestring": "属性“{0}”是必需的,其类型必须是“字符串”", "optstring": "属性“{0}”可以省略,或者其类型必须是“字符串”", - "vscode.extension.contributes.keybindings.command": "要在触发键绑定时运行的命令的标识符。", + "vscode.extension.contributes.keybindings.command": "触发按键绑定时运行的命令的标识符。", "vscode.extension.contributes.keybindings.key": "按键或按键序列。用加号分隔按键,用空格分隔序列。例如,Ctrl+O 和 Ctrl+L L(连续按键)。", "vscode.extension.contributes.keybindings.mac": "Mac 特定的键或键序列。", "vscode.extension.contributes.keybindings.linux": "Linux 特定的键或键序列。", "vscode.extension.contributes.keybindings.win": "Windows 特定的键或键序列。", "vscode.extension.contributes.keybindings.when": "键处于活动状态时的条件。", - "vscode.extension.contributes.keybindings": "用于键绑定。", + "vscode.extension.contributes.keybindings": "提供按键绑定。", "invalid.keybindings": "无效的“contributes.{0}”: {1}", "unboundCommands": "以下是其他可用命令:", - "keybindings.json.title": "键绑定配置", + "keybindings.json.title": "按键绑定配置", "keybindings.json.key": "键或键序列(用空格分隔)", "keybindings.json.command": "要执行的命令的名称", "keybindings.json.when": "键处于活动状态时的条件。", diff --git a/i18n/chs/src/vs/workbench/services/themes/electron-browser/colorThemeStore.i18n.json b/i18n/chs/src/vs/workbench/services/themes/electron-browser/colorThemeStore.i18n.json index e14af982802..d77c2cc06df 100644 --- a/i18n/chs/src/vs/workbench/services/themes/electron-browser/colorThemeStore.i18n.json +++ b/i18n/chs/src/vs/workbench/services/themes/electron-browser/colorThemeStore.i18n.json @@ -8,7 +8,7 @@ ], "vscode.extension.contributes.themes": "请提供 TextMate 颜色主题。", "vscode.extension.contributes.themes.id": "用户设置中使用的图标主题的 ID。", - "vscode.extension.contributes.themes.label": "显示在 UI 中的颜色主题标签。", + "vscode.extension.contributes.themes.label": "颜色主题在界面中的显示名称。", "vscode.extension.contributes.themes.uiTheme": "用于定义编辑器周围颜色的基本主题: \"vs\" 是浅色主题,\"vs-dark\" 是深色主题。\"hc-black\" 是深色高对比度主题。", "vscode.extension.contributes.themes.path": "tmTheme 文件的路径。该路径相对于扩展文件夹,通常为 \"./themes/themeFile.tmTheme\"。", "reqarray": "扩展点“{0}”必须是一个数组。", diff --git a/i18n/chs/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.i18n.json b/i18n/chs/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.i18n.json index 0690cd68ce9..a8fabec9ee1 100644 --- a/i18n/chs/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.i18n.json +++ b/i18n/chs/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.i18n.json @@ -8,7 +8,7 @@ ], "vscode.extension.contributes.iconThemes": "提供文件图标主题。", "vscode.extension.contributes.iconThemes.id": "用户设置中使用的图标主题的 ID。", - "vscode.extension.contributes.iconThemes.label": "UI 中显示的图标主题的标签。", + "vscode.extension.contributes.iconThemes.label": "在界面中显示的图标主题名称 ", "vscode.extension.contributes.iconThemes.path": "图标主题定义文件的路径。该路径相对于扩展文件夹,通常是 \"./icons/awesome-icon-theme.json\"。", "reqarray": "扩展点“{0}”必须是一个数组。", "reqpath": "“contributes.{0}.path”中应为字符串。提供的值: {1}", diff --git a/i18n/cht/extensions/css/package.i18n.json b/i18n/cht/extensions/css/package.i18n.json index 35229bd6699..3b83a3b860e 100644 --- a/i18n/cht/extensions/css/package.i18n.json +++ b/i18n/cht/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CSS 語言基礎知識", + "description": "為 CSS、LESS 與 SCSS 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/emmet/package.i18n.json b/i18n/cht/extensions/emmet/package.i18n.json index b356553fff9..b3dc8be8bb9 100644 --- a/i18n/cht/extensions/emmet/package.i18n.json +++ b/i18n/cht/extensions/emmet/package.i18n.json @@ -60,5 +60,6 @@ "emmetPreferencesCssMozProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'moz' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'moz' 前綴。", "emmetPreferencesCssOProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'o' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'o' 前綴。", "emmetPreferencesCssMsProperties": "在以 `-` 開頭的 Emmet 縮寫中使用時,會取得 'ms' 廠商前綴的逗點分隔 CSS 屬性。設定為空白字串可避免總是取得 'ms' 前綴。", - "emmetPreferencesCssFuzzySearchMinScore": "模糊比對的縮寫應該達到最低分數(從 0 到 1)。較低數值可能產生錯誤的比對,較高的數值可能會降低可能的比對。" + "emmetPreferencesCssFuzzySearchMinScore": "模糊比對的縮寫應該達到最低分數(從 0 到 1)。較低數值可能產生錯誤的比對,較高的數值可能會降低可能的比對。", + "emmetOptimizeStylesheetParsing": "當設定為 false 時,將解析整個檔案以確定目前的位置是否適用於展開 Emmet 縮寫。當設定為 true 時,僅會解析 css/scss/less 檔案中目前位置周圍的內容。" } \ No newline at end of file diff --git a/i18n/cht/extensions/html/package.i18n.json b/i18n/cht/extensions/html/package.i18n.json index 35229bd6699..eb9141c8094 100644 --- a/i18n/cht/extensions/html/package.i18n.json +++ b/i18n/cht/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HTML 語言基礎知識", + "description": "為 HTML 檔案提供語法醒目提示、括弧對應與程式碼片段功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/json/package.i18n.json b/i18n/cht/extensions/json/package.i18n.json index 35229bd6699..909f55cf270 100644 --- a/i18n/cht/extensions/json/package.i18n.json +++ b/i18n/cht/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JSON 語言基礎知識", + "description": "為 JSON 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-language-features/out/security.i18n.json b/i18n/cht/extensions/markdown-language-features/out/security.i18n.json index cc4260be39f..6f41794bacc 100644 --- a/i18n/cht/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/cht/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,8 @@ ], "strict.title": "嚴謹", "strict.description": "僅載入安全內容", + "insecureLocalContent.title": "允許不安全的本機內容", + "insecureLocalContent.description": "啟用從本機提供 http 載入內容", "insecureContent.title": "允許不安全的內容", "insecureContent.description": "啟用 http 載入內容", "disable.title": "停用", diff --git a/i18n/cht/extensions/php/package.i18n.json b/i18n/cht/extensions/php/package.i18n.json index 0b1d70297e1..d6cdfe9a0f2 100644 --- a/i18n/cht/extensions/php/package.i18n.json +++ b/i18n/cht/extensions/php/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP 語言功能" + "displayName": "PHP 語言基礎知識", + "description": "為 PHP 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/commands.i18n.json b/i18n/cht/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..90f4f953b40 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "請在 VS Code 中開啟資料夾,以使用 TypeScript 或 JavaScript 專案", + "typescript.projectConfigUnsupportedFile": "無法判斷 TypeScript 或 JavaScript 專案。不支援的檔案類型", + "typescript.projectConfigCouldNotGetInfo": "無法判斷 TypeScript 或 JavaScript 專案", + "typescript.noTypeScriptProjectConfig": "檔案不屬於 TypeScript 專案。若要深入了解,請按一下[這裡]({0})。", + "typescript.noJavaScriptProjectConfig": "檔案不屬於 JavaScript 專案。若要深入了解,請按一下[這裡]({0})。", + "typescript.configureTsconfigQuickPick": "設定 tsconfig.json", + "typescript.configureJsconfigQuickPick": "設定 jsconfig.json" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..18117a677b6 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "選擇要套用的程式碼動作", + "acquiringTypingsLabel": "正在擷取 typings...", + "acquiringTypingsDetail": "正在為 IntelliSense 擷取 typings 定義。", + "autoImportLabel": "自動從 {0} 匯入" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..7d901d9ed96 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "啟用 JavaScript 檔案的語意檢查。必須在檔案的最上面。", + "ts-nocheck": "停用 JavaScript 檔案的語意檢查。必須在檔案的最上面。", + "ts-ignore": "隱藏下一行@ts-check 的錯誤警告。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..16a3b7e5e58 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 個實作", + "manyImplementationLabel": "{0} 個實作", + "implementationsErrorLabel": "無法判斷實作數" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..2851c131eab --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc 註解" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..d3f0fb21867 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "組織匯入" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..85939cee970 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (檔案中修復全部)" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..4ae222d6a1d --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 個參考", + "manyReferenceLabel": "{0} 個參考", + "referenceErrorLabel": "無法判斷參考" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..61ba5737e64 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "建置 - {0}", + "buildAndWatchTscLabel": "監看 - {0}" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/cht/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..54beeeb5b8d --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "路徑 {0} 未指向有效的 tsserver 安裝。即將回復為配套的 TypeScript 版本。", + "serverCouldNotBeStarted": "無法啟動 TypeScript 語言伺服器。錯誤訊息為: {0}", + "typescript.openTsServerLog.notSupported": "TS 伺服器的記錄功能需要 TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "TS 伺服器記錄功能已關閉。請設定 `typescript.tsserver.log` 並重新啟動 TS 伺服器,以啟用記錄功能", + "typescript.openTsServerLog.enableAndReloadOption": "啟用記錄功能並重新啟動 TS 伺服器", + "typescript.openTsServerLog.noLogFile": "TS 伺服器尚未開始記錄。", + "openTsServerLog.openFileFailedFailed": "無法開啟 TS 伺服器記錄檔", + "serverDiedAfterStart": "TypeScript 語言服務在啟動後立即中止 5 次。服務將不會重新啟動。", + "serverDiedReportIssue": "回報問題", + "serverDied": "TypeScript 語言服務在過去 5 分鐘內意外中止 5 次。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..bb0bb1a4af9 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "無效的版本" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..5d6e558a988 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "若要讓整個專案都能使用 JavaScript/TypeScript 語言功能,請排除內含許多檔案的資料夾,例如: {0}", + "hintExclude.generic": "若要讓整個專案都能使用 JavaScript/TypeScript 語言功能,請排除內含您未使用之來源檔案的大型資料夾。", + "large.label": "設定排除項目", + "hintExclude.tooltip": "若要讓整個專案都能使用 JavaScript/TypeScript 語言功能,請排除內含您未使用之來源檔案的大型資料夾。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..e80262263f7 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "正在擷取資料以改善 TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "無法為 JavaScript 語言功能安裝 typings 檔案。請確認已安裝 NPM,或在使用者設定中設定 'typescript.npm'。若要深入了解,請按一下[這裡]({0})。", + "typesInstallerInitializationFailed.doNotCheckAgain": "不要再顯示" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..fdf7133b824 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "使用 VS Code 的版本", + "useWorkspaceVersionOption": "使用工作區版本", + "learnMore": "深入了解", + "selectTsVersion": "選取 JavaScript 與 TypeScript 功能使用的 TypeScript 版本" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/cht/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..8d374cb1886 --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "無法在此路徑載入 TypeScript 版本", + "noBundledServerFound": "其他應用程式已刪除了 VS Code 的 tsserver,例如行為不當的病毒偵測工具。請重新安裝 VS Code。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-language-features/package.i18n.json b/i18n/cht/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..f48586c4f1d --- /dev/null +++ b/i18n/cht/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,62 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript 和 JavaScript 語言功能", + "description": "為 JavaScript 和 TypeScript 提供豐富的語言支援。", + "typescript.reloadProjects.title": "重新載入專案", + "javascript.reloadProjects.title": "重新載入專案", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "使用其參數簽章完成函式。", + "typescript.tsdk.desc": "指定資料夾路徑,其中包含要使用的 tsserver 和 lib*.d.ts 檔案。", + "typescript.disableAutomaticTypeAcquisition": "停用自動類型取得。需要 TypeScript >= 2.0.6。", + "typescript.tsserver.log": "允許 TS 伺服器記錄到檔案。此記錄可用來診斷 TS 伺服器問題。記錄可能包含檔案路徑、原始程式碼及您專案中可能具有敏感性的其他資訊。", + "typescript.tsserver.pluginPaths": "發現 TypeScript 語言服務外掛的其他路徑。需要 TypeScript >= 2.3.0。", + "typescript.tsserver.pluginPaths.item": "無論是絕對路徑或是相對路徑。相對路徑將會根據工作區資料夾進行解析。", + "typescript.tsserver.trace": "允許將訊息追蹤傳送到 TS 伺服器。此追蹤可用來診斷 TS 伺服器問題。追蹤可能包含檔案路徑、原始程式碼及您專案中可能具有敏感性的其他資訊。", + "typescript.validate.enable": "啟用/停用 TypeScript 驗證。", + "typescript.format.enable": "啟用/停用預設 TypeScript 格式器。", + "javascript.format.enable": "啟用/停用預設 JavaScript 格式器。", + "format.insertSpaceAfterCommaDelimiter": "定義逗號分隔符號後的空格處理。", + "format.insertSpaceAfterConstructor": "定義 constructor 關鍵字後空格處理。需要 TypeScript >= 2.3.0。", + "format.insertSpaceAfterSemicolonInForStatements": " 定義 for 陳述式內分號後的空格處理。", + "format.insertSpaceBeforeAndAfterBinaryOperators": "定義二元運算子後的空格處理。", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "定義控制流程陳述式內關鍵字後的空格處理方式。", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "定義匿名函式之函式關鍵字後的空格處理。", + "format.insertSpaceBeforeFunctionParenthesis": "定義如何處理函式引數括號之前的空格。TypeScript 必須 >= 2.1.5。", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "定義範本字串左右大括弧間的空格處理。需要 TypeScript >= 2.0.6。", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "定義 JSX 運算式左右大括弧間的空格處理。需要 TypeScript >= 2.0.6。", + "format.insertSpaceAfterTypeAssertion": "定義在 TypeScript 內類型宣告後空格處理。需要 TypeScript >= 2.4。", + "format.placeOpenBraceOnNewLineForFunctions": "定義是否將左大括弧放入函式的新行。", + "format.placeOpenBraceOnNewLineForControlBlocks": "定義是否將左大括弧放入控制區塊的新行。", + "javascript.validate.enable": "啟用/停用 JavaScript 驗證。", + "typescript.goToProjectConfig.title": "移至專案組態", + "javascript.goToProjectConfig.title": "移至專案組態", + "javascript.referencesCodeLens.enabled": "在JavaScript檔案啟用/停用 參考CodeLens ", + "typescript.referencesCodeLens.enabled": "在TypeScript檔案啟用/停用CodeLens參考。需要TypeScript>=2.0.6。", + "typescript.implementationsCodeLens.enabled": "啟用/停用實作 CodeLens。需要 TypeScript >= 2.2.0。", + "typescript.openTsServerLog.title": "開啟 TS 伺服器記錄", + "typescript.restartTsServer": "重新啟動TS伺服器", + "typescript.selectTypeScriptVersion.title": "選取 TypeScript 版本", + "typescript.reportStyleChecksAsWarnings": "使用警告顯示樣式檢查", + "jsDocCompletion.enabled": "啟用/停用自動 JSDoc 註解", + "javascript.implicitProjectConfig.checkJs": "啟用/停用 JavaScript 檔案的語意檢查。現有的 jsconfig.json 或 tsconfig.json 檔案會覆寫此設定。需要 TypeScript >=2.3.1。", + "typescript.npm": "指定用於自動類型取得的 NPM 可執行檔路徑。TypeScript 必須 >= 2.3.4.", + "typescript.check.npmIsInstalled": "檢查是否已安裝NPM用以取得自動類型擷取.", + "javascript.nameSuggestions": "從JavaScript推薦表檔案中啟用/停用包含唯一檔名", + "typescript.tsc.autoDetect": "控制自動偵測 tsc 任務。 'off' 停用此功能。 'build' 僅建立單次編譯任務。 'watch' 僅建立編譯並監看任務。 'on' 同時建立編譯及監看任務。預設值為 'on'。", + "typescript.problemMatchers.tsc.label": "TypeScript 問題", + "typescript.problemMatchers.tscWatch.label": " TypeScript 問題 (監看模式)", + "typescript.quickSuggestionsForPaths": "啟用/停用在輸入匯入路徑顯示即時建議。", + "typescript.locale": "設定報告 TypeScript 錯誤的語系。需要 TypeScript >= 2.6.0。預設值 'null' 則使用 VS Code 的語系來顯示 TypeScript 錯誤。", + "javascript.implicitProjectConfig.experimentalDecorators": "啟用/停用 JavaScript 檔案中非專案部分的 'experimentalDecorators'。現有的 jsconfig.json 或 tsconfig.json 檔案會覆寫此設定。需要 TypeScript >=2.3.1。", + "typescript.autoImportSuggestions.enabled": "啟用/停用 自動匯入建議。需要 TypeScript >=2.6.1", + "typescript.experimental.syntaxFolding": "啟用/停用語法感知摺疊標記。", + "taskDefinition.tsconfig.description": "定義 TS 組建的 tsconfig 檔案。", + "javascript.suggestionActions.enabled": "編輯器內啟用/停用 JavaScript 檔案建議診斷。需要 TypeScript >= 2.8", + "typescript.suggestionActions.enabled": "編輯器內啟用/停用 TypeScript 檔案建議診斷。需要 TypeScript >= 2.8" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/base/node/processes.i18n.json b/i18n/cht/src/vs/base/node/processes.i18n.json index 5989cf78970..35229bd6699 100644 --- a/i18n/cht/src/vs/base/node/processes.i18n.json +++ b/i18n/cht/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "無法在 UNC 磁碟機上執行殼層命令。" + ] } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index a2daae312b9..b51abfd46f9 100644 --- a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,10 @@ ], "previewOnGitHub": "在 GitHub 預覽", "loadingData": "正在載入資料...", + "rateLimited": "超出了 GitHub 查詢限制。請稍候。", "similarIssues": "相似的問題", "open": "開啟", "closed": "已關閉", - "noResults": "找不到結果", "settingsSearchIssue": "設定值搜尋問題", "bugReporter": "臭蟲回報", "featureRequest": "功能要求", diff --git a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 4d744adee44..a03e5ae0f53 100644 --- a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "請用英語填寫這張表格。", "issueTypeLabel": "這是一個", + "vscode": "Visual Studio Code", + "disableExtensions": "停用所有延伸模組並重新載入視窗", + "chooseExtension": "擴充功能", "issueTitleLabel": "標題", "issueTitleRequired": "請輸入標題。", "titleLengthValidation": "標題太長。", @@ -18,13 +21,6 @@ "extensions": "我的擴充功能", "searchedExtensions": "搜尋過的擴充功能", "settingsSearchDetails": "設定值搜尋詳細資料", - "tryDisablingExtensions": "是否在停用擴充功能後問題仍會發生?", - "yes": "是", - "no": "否", - "disableExtensionsLabelText": "請在 {0} 之後嘗試複製問題。", - "disableExtensions": "停用所有延伸模組並重新載入視窗", - "showRunningExtensionsLabelText": "如果您認為這是延伸模組問題,請 {0} 以回報延伸模組問題。", - "showRunningExtensions": "檢視所有執行中的延伸模組", "details": "請輸入詳細資料。", "loadingData": "正在載入資料..." } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/cht/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..5ad17302606 --- /dev/null +++ b/i18n/cht/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "名稱", + "killProcess": "關閉處理序", + "forceKillProcess": "強制關閉處理序" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-main/menus.i18n.json b/i18n/cht/src/vs/code/electron-main/menus.i18n.json index 70d119fbd0c..a0a1e927719 100644 --- a/i18n/cht/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/cht/src/vs/code/electron-main/menus.i18n.json @@ -113,7 +113,7 @@ "miZoomOut": "縮小(&&U)", "miZoomReset": "重設縮放(&&R)", "miBack": "上一步(&B)", - "miForward": "轉寄(&&F)", + "miForward": "下一頁(&&F)", "miNextEditor": "下一個編輯器(&&N)", "miPreviousEditor": "上一個編輯器(&&P)", "miNextEditorInGroup": "群組中下一個已使用的編輯器(&&N)", diff --git a/i18n/cht/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/cht/src/vs/editor/browser/widget/diffReview.i18n.json index 20db8e59ff5..36323e840be 100644 --- a/i18n/cht/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/cht/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "關閉", - "header": "差異 {0} / {1}: 原始 {2},{3} 行,修改後 {4},{5} 行", "blankLine": "空白", "equalLine": "原始 {0},修改後{1}: {2", "insertLine": "+ 修改後 {0}: {1}", diff --git a/i18n/cht/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/cht/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/cht/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/cht/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/cht/src/vs/editor/common/config/commonEditorConfig.i18n.json index abe0e03af43..1ffb558df45 100644 --- a/i18n/cht/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/cht/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "對應 Windows 和 Linux 的 `Control` 與對應 macOS 的 `Command`", "multiCursorModifier.alt": "對應 Windows 和 Linux 的 `Alt` 與對應 macOS 的 `Option`", "multiCursorModifier": "用於新增多個滑鼠游標的修改。 `ctrlCmd` 會對應到 Windows 和 Linux 上的 `Control` 以及 macOS 上的 `Command`。 [移至定義] 及 [開啟連結] 滑鼠手勢將會適應以避免和 multicursor 修改衝突。", + "multiCursorMergeOverlapping": "在重疊時合併多個游標。", "quickSuggestions.strings": "允許在字串內顯示即時建議。", "quickSuggestions.comments": "允許在註解中顯示即時建議。", "quickSuggestions.other": "允許在字串與註解以外之處顯示即時建議。", diff --git a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json index 0dd95be0c2c..6690219f7e0 100644 --- a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "編輯器縮排輔助線的色彩。", "editorLineNumbers": "編輯器行號的色彩。", "editorActiveLineNumber": "編輯器使用中行號的色彩 ", + "deprecatedEditorActiveLineNumber": "Id 已取代。請改用 'editorLineNumber.activeForeground' 。", "editorRuler": "編輯器尺規的色彩", "editorCodeLensForeground": "編輯器程式碼濾鏡的前景色彩", "editorBracketMatchBackground": "成對括號背景色彩", @@ -28,6 +29,9 @@ "warningBorder": "編輯器內警告提示線的邊框色彩.", "infoForeground": "編輯器內資訊提示線的前景色彩", "infoBorder": "編輯器內資訊提示線的邊框色彩", + "hintForeground": "編輯器內提示訊息的提示線前景色彩", + "hintBorder": "編輯器內提示訊息的提示線邊框色彩", + "overviewRulerRangeHighlight": "概述反白範圍的尺規標記顏色。不能使用非透明的顏色來隱藏底層的樣式。", "overviewRuleError": "錯誤的概觀尺規標記色彩。", "overviewRuleWarning": "警示的概觀尺規標記色彩。", "overviewRuleInfo": "資訊的概觀尺規標記色彩。" diff --git a/i18n/cht/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/cht/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..7a628e7ee2b --- /dev/null +++ b/i18n/cht/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "顯示修正 ({0})", + "quickFix": "顯示修正", + "organizeImports.label": "組織匯入" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/editor/contrib/links/links.i18n.json b/i18n/cht/src/vs/editor/contrib/links/links.i18n.json index 2671372341b..d175645515a 100644 --- a/i18n/cht/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "按住 Ctrl 並按一下滑鼠按鈕可連入連結", "links.command.mac": "按住 Cmd 並按一下滑鼠以執行命令", "links.command": "按住 Ctrl 並按一下滑鼠以執行命令", + "links.navigate.al.mac": "按住 Option 並按一下滑鼠按鈕以追蹤連結", "links.navigate.al": "按住Alt並點擊以追蹤連結", + "links.command.al.mac": "按住 Option 並按一下滑鼠以執行命令", "links.command.al": "按住 Alt 並按一下滑鼠以執行命令", "invalid.url": "因為此連結的格式不正確,所以無法開啟: {0}", "missing.url": "因為此連結目標遺失,所以無法開啟。", diff --git a/i18n/cht/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/cht/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/cht/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 5fc5a3e66a6..54de5e0d2da 100644 --- a/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -13,6 +13,13 @@ "Thursday": "星期四", "Friday": "星期五", "Saturday": "星期六", + "SundayShort": "週日", + "MondayShort": "週一", + "TuesdayShort": "週二", + "WednesdayShort": "週三", + "ThursdayShort": "週四", + "FridayShort": "週五", + "SaturdayShort": "週六", "January": "1月", "February": "2月", "March": "3月", diff --git a/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index c903408c5fd..1018aa75dc7 100644 --- a/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "寫入存取符號時的背景顏色,如寫入變數。不能使用非透明的顏色來隱藏底層的樣式。", "wordHighlightBorder": "讀取存取期間 (例如讀取變數時) 符號的邊框顏色。", "wordHighlightStrongBorder": "寫入存取期間 (例如寫入變數時) 符號的邊框顏色。 ", + "overviewRulerWordHighlightForeground": "概述反白符號的尺規標記顏色。不能使用非透明的顏色來隱藏底層的樣式。", + "overviewRulerWordHighlightStrongForeground": "概述反白寫入權限符號的尺規標記顏色。不能使用非透明的顏色來隱藏底層的樣式。", "wordHighlight.next.label": "移至下一個反白符號", "wordHighlight.previous.label": "移至上一個反白符號" } \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/environment/node/argv.i18n.json b/i18n/cht/src/vs/platform/environment/node/argv.i18n.json index 7656568be84..fea1fa5538f 100644 --- a/i18n/cht/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/cht/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "在已啟用 'Developer: Startup Performance' 命令的情況下開始。", "prof-startup": "啟動時執行 CPU 分析工具", "disableExtensions": "停用所有已安裝的擴充功能。", - "inspect-extensions": "允許對擴充功能進行除錯和分析。檢查開發工具的連接 uri。", - "inspect-brk-extensions": "允許對擴展主機在啟動後暫停擴充功能進行除錯和分析。檢查開發工具中的連接 uri。", "disableGPU": "停用 GPU 硬體加速。", "uploadLogs": "上傳目前的工作階段紀錄至安全的端點。", "maxMemory": "視窗的最大記憶體大小 (以 MB 為單位)。", diff --git a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 3faa343fdfd..066b714df00 100644 --- a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -21,6 +21,7 @@ "quitCode": "無法安裝擴充功能。重新安裝以前請重啟 VS Code。", "exitCode": "無法安裝擴充功能。重新安裝以前請離開並再次啟動 VS Code。", "uninstallDependeciesConfirmation": "只要將 '{0}' 解除安裝,或要包含其相依性?", + "uninstallOnly": "僅擴充功能", "uninstallAll": "全部解除安裝", "uninstallConfirmation": "確定要將 '{0}' 解除安裝嗎?", "ok": "確定", diff --git a/i18n/cht/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/cht/src/vs/platform/extensions/node/extensionValidator.i18n.json index 53fba7137de..3c3d0f5631d 100644 --- a/i18n/cht/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/cht/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "無法剖析 'engines.vscode` 值 {0}。例如,請使用:^0.10.0、^1.2.3、^0.11.0、^0.10.x 等。", + "versionSyntax": "無法解析 'engines.vscode` 值 {0}。請使用範例:^1.22.0, ^1.22.x, 等。", "versionSpecificity1": "在 `engines.vscode` ({0}) 中指定的版本不夠具體。對於 1.0.0 之前的 vscode 版本,請至少定義所需的主要和次要版本。 例如 ^0.10.0、0.10.x、0.11.0 等。", "versionSpecificity2": "在 `engines.vscode` ({0}) 中指定的版本不夠具體。對於 1.0.0 之後的 vscode 版本,請至少定義所需的主要和次要版本。 例如 ^1.10.0、1.10.x、1.x.x、2.x.x 等。", "versionMismatch": "擴充功能與 Code {0} 不相容。擴充功能需要: {1}。" diff --git a/i18n/cht/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/cht/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 5102b2af0d7..f4431d41910 100644 --- a/i18n/cht/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/cht/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "您的 {0} 安裝似乎已損毀。請重新安裝。", "integrity.moreInformation": "詳細資訊", - "integrity.dontShowAgain": "不要再顯示", - "integrity.prompt": "您的 {0} 安裝似乎已損毀。請重新安裝。" + "integrity.dontShowAgain": "不要再顯示" } \ No newline at end of file diff --git a/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json index 7117ed7c722..1633b008b0b 100644 --- a/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/cht/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "內嵌合併衝突中標頭及分隔器的邊界色彩。", "overviewRulerCurrentContentForeground": "目前內嵌合併衝突的概觀尺規前景。", "overviewRulerIncomingContentForeground": "傳入內嵌合併衝突的概觀尺規前景。", - "overviewRulerCommonContentForeground": "內嵌合併衝突中的共同上階概觀尺規前景。" + "overviewRulerCommonContentForeground": "內嵌合併衝突中的共同上階概觀尺規前景。", + "overviewRulerFindMatchForeground": "概述符合尋找條件的尺規標記顏色。不能使用非透明的顏色來隱藏底層的樣式。", + "overviewRulerSelectionHighlightForeground": "概述反白選擇的尺規標記顏色。不能使用非透明的顏色來隱藏底層的樣式。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/cht/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..efc4571aceb --- /dev/null +++ b/i18n/cht/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "屬性 '{0}' 為強制項目且必須屬於 `string` 類型", + "showViewlet": "顯示 {0}", + "view": "檢視" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/cht/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 4a5f6d65148..97fd8a138b1 100644 --- a/i18n/cht/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/cht/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "提供意見給編輯者", "views.explorer": "檔案總管檢視", "views.debug": "偵錯檢視", - "locationId.invalid": "`{0}`不是有效的識別位置", "duplicateView1": "無法在位置 '{1}' 使用相同的識別碼 '{0}' 註冊多個檢視", "duplicateView2": "識別碼為 '{0}' 的檢視已在位置 '{1}' 註冊" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 4bf77a965be..ca923fa42ab 100644 --- a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "在 {0} 毫秒後儲存時中止格式", + "timeout.onWillSave": "在 1750 亳秒後中止 onWillSaveTextDocument 事件", "saveParticipants": "執行儲存參與者..." } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 7aa96ea3f1e..35229bd6699 100644 --- a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "webview 編輯器" + ] } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index afae41621bb..7dc8700e978 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "若您不打算使用螢幕助讀程式,請將設定 `editor.accessibilitySupport` 變更為 \"off\"。", "disableTabMode": "停用協助工具模式", "gotoLine": "移至行", - "indentation": "縮排", "selectEncoding": "選取編碼", "selectEOL": "選取行尾順序", "selectLanguageMode": "選取語言模式", diff --git a/i18n/cht/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 56500848556..3c1c3df6d55 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0}MB", "sizeGB": "{0}GB", "sizeTB": "{0}TB", - "largeImageError": "影像的檔案大小太大 (>1MB),無法在編輯器中顯示。", "resourceOpenExternalButton": "要使用外部程式打開影像嗎?", - "nativeBinaryError": "檔案為二進位檔、非常大或使用不支援的文字編碼,因此將不會顯示於編輯器中。", "zoom.action.fit.label": "整個影像", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..e7e11a078b1 --- /dev/null +++ b/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "確定" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/cht/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json index f8343577d89..b8069009fb7 100644 --- a/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,12 +45,17 @@ "windowConfigurationTitle": "視窗", "window.openFilesInNewWindow.on": "檔案會在新視窗中開啟", "window.openFilesInNewWindow.off": "檔案會在開啟了檔案資料夾的視窗,或在上一個使用中的視窗中開啟", + "window.openFilesInNewWindow.defaultMac": "除非從擴充座或 Finder 中開啟,否則檔案會在開啟了檔案資料夾的視窗,或在上一個使用中的視窗中開啟", + "window.openFilesInNewWindow.default": "除非已從應用程式內挑選 (例如透過 [檔案] 功能表),否則檔案會在新視窗中開啟", + "openFilesInNewWindowMac": "控制檔案是否應在新視窗中開啟。\n- default: 檔案會在視窗中隨檔案的資料夾開啟或在上一個使用中視窗開啟,除非透過擴充座或從尋找工具開啟\n- on: 檔案會在新視窗開啟\n- off: 檔案會在視窗中隨檔案的資料夾開啟或在上一個使用中視窗開啟\n請注意,在某些情況下會略過此設定 (例如,使用了 -new-window 或 -reuse-window 命令列選項時)。", + "openFilesInNewWindow": "控制是否在新視窗中打開檔案。\n- default: 檔案會在新視窗中開啟,除非從應用程式中選擇 (例如透過 \"檔案\" 功能表)\n- on: 檔案會在新視窗中開啟\n- off: 檔案會在視窗中隨檔案的資料夾開啟或在上一個使用中視窗開啟\n請注意,在某些情況下會略過此設定 (例如,使用 the -new-window 或 -reuse-window 命令列選項時)。", "window.openFoldersInNewWindow.on": "資料夾會在新視窗中開啟", "window.openFoldersInNewWindow.off": "資料夾會取代上一個使用中的視窗", "window.openFoldersInNewWindow.default": "除非已從應用程式內挑選了資料夾 (例如透過 [檔案] 功能表),否則資料夾會在新視窗中開啟", "openFoldersInNewWindow": "控制資料夾應在新視窗中開啟或取代上一個使用中的視窗。\n- default: 除非已從應用程式內挑選資料夾 (例如,透過 [檔案] 功能表),否則會在新視窗開啟\n- on: 資料夾會在新視窗開啟\n- off: 資料夾會取代上一個使用中視窗\n請注意,在某些情況下會略過此設定 (例如,使用了 -new-window 或 -reuse-window 命令列選項時)。", "window.openWithoutArgumentsInNewWindow.on": "開啟新空白視窗", "window.openWithoutArgumentsInNewWindow.off": "聚焦在上一個正在運行的執行個體", + "openWithoutArgumentsInNewWindow": "控制不以引數啟動第二個執行個體時是否要開啟新的空白視窗,或是應聚焦於上一個執行的執行個體。\n- on: 開啟新的空白視窗\n- off: 上一個使用中的執行中執行個體將會受到聚焦\n請注意:仍可能發生忽略此設定的情形 (例如,在使用 -new-window 或 -reuse-window 命令列選項時)。", "window.reopenFolders.all": "重新開啟所有視窗。", "window.reopenFolders.folders": "重新開啟所有資料夾。空白工作區將不會還原。", "window.reopenFolders.one": "重新開啟上一個使用中的視窗。", @@ -58,6 +63,7 @@ "restoreWindows": "控制重新啟動後視窗重新開啟的方式。選取 [無] 一律以空白工作區開始、選取 [一] 從上一個編輯的視窗重新開啟、選取 [資料夾] 重新開啟所有資料夾曾經開啟的視窗,或選取 [全部] 重新開啟上一個工作階段的所有視窗。", "restoreFullscreen": "控制當視窗在全螢幕模式下結束後,下次是否仍以全螢幕模式開啟。", "zoomLevel": "調整視窗的縮放比例。原始大小為 0,而且每個向上增量 (例如 1) 或向下增量 (例如 -1) 代表放大或縮小 20%。您也可以輸入小數,更細微地調整縮放比例。", + "title": "依據使用中的編輯器控制視窗標題。變數會依據內容替換:\n${activeEditorShort}: 檔案名稱 (例如 myFile.txt)\n${activeEditorMedium}: 與工作區資料夾相關的檔案路徑 (例如 myFolder/myFile.txt)\n${activeEditorLong}: 完整的檔案路徑 (例如 /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 包含著資料夾之工作區資料夾的名稱 (例如 myFolder)\n${folderPath}: 包含著資料夾之工作區資料夾的檔案路徑 (例如 /Users/Development/myFolder)\n${rootName}: 工作區的名稱 (例如 myFolder 或 myWorkspace)\n${rootPath}: 工作區的檔案路徑 (例如 /Users/Development/myWorkspace)\n${appName}: 例如 VS Code\n${dirty}: 已變更指示 (若使用中編輯器已變更)\n${separator}: 僅在受具有值或靜態文字之變數括住時才顯示的條件式分隔符號 (\" - \")", "window.newWindowDimensions.default": "在螢幕中央開啟新視窗。", "window.newWindowDimensions.inherit": "以相同於上一個使用中之視窗的維度開啟新視窗。", "window.newWindowDimensions.maximized": "開啟並最大化新視窗。", @@ -73,6 +79,7 @@ "autoDetectHighContrast": "若啟用,如果 Windows 使用高對比佈景主題,就會自動變更為高對比佈景主題,切換掉 Windows 高對比佈景主題時則變更為深色佈景主題。", "titleBarStyle": "調整視窗標題列的外觀。變更需要完整重新啟動才會套用。", "window.nativeTabs": "啟用 macOS Sierra 視窗索引標籤。請注意需要完全重新啟動才能套用變更,並且完成設定後原始索引標籤將會停用自訂標題列樣式。", + "window.smoothScrollingWorkaround": "在還原最小化的 VS Code 視窗後,若捲動功能不再流暢,請啟用此因應措施。此因應措施適用於 Microsoft Surface 等具備精確軌跡板發生的捲動延遲問題 (https://github.com/Microsoft/vscode/issues/13612)。啟用此因應措施可能會在將視窗從最小化狀態還原後,導致版面稍微閃爍,但並不會造成任何傷害。", "zenModeConfigurationTitle": "Zen Mode", "zenMode.fullScreen": "控制開啟 Zen Mode 是否也會將 Workbench 轉換為全螢幕模式。", "zenMode.centerLayout": "控制開啟 Zen Mode 是否也會置中配置。", diff --git a/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 219551b11e8..cd5762d9e8b 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "編輯中斷點...", + "breakpoint": "中斷點", "functionBreakpointsNotSupported": "此偵錯類型不支援函式中斷點", "functionBreakpointPlaceholder": "要中斷的函式", "functionBreakPointInputAriaLabel": "輸入函式中斷點", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "未驗證的中斷點", "functionBreakpointUnsupported": "此偵錯類型不支援函式中斷點", "breakpointDirtydHover": "未驗證的中斷點。檔案已修改,請重新啟動偵錯工作階段。", + "logBreakpointUnsupported": "此偵錯類型不支援紀錄點", "conditionalBreakpointUnsupported": "此偵錯類型不支援的條件式中斷點", "hitBreakpointUnsupported": "此偵錯類型不支援點擊條件式中斷點" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index c84d5a3227a..2c747d5afe2 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "偵錯: 切換中斷點", "conditionalBreakpointEditorAction": "偵錯: 新增條件中斷點...", + "logPointEditorAction": "偵錯: 新增紀錄點...", "runToCursor": "執行至游標處", "debugEvaluate": "偵錯: 評估", "debugAddToWatch": "偵錯: 加入監看", diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 314e9cddf9c..357f07f4254 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "符合叫用次數條件時中斷。按 'Enter' 鍵接受,按 'esc' 鍵取消。", "breakpointWidgetExpressionPlaceholder": "在運算式評估為 true 時中斷。按 'Enter' 鍵接受,按 'esc' 鍵取消。", - "breakpointWidgetHitCountAriaLabel": "程式只會在符合叫用次數時於此處停止。按 Enter 鍵接受,或按 Escape 鍵取消。", - "breakpointWidgetAriaLabel": "程式只有在此條件為 true 時才會在此停止。請按 Enter 鍵接受,或按 Esc 鍵取消。", "expression": "運算式", - "hitCount": "叫用次數" + "hitCount": "叫用次數", + "logMessage": "日誌訊息" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index a3ce7418d3b..94fb09e76eb 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "請使用唯一的組態名稱。", "app.launch.json.compound.folder": "複合所在的資料夾名稱。", "app.launch.json.compounds.configurations": "將會作為此複合一部份而啟動之組態的名稱。", - "debugNoType": "偵錯配接器 'type' 不能省略且必須屬於 'string' 類型。", "selectDebug": "選取環境", "DebugConfig.failed": "無法在 '.vscode' 資料夾 ({0}) 中建立 'launch.json' 檔案。", "workspace": "工作區", diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 21124f7d54b..e48c78a24f2 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "編輯中斷點...", - "disableBreakpoint": "停用中斷點", - "enableBreakpoint": "啟用中斷點", + "breakpoint": "中斷點", "removeBreakpoints": "移除中斷點", "removeBreakpointOnColumn": "移除資料行 {0} 的中斷點", "removeLineBreakpoint": "移除行中斷點", @@ -21,6 +19,8 @@ "enableBreakpoints": "啟用資料行 {0} 的中斷點", "enableBreakpointOnLine": "啟用行中斷點", "addBreakpoint": "加入中斷點", - "conditionalBreakpoint": "新增條件中斷點...", + "addConditionalBreakpoint": "新增條件中斷點...", + "addLogPoint": "新增紀錄點...", + "cancel": "取消", "addConfiguration": "新增組態..." } \ No newline at end of file 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 a23b2bbf4ba..00af2e04bbf 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "詳細資訊", - "unableToLaunchDebugAdapter": "無法從 '{0}' 啟動偵錯配接器。", - "unableToLaunchDebugAdapterNoArgs": "無法啟動偵錯配接器。", - "stoppingDebugAdapter": "{0}。正在停止偵錯配接器。", "debugAdapterCrash": "偵錯配接器處理序已意外終止" } \ No newline at end of file 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 d4a12e733ff..b15f9a6ac6a 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "偵錯配接器可執行檔 '{0}' 不存在。", "debugAdapterCannotDetermineExecutable": "無法判斷偵錯配接器 '{0}' 的可執行檔。", - "launch.config.comment1": "使用 IntelliSense 以得知可用的屬性。", - "launch.config.comment2": "暫留以檢視現有屬性的描述。", - "launch.config.comment3": "如需詳細資訊,請瀏覽: {0}", - "debugType": "組態的類型。", - "debugTypeNotRecognised": "無法辨識此偵錯類型.請確認已有安裝並啟用相對應的偵錯擴充功能.", - "node2NotSupported": "\"node2\" 已不再支援,請改用 \"node\",並將 \"protocol\" 屬性設為 \"inspector\"。", - "debugName": "組態的名稱; 出現在啟動組態下拉式功能表中。", - "debugRequest": "要求組態的類型。可以是 [啟動] 或 [附加]。", - "debugServer": "僅限偵錯延伸模組開發: 如果指定了連接埠,VS Code 會嘗試連線至以伺服器模式執行的偵錯配接器", - "debugPrelaunchTask": "偵錯工作階段啟動前要執行的工作。", - "debugWindowsConfiguration": "Windows 特定的啟動設定屬性。", - "debugOSXConfiguration": "OS X 特定的啟動設定屬性。", - "debugLinuxConfiguration": "Linux 特定的啟動設定屬性。", - "deprecatedVariables": "'env.'、'config.' 及 'command.' 已標示為即將淘汰,請改用 'env:'、'config:' 及 'command:'。" + "unableToLaunchDebugAdapter": "無法從 '{0}' 啟動偵錯配接器。", + "unableToLaunchDebugAdapterNoArgs": "無法啟動偵錯配接器。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..49c1a7df761 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "使用 IntelliSense 以得知可用的屬性。", + "launch.config.comment2": "暫留以檢視現有屬性的描述。", + "launch.config.comment3": "如需詳細資訊,請瀏覽: {0}", + "debugType": "組態的類型。", + "debugTypeNotRecognised": "無法辨識此偵錯類型.請確認已有安裝並啟用相對應的偵錯擴充功能.", + "node2NotSupported": "\"node2\" 已不再支援,請改用 \"node\",並將 \"protocol\" 屬性設為 \"inspector\"。", + "debugName": "組態的名稱; 出現在啟動組態下拉式功能表中。", + "debugRequest": "要求組態的類型。可以是 [啟動] 或 [附加]。", + "debugServer": "僅限偵錯延伸模組開發: 如果指定了連接埠,VS Code 會嘗試連線至以伺服器模式執行的偵錯配接器", + "debugPrelaunchTask": "偵錯工作階段啟動前要執行的工作。", + "debugPostDebugTask": "偵錯工作階段結束後要執行的工作。", + "debugWindowsConfiguration": "Windows 特定的啟動設定屬性。", + "debugOSXConfiguration": "OS X 特定的啟動設定屬性。", + "debugLinuxConfiguration": "Linux 特定的啟動設定屬性。", + "deprecatedVariables": "'env.'、'config.' 及 'command.' 已標示為即將淘汰,請改用 'env:'、'config:' 及 'command:'。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..afdfcfb0e98 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code 主控台", + "mac.terminal.script.failed": "指令碼 '{0}' 失敗,結束代碼為 {1}", + "mac.terminal.type.not.supported": "不支援 '{0}'", + "press.any.key": "請按任意鍵繼續...", + "linux.term.failed": "'{0}' 失敗,結束代碼為 {1}" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 5709df0fdf0..beddde6d10c 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,8 @@ "configureWorkspaceFolderRecommendedExtensions": "設定建議的延伸模組 (工作區資料夾) ", "malicious tooltip": "這個延伸模組曾經被回報是有問題的。", "malicious": "惡意", + "disabled": "停用", + "disabled globally": "停用", "disabled workspace": "在此工作區停用", "disableAll": "停用所有已安裝的延伸模組", "disableAllWorkspace": "停用此工作區的所有已安裝延伸模組", diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 0f0a8bc1904..49e59b56429 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -36,8 +36,6 @@ "view location": "位置", "localizations": "當地語系化 ({0})", "localizations language id": "語言識別碼", - "localizations language name": "語言名稱", - "localizations localized language name": "語言名稱 (在地化)", "colorThemes": "色彩佈景主題 ({0})", "iconThemes": "圖示佈景主題 ({0}) ", "colors": "色彩 ({0})", diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index a6842652e2e..4c641b129be 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "根據目前工作區的使用者,建議您使用此延伸模組。", "reallyRecommended2": "建議對此檔案類型使用 '{0}' 延伸模組。", "reallyRecommendedExtensionPack": "建議對此檔案類型使用 '{0}' 延伸模組套件。", - "showRecommendations": "顯示建議", "install": "安裝", + "showRecommendations": "顯示建議", "showLanguageExtensions": "市集有 '.{0}' 個文件的擴充功能可以提供協助", "workspaceRecommended": "此工作區具有擴充功能建議。", "installAll": "全部安裝", diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index c1249a2f499..c096eb60a7d 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "要停用其他按鍵對應 ({0}),以避免按鍵繫結關係間的衝突嗎?", "yes": "是", - "no": "否", - "betterMergeDisabled": "目前已內建 Better Merge 延伸模組,安裝的延伸模組已停用並且可以移除。", - "uninstall": "解除安裝" + "no": "否" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 4bed8103f5e..14b49f43b71 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": " 推薦項目", "otherRecommendedExtensions": "其他建議", "workspaceRecommendedExtensions": "工作區建議", + "builtInExtensions": "功能", + "builtInThemesExtensions": "主題", "searchExtensions": "在 Marketplace 中搜尋擴充功能", "sort by installs": "排序依據: 安裝計數", "sort by rating": "排序依據: 評等", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 313bfa047bc..79ad427acdd 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -36,7 +36,8 @@ "irreversible": "此動作無法回復!", "binFailed": "無法使用資源回收筒刪除。您要改為永久刪除嗎? ", "trashFailed": "無法使用垃圾筒刪除。您要改為永久刪除嗎?", - "importFiles": "匯入檔案", + "deletePermanentlyButtonLabel": "永久刪除(&&D)", + "retryButtonLabel": "重試(&&R)", "confirmOverwrite": "目的資料夾中已有同名的檔案或資料夾。要取代它嗎?", "replaceButtonLabel": "取代(&&R)", "fileIsAncestor": "要貼上的檔案是在目地資料夾的上層 ", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index c024cac3cb0..ef1a56ddaa3 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "指派給新檔案的預設語言模式。", "editorConfigurationTitle": "編輯器", "formatOnSave": "在儲存時設定檔案格式。格式器必須處於可用狀態、檔案不得自動儲存,且編輯器不得關機。", + "formatOnSaveTimeout": "儲存時格式化超時。指定 formatOnSave 命令的時間限制 (以毫秒為單位)。超過指定超時時間的命令將被取消。", "explorerConfigurationTitle": "檔案總管", "openEditorsVisible": "[開放式編輯器] 窗格中顯示的編輯器數目。", "autoReveal": "控制總管是否在開啟檔案時自動加以顯示及選取。", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 3f54e82bcea..b183fbaeaf8 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,12 +7,12 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "輸入檔案名稱。請按 Enter 鍵確認或按 Esc 鍵取消。", - "constructedPath": "在 **{1}** 建立 {0}", "filesExplorerViewerAriaLabel": "{0},檔案總管", "dropFolders": "要在工作區新增資料夾嗎?", "dropFolder": "要在工作區新增資料夾嗎?", "addFolders": "新增資料夾(&A)", "addFolder": "新增資料夾(&A)", + "confirmRootsMove": "您確定要變更工作區中多個根資料夾的順序嗎?", "confirmMultiMove": "確定要移動以下 {0} 個文件嗎?", "confirmRootMove": "您確定要變更工作區中根資料夾 '{0}' 的順序嗎? ", "confirmMove": "確定要移動 '{0}' 嗎?", diff --git a/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index c79987737e6..42320096aec 100644 --- a/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "您想要變更 VS Code 的 UI 語言為 {0} 並重新啟動嗎?", "yes": "是", "no": "否", - "doNotAskAgain": "不要再詢問我", + "neverAgain": "不要再顯示", "JsonSchema.locale": "要使用的 UI 語言。", "vscode.extension.contributes.localizations": "提供在地化服務給編輯者", "vscode.extension.contributes.localizations.languageId": "顯示已翻譯字串的語言 Id", diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 88fd157d4b8..505303ab7e3 100644 --- a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "複製", - "copyMarkerMessage": "複製訊息" + "copyMessage": "複製訊息" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 8e9b2618050..9459b771c76 100644 --- a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "共 {0} 項問題", - "filteredProblems": "顯示 {1} 的 {0} 問題" + "totalProblems": "共 {0} 項問題" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 84c0330c5cb..cc0be28b025 100644 --- a/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "問題", "markers.panel.aria.label.problems.tree": "依檔案分組的問題", "markers.panel.no.problems.build": "目前在工作區中未偵測到任何問題。", - "markers.panel.no.problems.filters": "使用提供的篩選準則找不到任何結果", "markers.panel.action.filter": "篩選問題", - "markers.panel.filter.placeholder": "依類型或文字篩選", + "markers.panel.filter.ariaLabel": "篩選問題", "markers.panel.filter.errors": "錯誤", "markers.panel.filter.warnings": "警告", "markers.panel.filter.infos": "資訊", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "{0} 個未知", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "發生 {1} 個問題的 {0}", + "problems.tree.aria.label.marker.relatedInformation": "此問題在 {0} 個位置有參考。", + "problems.tree.aria.label.error.marker": "{0} 產生的錯誤: 在行 {2} 與字元 {3} 的 {1}。{4} ", + "problems.tree.aria.label.error.marker.nosource": "錯誤: {0} 在行 {1} 和字元 {2}.{3}", + "problems.tree.aria.label.warning.marker": "{0} 產生的警告: 在行 {2} 與字元 {3} 的 {1}。{4} ", + "problems.tree.aria.label.warning.marker.nosource": "警告: 在行 {1} 與字元 {2} 的 {0}。{3}", + "problems.tree.aria.label.info.marker": "{0} 產生的資訊: 在行 {2} 與字元 {3} 的 {1}。{4}", + "problems.tree.aria.label.info.marker.nosource": "資訊: 在行 {1} 與字元 {2} 的 {0}。{3} ", + "problems.tree.aria.label.marker": "{0} 產生的問題: 在行 {2} 與字元 {3} 的 {1}。{4} ", + "problems.tree.aria.label.marker.nosource": "問題: 在行 {1} 與字元 {2} 的 {0}。{3} ", + "problems.tree.aria.label.relatedinfo.message": "在第 {1} 行的 {0},以及在 {3} 的 {2} 字元", "errors.warnings.show.label": "顯示錯誤和警告" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/cht/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 6f396ee79c2..f5bbc727caf 100644 --- a/i18n/cht/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "切換輸出", "clearOutput": "清除輸出", "toggleOutputScrollLock": "切換輸出 SCROLL LOCK", - "switchToOutput.label": "切換至輸出" + "switchToOutput.label": "切換至輸出", + "openInLogViewer": "開啟日誌檔案" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index b1a05feb9e7..d1554edfa0a 100644 --- a/i18n/cht/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "輸出", "logViewer": "紀錄檢視器", "viewCategory": "檢視", - "clearOutput.label": "清除輸出" + "clearOutput.label": "清除輸出", + "openActiveLogOutputFile": "檢視: 開啟活動日誌輸出檔案" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 8134d240e08..fc90fe51e84 100644 --- a/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "鍵盤快速鍵(&&K)", "showDefaultKeybindings": "顯示預設按鍵繫結", "showUserKeybindings": "顯示使用者按鍵繫結", "SearchKeybindings.AriaLabel": "搜尋按鍵繫結關係", diff --git a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index 903d12aaed4..aadc754a854 100644 --- a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "開啟原始預設設置", + "openSettings": "開啟設定", "openGlobalSettings": "開啟使用者設定", "openGlobalKeybindings": "開啟鍵盤快速鍵", "openGlobalKeybindingsFile": "開啟鍵盤快速鍵檔案", diff --git a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 7f9e4282439..566a9672a3c 100644 --- a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "預設設定", "SearchSettingsWidget.AriaLabel": "搜尋設定", "SearchSettingsWidget.Placeholder": "搜尋設定", "noSettingsFound": "沒有結果", @@ -16,6 +15,8 @@ "nlpResult": "自然語言結果", "filterResult": "篩選結果", "defaultSettings": "預設設定", + "defaultUserSettings": "預設使用者設定", + "defaultWorkspaceSettings": "預設工作區設定", "defaultFolderSettings": "預設資料夾設定", "defaultEditorReadonly": "在右方編輯器中編輯以覆寫預設。", "preferencesAriaLabel": "預設喜好設定。唯讀文字編輯器。" diff --git a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 1349faf0322..912f924cec9 100644 --- a/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "顯示擴充功能 \"{0}\"", "editTtile": "編輯", "replaceDefaultValue": "在設定中取代", - "copyDefaultValue": "複製到設定", - "unsupportedPHPExecutablePathSetting": "這項設定必須是使用者設定。若要設定工作區的 PHP,請開啟 PHP 檔案並按一下狀態列中的 [PHP 路徑]。", - "unsupportedWorkspaceSetting": "這項設定必須是使用者設定。", - "unsupportedWorkbenchSetting": "目前無法套用此設定。要在您直接開啟此資料夾時才會套用。", - "unsupportedWorkbenchSettingDevMode": "目前無法套用此設定。若您在註冊時將其範圍定義為「資源」,或您直接開啟此資料夾時,才會套用該設定。 " + "copyDefaultValue": "複製到設定" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/cht/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index d4515832082..4bf0fb57a82 100644 --- a/i18n/cht/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "安裝額外SCM提供者...", "no open repo": "沒有使用中的原始檔控制提供者。", "source control": "原始檔控制", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "隱藏" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 41f5ce40bb7..1b7c3b9b6fa 100644 --- a/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "顯示下一個搜尋包含模式", "previousSearchIncludePattern": "顯示上一個搜尋包含模式", + "nextSearchExcludePattern": "顯示下一個搜尋排除模式", + "previousSearchExcludePattern": "顯示上一個搜尋排除模式", "nextSearchTerm": "顯示下一個搜尋字詞", "previousSearchTerm": "顯示上一個搜尋字詞", - "showSearchViewlet": "顯示搜尋", "findInFiles": "在檔案中尋找", "replaceInFiles": "檔案中取代", "RefreshAction.label": "重新整理", diff --git a/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json index bbc143a1217..4578dbafa9e 100644 --- a/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,9 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "切換搜尋詳細資料", - "searchIncludeExclude.label": "要包含/排除的檔案", - "searchIncludeExclude.ariaLabel": "搜索包含/排除模式 ", - "searchIncludeExclude.placeholder": "例如:src, !*.ts, test/**/*.log", + "searchScope.includes": "要包含的檔案", + "label.includes": "搜尋包含模式", + "searchScope.excludes": "要排除的檔案", + "label.excludes": "搜尋排除模式", "replaceAll.confirmation.title": "全部取代", "replaceAll.confirm.button": "取代(&&R)", "replaceAll.occurrence.file.message": "已將 {1} 個檔案中的 {0} 個相符項目取代為 '{2}'。", diff --git a/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 39cad4cb3d4..1ab677e6ae2 100644 --- a/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "搜尋", + "copyMatchLabel": "複製", + "copyPathLabel": "複製路徑", + "copyAllLabel": "全部複製", "findInFolder": "在資料夾中尋找...", "findInWorkspace": "在工作區中尋找...", "showTriggerActions": "前往工作區中的符號...", "name": "搜尋", - "search": "搜尋", "showSearchViewl": "顯示搜尋", "view": "檢視", "findInFiles": "在檔案中尋找", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "設定以將全域符號搜尋的結果納入 Quick Open 的檔案結果中。", "search.followSymlinks": "控制是否要在搜尋時遵循 symlink。", "search.smartCase": "如果搜尋式為全部小寫,則用不分大小寫的搜尋,否則用分大小寫的搜尋", - "search.globalFindClipboard": "控制搜尋檢視是否應讀取或修改 macOS 上的共用尋找剪貼簿 (shared find clipboard)", - "search.location": "預覽: 控制搜尋會在資訊看板顯示為檢視,或在面板區域顯示為面板以取得更多水平空間。下個版本的面板搜尋將具有改善的水平版面配置,而此項目將不再處於預覽階段。" + "search.globalFindClipboard": "控制搜尋檢視是否應讀取或修改 macOS 上的共用尋找剪貼簿 (shared find clipboard)" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index ef6eef03108..0d09e32233d 100644 --- a/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "協助我們改善{0}", "takeShortSurvey": "填寫簡短調查問卷", "remindLater": "稍後再提醒我", - "neverAgain": "不要再顯示", - "helpUs": "協助我們改善{0}" + "neverAgain": "不要再顯示" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 9d71ec68080..4b75935cfb3 100644 --- a/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "您願意填寫簡短的意見反應問卷嗎?", "takeSurvey": "填寫問卷", "remindLater": "稍後再提醒我", - "neverAgain": "不要再顯示", - "surveyQuestion": "您願意填寫簡短的意見反應問卷嗎?" + "neverAgain": "不要再顯示" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 229384af3d5..bd7d5bfc2f7 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "問題模式或所提供或預先定義之問題模式的名稱。如有指定基底,即可發出。", "ProblemMatcherSchema.base": "要使用之基底問題比對器的名稱。", "ProblemMatcherSchema.owner": "Code 內的問題擁有者。如果指定基底,則可以省略。如果省略且未指定基底,預設為 [外部]。", + "ProblemMatcherSchema.source": "可供人們閱讀的診斷描述來源,例如 'typescript' 或 'super lint'。", "ProblemMatcherSchema.severity": "擷取項目問題的預設嚴重性。如果模式未定義嚴重性的符合群組,就會加以使用。", "ProblemMatcherSchema.applyTo": "控制文字文件上所回報的問題僅會套用至開啟的文件、關閉的文件或所有文件。", "ProblemMatcherSchema.fileLocation": "定義問題模式中所回報檔案名稱的解譯方式。", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 02db571b804..4c9bd3ae056 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -29,6 +29,9 @@ "JsonSchema.tasks.group": "定義工作屬於哪個執行群組。支援將 「組建」新增到組建群組,以及將「測試」新增到測試群組。", "JsonSchema.tasks.type": "定義工作在殼層中會作為處理序或命令來執行。", "JsonSchema.command.quotedString.value": "實際命令值", + "JsonSchema.tasks.quoting.escape": "使用殼層逸出字元的逸出字元 (例如 ` under PowerShell 與 \\ under bash)。", + "JsonSchema.tasks.quoting.strong": "使用殼層的強式引號字元將引數括住 (例如 PowerShell 及 Bash 下的 \")。", + "JsonSchema.tasks.quoting.weak": "使用殼層的弱式引號字元將引數括住 (例如 PowerShell 及 Bash 下的 ')", "JsonSchema.command.quotesString.quote": "如何引用命令值。", "JsonSchema.command": "要執行的命令。可以是外部程式或殼層命令。", "JsonSchema.args.quotedString.value": "實際參數值", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index d2f0c4f360a..06b20143d00 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,6 +11,7 @@ "totalErrors": "{0} 個錯誤", "totalWarnings": "{0} 個警告", "totalInfos": "{0} 個資訊", + "problems": "問題", "building": "建置中...", "manyProblems": "10K+", "runningTasks": "顯示執行中的工作", @@ -30,8 +31,8 @@ "selectProblemMatcher": "選取錯誤和警告的種類以掃描工作輸出", "customizeParseErrors": "當前的工作組態存在錯誤.請更正錯誤再執行工作.", "moreThanOneBuildTask": "定義了很多建置工作於tasks.json.執行第一個.", - "TaskSystem.activeSame.background": "工作 '{0}' 已在使用中並處於背景模式。若要予以終止,請使用 [Tasks] \\(工作\\) 功能表的 [Terminate Task...] \\(終止工作...\\)。", - "TaskSystem.activeSame.noBackground": "工作 '{0}' 已在使用中。若要予以終止,請使用 [Tasks] \\(工作\\) 功能表的 [Terminate Task...] \\(終止工作...\\)。", + "terminateTask": "終止工作", + "restartTask": "重新啟動工作", "TaskSystem.active": "已有工作在執行。請先終止該工作,然後再執行其他工作。", "TaskSystem.restartFailed": "無法終止再重新啟動工作 {0}", "TaskService.noConfiguration": "錯誤: {0} 工作偵測未替下列組態提供工作:\n{1}\n將會忽略該工作。\n", @@ -48,8 +49,8 @@ "recentlyUsed": "最近使用的工作", "configured": "設定的工作", "detected": "偵測到的工作", - "TaskService.notAgain": "不要再顯示", "TaskService.ignoredFolder": "因為下列工作區資料夾使用工作版本 0.1.0,所以已略過: {0}", + "TaskService.notAgain": "不要再顯示", "TaskService.pickRunTask": "請選取要執行的工作", "TaslService.noEntryToRun": "找不到任何要執行的工作。請設定工作...", "TaskService.fetchingBuildTasks": "正在擷取組建工作...", diff --git a/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 00b03ef2ad6..b9d0cc54748 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "警告: options.cwd 必須屬於字串類型。即將忽略值 {0}。", + "ConfigurationParser.inValidArg": "錯誤: 命令參數必須是字串或帶引號的字串。提供的值為:\n{0}", "ConfigurationParser.noargs": "錯誤: 命令引數必須是字串陣列。提供的值為:\n{0}", "ConfigurationParser.noShell": "警告: 只有在終端機中執行工作時才支援殼層組態。", "ConfigurationParser.noName": "錯誤: 宣告範圍中的問題比對器必須有名稱:\n{0}\n", diff --git a/i18n/cht/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/cht/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..2657899133e --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "終端機的背景色彩,允許終端機和面板的色彩不同。", + "terminal.foreground": "終端機的前景色彩。", + "terminalCursor.foreground": "終端機游標的前景色彩。", + "terminalCursor.background": "終端機游標的背景色彩。允許區塊游標重疊於自訂字元色彩。", + "terminal.selectionBackground": "終端機的選取項目背景色彩。", + "terminal.border": "在終端機內將窗格分割之邊界的色彩。預設為 panel.border。", + "terminal.ansiColor": "終端機中的 '{0}' ANSI 色彩。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 08bb4aff71d..5ca89988fe2 100644 --- a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -43,6 +43,7 @@ "workbench.action.terminal.scrollUpPage": "向上捲動 (頁)", "workbench.action.terminal.scrollToTop": "捲動至頂端", "workbench.action.terminal.clear": "清除", + "workbench.action.terminal.clearSelection": "清除選取項目", "workbench.action.terminal.allowWorkspaceShell": "允許工作區外觀配置", "workbench.action.terminal.disallowWorkspaceShell": "不允許工作區外觀設置", "workbench.action.terminal.rename": "重新命名", @@ -51,5 +52,9 @@ "workbench.action.terminal.hideFindWidget": "隱藏尋找小工具", "nextTerminalFindTerm": "顯示下一個尋找字詞", "previousTerminalFindTerm": "顯示上一個尋找字詞", - "quickOpenTerm": "切換使用中的終端機 " + "quickOpenTerm": "切換使用中的終端機 ", + "workbench.action.terminal.scrollToPreviousCommand": "捲動至上一個命令", + "workbench.action.terminal.scrollToNextCommand": "捲動至下一個命令", + "workbench.action.terminal.selectToPreviousCommand": "選取上一個命令", + "workbench.action.terminal.selectToNextCommand": "選取下一個命令" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 0b5ee94a971..18f46d9ce41 100644 --- a/i18n/cht/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "此工作區包含只能在 [使用者設定] 中進行的設定 ({0})。點擊 [這裡]({1}) 了解更多。", "openWorkspaceSettings": "開啟工作區設定", - "dontShowAgain": "不要再顯示", - "unsupportedWorkspaceSettings": "此工作區包含只能在 [使用者設定] 中進行的設定 ({0})。點擊 [這裡]({1}) 了解更多。" + "dontShowAgain": "不要再顯示" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 2e7dd953797..bc2c29afc58 100644 --- a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "稍後", "releaseNotes": "版本資訊", "showReleaseNotes": "顯示版本資訊", "read the release notes": "歡迎使用 {0} v{1}! 您要閱讀版本資訊嗎?", @@ -16,13 +15,12 @@ "updateIsReady": "新的 {0} 更新已可用。", "noUpdatesAvailable": "目前沒有任何可用的更新。", "ok": "確定", - "download now": "立即下載", "thereIsUpdateAvailable": "已有更新可用。", + "download now": "立即下載", + "later": "稍後", "installUpdate": "安裝更新", - "updateAvailable": "已有更新可用: {0} {1}", "updateInstalling": "{0} {1} 正在背景執行安裝,完成後我們會通知您。", "updateNow": "立即更新", - "updateAvailableAfterRestart": "{0} 重新啟動後將會更新。", "commandPalette": "命令選擇區...", "settings": "設定", "keyboardShortcuts": "鍵盤快速鍵(&&K)", diff --git a/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 7aa96ea3f1e..b50b4d83e7d 100644 --- a/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview 編輯器" + "webview.editor.label": "webview 編輯器", + "developer": "開發人員" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..b418d6bed42 --- /dev/null +++ b/i18n/cht/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "開啟 Webview Developer 工具" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index c7e785dc15e..c089b63f259 100644 --- a/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "允許 Microsoft 收集使用率資料來協助改進 VS Code。閱讀我們的 [隱私權聲明] ({0}) 以及學習如何 [選擇退出] ({1})。", + "telemetryOptOut.optInNotice": "允許 Microsoft 收集使用率資料來協助改進 VS Code。閱讀我們的 [隱私權聲明] ({0}) 以及學習如何 [選擇參加] ({1})。", "telemetryOptOut.readMore": "閱讀其他資訊" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/cht/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 8104e02472c..c1ac321018a 100644 --- a/i18n/cht/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "工具與語言", "welcomePage.installExtensionPacksDescription": "安裝{0}與{1}的支援功能。", "welcomePage.moreExtensions": "更多", - "welcomePage.installKeymapDescription": "安裝鍵盤快速鍵", - "welcomePage.installKeymapExtension": "安裝鍵盤快速鍵{0}與{1}", "welcomePage.others": "其他", "welcomePage.colorTheme": "彩色佈景主題", "welcomePage.colorThemeDescription": "將編輯器及您的程式碼設定成您喜愛的外觀", diff --git a/i18n/cht/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/cht/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..b292db4923f --- /dev/null +++ b/i18n/cht/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "目前無法套用此設定。要在您直接開啟此資料夾時才會套用。" +} \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index 325db145496..35229bd6699 100644 --- a/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -5,14 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "canNotResolveWorkspaceFolder": "無法解析 $ {workspaceFolder}。請開啟一個資料夾。", - "canNotResolveLineNumber": " 無法解析 $ {lineNumber} , 請打開編輯器。", - "canNotResolveSelectedText": "無法解析 $ {selectedText} , 請開啟編輯器。", - "canNotResolveFile": "無法解析 $ {file} , 請開啟編輯器。", - "canNotResolveRelativeFile": "無法解析 $ {relativeFile} , 請開啟編輯器。", - "canNotResolveFileDirname": "無法解析 $ {fileDirname} , 請開啟編輯器。", - "canNotResolveFileExtname": "無法解析 $ {fileExtname} , 請開啟編輯器。", - "canNotResolveFileBasename": "無法解析 $ {fileBasename} , 請開啟編輯器。", - "canNotResolveFileBasenameNoExtension": "無法解析 $ {fileBasenameNoExtension} , 請開啟編輯器。" + ] } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/cht/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index b8196a053ae..4d5641feb37 100644 --- a/i18n/cht/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "延伸主機意外終止。", "extensionHostProcess.unresponsiveCrash": "因為延伸主機沒有回應,所以意外終止。", - "devTools": "開發人員工具", "restart": "重新啟動延伸主機", "overwritingExtension": "正在以 {1} 覆寫延伸模組 {0}。", "extensionUnderDevelopment": "正在載入位於 {0} 的開發延伸模組", diff --git a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 5a1684b4dee..5f4414cf665 100644 --- a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,11 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "需要 Microsoft .NET Framework 4.5。請連入此連結進行安裝。", "installNet": "下載 .NET Framework 4.5", "neverShowAgain": "不要再顯示", - "netVersionError": "需要 Microsoft .NET Framework 4.5。請連入此連結進行安裝。", - "learnMore": "說明", "enospcError": "{0} 無法監看此大型工作區中的檔案變更。請按照連結中的說明來解決此問題。", + "learnMore": "說明", + "fileInvalidPath": "檔案資源 ({0}) 無效", + "fileIsDirectoryError": "檔案是目錄", + "fileNotModifiedError": "未修改檔案的時間", + "fileTooLargeError": "檔案太大無法開啟", + "fileNotFoundError": "找不到檔案 ({0})", + "fileBinaryError": "檔案似乎是二進位檔,因此無法當做文字開啟", + "filePermission": "寫至檔案 ({0}) 的權限遭拒", + "fileExists": "要建立的檔案已存在 ({0})", + "fileModifiedError": "修改檔案的時間", + "fileReadOnlyError": "檔案為唯讀", + "fileMoveConflict": "無法移動/複製。目的地已存在檔案。", + "unableToMoveCopyError": "無法移動/複製。檔案會取代其所在的資料夾。", "binFailed": "無法將 '{0}' 移至資源回收筒", "trashFailed": "無法將 '{0}' 移動至垃圾" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/cht/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 445082ba333..5b44b85bd11 100644 --- a/i18n/cht/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "找不到檔案 ({0})", "fileIsDirectoryError": "檔案是目錄", "fileNotModifiedError": "未修改檔案的時間", "fileBinaryError": "檔案似乎是二進位檔,因此無法當做文字開啟" diff --git a/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 5b30d29c44f..9579a990fa8 100644 --- a/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "tmLanguage 檔案所使用的 textmate 範圍名稱。", "vscode.extension.contributes.grammars.path": "tmLanguage 檔案的路徑。此路徑是擴充功能資料夾的相對路徑,而且一般會以 './syntaxes/' 開頭。", "vscode.extension.contributes.grammars.embeddedLanguages": "如果此文法包含內嵌語言,即為範圍名稱到語言識別碼的對應。", + "vscode.extension.contributes.grammars.tokenTypes": "範圍名稱到象徵類型的對應。", "vscode.extension.contributes.grammars.injectTo": "要插入此文法的語言範圍名稱清單。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index a06e75b15d3..2f6acd42b1f 100644 --- a/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/cht/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "'contributes.{0}.path' 中應有字串。提供的值: {1}", "invalid.injectTo": "`contributes.{0}.injectTo` 中的值無效。必須是語言範圍名稱的陣列。提供的值: {1}", "invalid.embeddedLanguages": "`contributes.{0}.embeddedLanguages` 中的值無效。必須是從範圍名稱到語言的物件對應。提供的值: {1}", + "invalid.tokenTypes": "`contributes.{0}.tokenTypes` 的值無效。必須是從範圍名稱到象徵類型的物件對應。提供的值: {1} ", "invalid.path.1": "擴充功能資料夾 ({2}) 應包含 'contributes.{0}.path' ({1})。這可能會導致擴充功能無法移植。", "no-tm-grammar": "此語言未註冊任何 TM 文法。" } \ No newline at end of file diff --git a/i18n/deu/extensions/css-language-features/package.i18n.json b/i18n/deu/extensions/css-language-features/package.i18n.json index 0d84b581b18..6c525265ecf 100644 --- a/i18n/deu/extensions/css-language-features/package.i18n.json +++ b/i18n/deu/extensions/css-language-features/package.i18n.json @@ -8,6 +8,7 @@ ], "displayName": "CSS Sprachfeatures", "description": "Bietet umfangreiche Sprachunterstützung für CSS-, LESS- und SCSS-Dateien.", + "css.title": "CSS", "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", diff --git a/i18n/deu/extensions/css/package.i18n.json b/i18n/deu/extensions/css/package.i18n.json index a9ceacd1102..aed34432417 100644 --- a/i18n/deu/extensions/css/package.i18n.json +++ b/i18n/deu/extensions/css/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CSS-Sprachgrundlagen" + "displayName": "CSS-Sprachgrundlagen", + "description": "Bietet Syntax-Highlighting und Bracket-Matching für CSS, LESS und SCSS Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/emmet/package.i18n.json b/i18n/deu/extensions/emmet/package.i18n.json index 0dac2469d98..280cca4ed3d 100644 --- a/i18n/deu/extensions/emmet/package.i18n.json +++ b/i18n/deu/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Pfad zu einem Ordner mit Emmet-Profilen und Ausschnitten.", "emmetShowExpandedAbbreviation": "Zeigt erweiterte Emmet-Abkürzungen als Vorschläge an.\nDie Option inMarkupAndStylesheetFilesOnly gilt für HTML, HAML, Jade, Slim, XML, XSL, CSS, SCSS, Sass, Less und Stylus.\nDie Option \"always\" gilt unabhängig vom Markup/CSS für alle Teile der Datei.", "emmetShowAbbreviationSuggestions": "Zeigt mögliche Emmet-Abkürzungen als Vorschläge an. Diese Option gilt nicht in Stylesheets oder wenn emmet.showExpandedAbbreviation auf \"never\" festgelegt ist.", - "emmetIncludeLanguages": "Aktivieren Sie Emmet-Abkürzungen in Sprachen, die nicht standardmäßig unterstützt werden. Fügen Sie hier ein Mapping zwischen der Sprache und der von Emmet unterstützten Sprache hinzu.\nBeispiel: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "In Emmet-Ausschnitten zu verwendende Codeausschnitte", "emmetTriggerExpansionOnTab": "Wenn aktiviert, werden Emmet-Abkürzungen beim Drücken der TAB-Taste erweitert.", "emmetPreferences": "Einstellungen, die zum Ändern des Verhaltens einiger Aktionen und Konfliktlöser von Emmet verwendet werden.", @@ -59,5 +58,6 @@ "emmetPreferencesCssWebkitProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"webkit\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"webkit\"-Präfix immer zu vermeiden.", "emmetPreferencesCssMozProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"moz\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"moz\"-Präfix immer zu vermeiden.", "emmetPreferencesCssOProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"o\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"o\"-Präfix immer zu vermeiden.", - "emmetPreferencesCssMsProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"ms\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"ms\"-Präfix immer zu vermeiden." + "emmetPreferencesCssMsProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"ms\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"ms\"-Präfix immer zu vermeiden.", + "emmetPreferencesCssFuzzySearchMinScore": "Das Mindestergebnis (zwischen 0 und 1), das die Abkürzung mit Fuzzyübereinstimmung erreichen muss. Niedrigere Werte führen zu vielen falsch positiven Übereinstimmungen, höhere Werte verringern unter Umständen die möglichen Übereinstimmungen." } \ No newline at end of file diff --git a/i18n/deu/extensions/git/out/commands.i18n.json b/i18n/deu/extensions/git/out/commands.i18n.json index af42eef9ac7..7efb13a1a10 100644 --- a/i18n/deu/extensions/git/out/commands.i18n.json +++ b/i18n/deu/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "OK", "push with tags success": "Push mit Tags erfolgreich ausgeführt.", "pick remote": "Remotespeicherort auswählen, an dem der Branch \"{0}\" veröffentlicht wird:", + "sync is unpredictable": "Mit dieser Aktion werden Commits per Push und Pull an und von \"{0}/{1}\" übertragen.", "never again": "OK, nicht mehr anzeigen", "no remotes to publish": "In Ihrem Repository wurden keine Remoteelemente für die Veröffentlichung konfiguriert.", "no changes stash": "Es sind keine Änderungen vorhanden, für die ein Stash ausgeführt werden kann.", diff --git a/i18n/deu/extensions/git/package.i18n.json b/i18n/deu/extensions/git/package.i18n.json index 4c745be0f35..70e0819e8ad 100644 --- a/i18n/deu/extensions/git/package.i18n.json +++ b/i18n/deu/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Steuert, ob eine Inlineaktion zum Öffnen der Datei in der Ansicht \"Git-Änderungen\" angezeigt wird.", "config.inputValidation": "Steuert, wann die Commit-Meldung der Eingabevalidierung angezeigt wird.", "config.detectSubmodules": "Steuert, ob Git-Submodule automatisch erkannt werden.", + "config.detectSubmodulesLimit": "Steuert die Begrenzung der Git-Submodule.", "colors.modified": "Farbe für geänderte Ressourcen.", "colors.deleted": "Farbe für gelöschten Ressourcen.", "colors.untracked": "Farbe für nicht verfolgte Ressourcen.", diff --git a/i18n/deu/extensions/html/package.i18n.json b/i18n/deu/extensions/html/package.i18n.json index 35229bd6699..9ce5789f793 100644 --- a/i18n/deu/extensions/html/package.i18n.json +++ b/i18n/deu/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HTML-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung, Klammernpaare und Ausschnitte in HTML-Dateien." } \ 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 35229bd6699..b9be795e738 100644 --- a/i18n/deu/extensions/json/package.i18n.json +++ b/i18n/deu/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JSON-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in JSON-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json index 98c4ffb61e2..145213b7b2e 100644 --- a/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json +++ b/i18n/deu/extensions/markdown-language-features/out/features/preview.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "lockedPreviewTitle": "[Vorschau] {0}", "previewTitle": "Vorschau von {0}" } \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-language-features/package.i18n.json b/i18n/deu/extensions/markdown-language-features/package.i18n.json index 8cae9ecc07d..8a886edcb00 100644 --- a/i18n/deu/extensions/markdown-language-features/package.i18n.json +++ b/i18n/deu/extensions/markdown-language-features/package.i18n.json @@ -15,6 +15,7 @@ "markdown.preview.fontSize.desc": "Steuert den Schriftgrad in Pixeln, der in der Markdownvorschau verwendet wird.", "markdown.preview.lineHeight.desc": "Steuert die Zeilenhöhe, die in der Markdownvorschau verwendet wird. Diese Zahl ist relativ zum Schriftgrad.", "markdown.preview.markEditorSelection.desc": "Markieren Sie die aktuelle Editor-Auswahl in der Markdown-Vorschau.", + "markdown.preview.scrollEditorWithPreview.desc": "Wenn für eine Markdown-Vorschau ein Bildlauf durchgeführt wird, die Ansicht des Editors aktualisieren.", "markdown.preview.scrollPreviewWithEditor.desc": "Wenn für die Markdown-Vorschau ein Bildlauf durchgeführt wird, aktualisieren Sie die Ansicht der Vorschau.", "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Veraltet] Führt einen Bildlauf für die Markdown-Vorschau durch, um die aktuell ausgewählte Zeile im Editor anzuzeigen.", "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Diese Einstellung wurde durch \"markdown.preview.scrollPreviewWithEditor\" ersetzt und ist nicht mehr wirksam.", diff --git a/i18n/deu/extensions/php-language-features/package.i18n.json b/i18n/deu/extensions/php-language-features/package.i18n.json index 3b7f987e66a..7124411caa7 100644 --- a/i18n/deu/extensions/php-language-features/package.i18n.json +++ b/i18n/deu/extensions/php-language-features/package.i18n.json @@ -13,5 +13,6 @@ "configuration.title": "PHP", "commands.categroy.php": "PHP", "command.untrustValidationExecutable": "Ausführbare Datei für PHP-Überprüfung nicht zulassen (als Arbeitsbereicheinstellung definiert)", - "displayName": "PHP-Sprachfeatures" + "displayName": "PHP-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für PHP-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/php/package.i18n.json b/i18n/deu/extensions/php/package.i18n.json index ef10b47a8b3..25f008aacf8 100644 --- a/i18n/deu/extensions/php/package.i18n.json +++ b/i18n/deu/extensions/php/package.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP-Sprachfeatures" + "description": "Bietet Syntaxhervorhebung und Klammernpaare für PHP-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/commands.i18n.json b/i18n/deu/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..cdebacc88db --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Öffnen Sie einen Ordner in VS Code, um ein TypeScript- oder JavaScript-Projekt zu verwenden.", + "typescript.projectConfigUnsupportedFile": "TypeScript- oder JavaScript-Projekt konnte nicht ermittelt werden. Nicht unterstützter Dateityp.", + "typescript.projectConfigCouldNotGetInfo": "TypeScript- oder JavaScript-Projekt konnte nicht ermittelt werden.", + "typescript.noTypeScriptProjectConfig": "Datei ist nicht Teil eines TypeScript-Projekt. Klicken Sie [hier]({0}), um mehr zu erfahren.", + "typescript.noJavaScriptProjectConfig": "Datei ist nicht Teil eines JavaScript-Projekt. Klicken Sie [hier]({0}), um mehr zu erfahren.", + "typescript.configureTsconfigQuickPick": "tsconfig.json konfigurieren", + "typescript.configureJsconfigQuickPick": "jsconfig.json konfigurieren" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..3d20846a443 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Anzuwendende Codeaktion auswählen", + "acquiringTypingsLabel": "Eingaben werden abgerufen...", + "acquiringTypingsDetail": "Eingabedefinitionen für IntelliSense werden abgerufen." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..ab837c60f37 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Aktiviert die Semantiküberprüfung in einer JavaScript-Datei. Muss sich oben in einer Datei befinden.", + "ts-nocheck": "Deaktiviert die Semantiküberprüfung in einer JavaScript-Datei. Muss sich oben in einer Datei befinden.", + "ts-ignore": "Unterdrückt @ts-check-Fehler in der nächsten Zeile einer Datei." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..2dd478f8590 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 Implementierung", + "manyImplementationLabel": "{0}-Implementierungen", + "implementationsErrorLabel": "Implementierungen konnten nicht bestimmt werden" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..e5e06fc03c8 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc-Kommentar" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..9df063abf44 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Importe organisieren" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..e0e88f5e50e --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Behebe alle in Datei)" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..73d84e6a380 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 Verweis", + "manyReferenceLabel": "{0} Verweise", + "referenceErrorLabel": "Verweise konnten nicht bestimmt werden" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..8d79b969dfa --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "Erstellen – {0}", + "buildAndWatchTscLabel": "Überwachen – {0}" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/deu/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..eb955bb9c06 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "Der Pfad \"{0}\" zeigt nicht auf eine gültige tsserver-Installation. Fallback auf gebündelte TypeScript-Version wird durchgeführt.", + "serverCouldNotBeStarted": "Der TypeScript-Sprachserver konnte nicht gestartet werden. Fehlermeldung: {0}", + "typescript.openTsServerLog.notSupported": "Die TS Server-Protokollierung erfordert TS 2.2.2+.", + "typescript.openTsServerLog.loggingNotEnabled": "Die TS Server-Protokollierung ist deaktiviert. Legen Sie \"typescript.tsserver.log\" fest, und laden Sie VS Code erneut, um die Protokollierung zu aktivieren.", + "typescript.openTsServerLog.enableAndReloadOption": "Aktiviert die Protokollierung und startet den TS-Server neu.", + "typescript.openTsServerLog.noLogFile": "TS Server hat noch nicht mit der Protokollierung begonnen.", + "openTsServerLog.openFileFailedFailed": "Die TS-Server-Protokolldatei konnte nicht geöffnet werden.", + "serverDiedAfterStart": "Der TypeScript-Sprachdienst wurde direkt nach seinem Start fünfmal beendet. Der Dienst wird nicht neu gestartet.", + "serverDiedReportIssue": "Problem melden", + "serverDied": "Der TypeScript-Sprachdienst wurde während der letzten fünf Minuten fünfmal unerwartet beendet." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..e381d6d3b73 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "Ungültige Version" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..b36d5e0aec6 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Um die JavaScript/TypeScript-Sprachfunktionen für das gesamte Projekt zu aktivieren, schließen Sie Ordner mit vielen Dateien aus. Beispiel: {0}", + "hintExclude.generic": "Um JavaScript/TypeScript-Sprachfunktionen für das gesamte Projekt zu aktivieren, schließen Sie große Ordner mit Quelldateien aus, an denen Sie nicht arbeiten.", + "large.label": "Auszuschließende Elemente konfigurieren", + "hintExclude.tooltip": "Um JavaScript/TypeScript-Sprachfunktionen für das gesamte Projekt zu aktivieren, schließen Sie große Ordner mit Quelldateien aus, an denen Sie nicht arbeiten." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..797c586cb35 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Daten werden zum Optimieren von TypeScript IntelliSense abgerufen", + "typesInstallerInitializationFailed.title": "Typisierungsdateien für JavaScript-Sprachfunktionen konnten nicht installiert werden. Stellen Sie sicher, das NPM installiert ist, oder konfigurieren Sie \"typescript.npm\" in Ihren Benutzereinstellungen. Klicken Sie [hier]({0}), um mehr zu erfahren.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Nicht mehr anzeigen" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..9414ff7601e --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Version von VS Code verwenden", + "useWorkspaceVersionOption": "Arbeitsbereichsversion verwenden", + "learnMore": "Weitere Informationen", + "selectTsVersion": "Wählen Sie die für die JavaScript- und TypeScript-Sprachfunktionen verwendete TypeScript-Version aus." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/deu/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..4d94a01dc62 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Die TypeScript-Version konnte unter diesem Pfad nicht geladen werden.", + "noBundledServerFound": "Der tsserver von VS Code wurde von einer anderen Anwendung wie etwa einem fehlerhaften Tool zur Viruserkennung gelöscht. Führen Sie eine Neuinstallation von VS Code durch." +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-language-features/package.i18n.json b/i18n/deu/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..8aa361d46a1 --- /dev/null +++ b/i18n/deu/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,58 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript- und JavaScript-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für JavaScript und TypeScript.", + "typescript.reloadProjects.title": "Projekt erneut laden", + "javascript.reloadProjects.title": "Projekt erneut laden", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Vervollständigen Sie Funktionen mit deren Parametersignatur.", + "typescript.tsdk.desc": "Gibt den Ordnerpfad mit den zu verwendenden tsserver- und lib*.d.ts-Dateien an.", + "typescript.disableAutomaticTypeAcquisition": "Deaktiviert die automatische Typerfassung. Erfordert TypeScript >= 2.0.6.", + "typescript.tsserver.log": "Aktiviert die Protokollierung des TS-Servers in eine Datei. Mithilfe der Protokolldatei lassen sich Probleme beim TS-Server diagnostizieren. Die Protokolldatei kann Dateipfade, Quellcode und weitere potenziell sensible Informationen aus Ihrem Projekt enthalten.", + "typescript.tsserver.trace": "Aktiviert die Ablaufverfolgung von an den TS-Server gesendeten Nachrichten. Mithilfe der Ablaufverfolgung lassen sich Probleme beim TS-Server diagnostizieren. Die Ablaufverfolgung kann Dateipfade, Quellcode und weitere potenziell sensible Informationen aus Ihrem Projekt enthalten.", + "typescript.validate.enable": "TypeScript-Überprüfung aktivieren/deaktivieren.", + "typescript.format.enable": "Standardmäßigen TypeScript-Formatierer aktivieren/deaktivieren.", + "javascript.format.enable": "Standardmäßigen JavaScript-Formatierer aktivieren/deaktivieren.", + "format.insertSpaceAfterCommaDelimiter": "Definiert die Verarbeitung von Leerzeichen nach einem Kommatrennzeichen.", + "format.insertSpaceAfterConstructor": "Definiert die Verarbeitung von Leerzeichen nach dem Konstruktor-Schlüsselwort. Erfordert TypeScript 2.3.0 oder höher.", + "format.insertSpaceAfterSemicolonInForStatements": " Definiert die Verarbeitung von Leerzeichen nach einem Semikolon in einer for-Anweisung.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Definiert die Verarbeitung von Leerzeichen nach einem binären Operator.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Definiert die Verarbeitung von Leerzeichen nach Schlüsselwörtern in einer Flusssteuerungsanweisung.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Definiert die Verarbeitung von Leerzeichen nach einem Funktionsschlüsselwort für anonyme Funktionen.", + "format.insertSpaceBeforeFunctionParenthesis": "Definiert die Verarbeitung von Leerzeichen vor Funktionsargumentklammern. Erfordert TypeScript >= 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Definiert die Verarbeitung von Leerzeichen nach öffnenden und vor schließenden geschweiften Klammern für Vorlagenzeichenfolgen. Erfordert TypeScript >= 2.0.6.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Definiert die Verarbeitung von Leerzeichen nach öffnenden und vor schließenden geschweiften Klammern für JSX-Ausdrücke. Erfordert TypeScript >= 2.0.6.", + "format.insertSpaceAfterTypeAssertion": "Definiert die Verarbeitung von Leerzeichen nach Typassertionen in TypeScript. Erfordert TypeScript >= 2.4.", + "format.placeOpenBraceOnNewLineForFunctions": "Definiert, ob eine öffnende geschweifte Klammer für Funktionen in eine neue Zeile eingefügt wird.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Definiert, ob eine öffnende geschweifte Klammer für Kontrollblöcke in eine neue Zeile eingefügt wird.", + "javascript.validate.enable": "JavaScript-Überprüfung aktivieren/deaktivieren.", + "typescript.goToProjectConfig.title": "Zur Projektkonfiguration wechseln", + "javascript.goToProjectConfig.title": "Zur Projektkonfiguration wechseln", + "javascript.referencesCodeLens.enabled": "Aktiviert oder deaktiviert CodeLens-Verweise in JavaScript Dateien. Erfordert TypeScript 2.0.6 oder höher.", + "typescript.referencesCodeLens.enabled": "Aktiviert oder deaktiviert CodeLens-Verweise in TypeScript Dateien. Erfordert TypeScript 2.0.6 oder höher.", + "typescript.implementationsCodeLens.enabled": "Aktiviert oder deaktiviert CodeLens-Implementierungen. Erfordert TypeScript 2.2.0 oder höher.", + "typescript.openTsServerLog.title": "TS Server-Protokolldatei öffnen", + "typescript.restartTsServer": "TS Server neu starten", + "typescript.selectTypeScriptVersion.title": "TypeScript-Version wählen", + "typescript.reportStyleChecksAsWarnings": "Formatvorlagenprüfungen als Warnungen melden", + "jsDocCompletion.enabled": "Automatische JSDoc-Kommentare aktivieren/deaktivieren", + "javascript.implicitProjectConfig.checkJs": "Aktiviert/deaktiviert die Semantikprüfung bei JavaScript-Dateien. Diese Einstellung wird von vorhandenen \"jsconfig.json\"- oder \"tsconfig.json\"-Dateien außer Kraft gesetzt. Erfordert TypeScript 2.3.1 oder höher.", + "typescript.npm": "Gibt den Pfad zur ausführbaren NPM-Datei an, die für die automatische Typerfassung verwendet wird. Hierfür ist TypeScript 2.3.4 oder höher erforderlich.", + "typescript.check.npmIsInstalled": "Überprüfen Sie, ob NPM für die automatische Typerfassung installiert ist.", + "javascript.nameSuggestions": "Das Einbeziehen eindeutiger Namen von der Datei in der JavaScript-Vorschlagsliste aktivieren/deaktivieren.", + "typescript.tsc.autoDetect": "Steuert die automatische Erkennung von TSC-Aufgaben. \"Aus\" deaktiviert diese Funktion. \"Build\" erstellt nur Kompilierungsaufgaben mit einer Ausführung. \"Überwachen\" erstellt nur Kompilierungs- und Überwachungsaufgaben. \"Ein\" erstellt sowohl Build- als auch Überwachungsaufgaben. Der Standardwert ist \"Ein\".", + "typescript.problemMatchers.tsc.label": "TypeScript-Probleme", + "typescript.problemMatchers.tscWatch.label": "TypeScript-Probleme (Überwachungsmodus)", + "typescript.quickSuggestionsForPaths": "Aktiviert oder deaktiviert Schnellvorschläge, wenn Sie einen Importpfad ausschreiben.", + "typescript.locale": "Legt das zum Melden von TypeScript-Fehlern verwendete Gebietsschema fest. Erfordert TypeScript 2.6.0 oder höher. Der Standardwert \"null\" verwendet für TypeScript-Fehler das Gebietsschema von VS Code.", + "javascript.implicitProjectConfig.experimentalDecorators": "Aktiviert oder deaktiviert \"experimentalDecorators\" für JavaScript-Dateien, die nicht Teil eines Projekts sind. Vorhandene jsconfig.json- oder tsconfig.json-Dateien setzen diese Einstellung außer Kraft. Erfordert TypeScript 2.3.1 oder höher.", + "typescript.autoImportSuggestions.enabled": "Aktiviert oder deaktiviert Vorschläge für den automatischen Import. Erfordert TypeScript 2.6.1 oder höher.", + "typescript.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert die syntaxabhängigen Faltungsmarkierungen.", + "taskDefinition.tsconfig.description": "Die \"tsconfig\"-Datei, die den TS-Build definiert." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/base/node/processes.i18n.json b/i18n/deu/src/vs/base/node/processes.i18n.json index 04fbcbe033d..35229bd6699 100644 --- a/i18n/deu/src/vs/base/node/processes.i18n.json +++ b/i18n/deu/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Ein Shell-Befehl kann nicht auf einem UNC-Laufwerk ausgeführt werden." + ] } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 4ae1e88e8f2..3d0b8a3e84d 100644 --- a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -11,7 +11,6 @@ "similarIssues": "Ähnliche Probleme", "open": "Öffnen", "closed": "Geschlossen", - "noResults": "Es wurden keine Ergebnisse gefunden.", "settingsSearchIssue": "Fehler in Einstellungssuche ", "bugReporter": "Fehlerbericht", "featureRequest": "Featureanforderung", diff --git a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index f74316af1b5..5318cd985e4 100644 --- a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "Füllen Sie das Formular auf Englisch aus.", "issueTypeLabel": "Dies ist", + "vscode": "Visual Studio Code", + "disableExtensions": "Alle Erweiterungen werden deaktiviert, und das Fenster wird neu geladen", + "chooseExtension": "Erweiterung", "issueTitleLabel": "Titel", "issueTitleRequired": "Geben Sie einen Titel ein.", "titleLengthValidation": "Der Titel ist zu lang.", @@ -18,13 +21,6 @@ "extensions": "Eigene Erweiterungen", "searchedExtensions": "Gesuchte Erweiterungen", "settingsSearchDetails": "Details der Einstellungssuche", - "tryDisablingExtensions": "Kann das Problem reproduziert werden, wenn Erweiterungen deaktiviert sind?", - "yes": "Ja", - "no": "Nein", - "disableExtensionsLabelText": "Versuchen Sie, das Problem nach {0} zu reproduzieren.", - "disableExtensions": "Alle Erweiterungen werden deaktiviert, und das Fenster wird neu geladen", - "showRunningExtensionsLabelText": "Wenn Sie ein Erweiterungsproblem vermuten, melden Sie dieses Problem durch {0}.", - "showRunningExtensions": "Alle ausgeführten Erweiterungen anzeigen", "details": "Geben Sie Details ein.", "loadingData": "Daten werden geladen …" } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/deu/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..aa725d508b2 --- /dev/null +++ b/i18n/deu/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Name" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/deu/src/vs/editor/browser/widget/diffReview.i18n.json index 16555984126..78765c76363 100644 --- a/i18n/deu/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/deu/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Schließen", - "header": "Unterschied von {0} zu {1}: Original {2}, {3} Zeilen, Geändert {4}, {5} Zeilen", "blankLine": "leer", "equalLine": "Original {0}, geändert {1}: {2}", "insertLine": "+ geändert {0}: {1}", diff --git a/i18n/deu/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/deu/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json index cbc53f2c2a6..fc7ba3f58b4 100644 --- a/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/deu/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,6 +28,9 @@ "warningBorder": "Rahmenfarbe von Warnungsunterstreichungen im Editor.", "infoForeground": "Vordergrundfarbe von Informationsunterstreichungen im Editor.", "infoBorder": "Rahmenfarbe von Informationsunterstreichungen im Editor.", + "hintForeground": "Vordergrundfarbe der Hinweisunterstreichungen im Editor.", + "hintBorder": "Rahmenfarbe der Hinweisunterstreichungen im Editor.", + "overviewRulerRangeHighlight": "Übersichtslineal-Markierungsfarbe für Bereichshervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.", "overviewRuleError": "Übersichtslineal-Markierungsfarbe für Fehler.", "overviewRuleWarning": "Übersichtslineal-Markierungsfarbe für Warnungen.", "overviewRuleInfo": "Übersichtslineal-Markierungsfarbe für Informationen." diff --git a/i18n/deu/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/deu/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..cd90a9fdc29 --- /dev/null +++ b/i18n/deu/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Korrekturen anzeigen ({0})", + "quickFix": "Korrekturen anzeigen", + "organizeImports.label": "Importe organisieren" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/deu/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 35229bd6699..bc7ae23d394 100644 --- a/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/deu/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -5,5 +5,43 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "Sunday": "Sonntag", + "Monday": "Montag", + "Tuesday": "Dienstag", + "Wednesday": "Mittwoch", + "Thursday": "Donnerstag", + "Friday": "Freitag", + "Saturday": "Samstag", + "SundayShort": "So", + "MondayShort": "Mo", + "TuesdayShort": "Di", + "WednesdayShort": "Mi", + "ThursdayShort": "Do", + "FridayShort": "Fr", + "SaturdayShort": "Sa", + "January": "Januar", + "February": "Februar", + "March": "März", + "April": "April", + "May": "Mai", + "June": "Juni", + "July": "Juli", + "August": "August", + "September": "September", + "October": "Oktober", + "November": "November", + "December": "Dezember", + "JanuaryShort": "Jan", + "FebruaryShort": "Feb", + "MarchShort": "Mar", + "AprilShort": "Apr", + "MayShort": "Mai", + "JuneShort": "Jun", + "JulyShort": "Jul", + "AugustShort": "Aug", + "SeptemberShort": "Sep", + "OctoberShort": "Okt", + "NovemberShort": "Nov", + "DecemberShort": "Dez" } \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index f72633a93df..d79e05a3c24 100644 --- a/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/deu/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "Hintergrundfarbe eines Symbols bei Schreibzugriff, beispielsweise dem Schreiben einer Variable. Die Farbe muss durchsichtig sein, um nicht dahinterliegende Dekorationen zu verbergen.", "wordHighlightBorder": "Randfarbe eines Symbols beim Lesezugriff, wie etwa beim Lesen einer Variablen.", "wordHighlightStrongBorder": "Randfarbe eines Symbols beim Schreibzugriff, wie etwa beim Schreiben einer Variablen.", + "overviewRulerWordHighlightForeground": "Übersichtslineal-Markierungsfarbe für Symbolhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.", + "overviewRulerWordHighlightStrongForeground": "Übersichtslineal-Markierungsfarbe für Schreibzugriffs-Symbolhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.", "wordHighlight.next.label": "Gehe zur nächsten Symbolhervorhebungen", "wordHighlight.previous.label": "Gehe zur vorherigen Symbolhervorhebungen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/environment/node/argv.i18n.json b/i18n/deu/src/vs/platform/environment/node/argv.i18n.json index 8001da9cf01..e0ac23f5587 100644 --- a/i18n/deu/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/deu/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Startet mit aktiviertem Befehl \"Developer: Startup Performance\".", "prof-startup": "CPU-Profiler beim Start ausführen", "disableExtensions": "Deaktiviert alle installierten Extensions.", - "inspect-extensions": "Erlaubt Debugging und Profiling für Erweiterungen. Überprüfen Sie die Entwicklertools für die Verbindungs-URI.", - "inspect-brk-extensions": "Erlaubt Debugging und Profiling für Erweiterungen, wobei der Erweiterungs-Host nach dem Starten pausiert wird. Überprüfen Sie die Entwicklertools für die Verbindungs-URI.", "disableGPU": "Deaktiviert die GPU-Hardwarebeschleunigung.", "uploadLogs": "Lädt die Logs der aktuellen Sitzung an einem sicheren Endpunkt hoch.", "maxMemory": "Maximale Speichergröße für ein Fenster (in Mbyte).", diff --git a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 8eaf7a54f37..fe6e6c0c316 100644 --- a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -21,6 +21,8 @@ "quitCode": "Fehler bei der Installation der Erweiterung. Beenden und starten Sie VS Code vor der erneuten Installation neu.", "exitCode": "Fehler bei der Installation der Erweiterung. Beenden und starten Sie VS Code vor der erneuten Installation neu.", "uninstallDependeciesConfirmation": "Möchten Sie nur \"{0}\" oder auch die zugehörigen Abhängigkeiten deinstallieren?", + "uninstallOnly": "Nur Erweiterung", + "uninstallAll": "Alle deinstallieren", "uninstallConfirmation": "Möchten Sie \"{0}\" deinstallieren?", "ok": "OK", "singleDependentError": "Die Erweiterung \"{0}\" kann nicht deinstalliert werden. Die Erweiterung \"{1}\" hängt von dieser Erweiterung ab.", diff --git a/i18n/deu/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/deu/src/vs/platform/extensions/node/extensionValidator.i18n.json index 04eec7993f4..0ef3a16d232 100644 --- a/i18n/deu/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/deu/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Der engines.vscode-Wert {0} konnte nicht analysiert werden. Verwenden Sie z. B. ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x usw.", "versionSpecificity1": "Die in \"engines.vscode\" ({0}) angegebene Version ist nicht spezifisch genug. Definieren Sie für VS Code-Versionen vor Version 1.0.0 bitte mindestens die gewünschte Haupt- und Nebenversion, z. B. ^0.10.0, 0.10.x, 0.11.0 usw.", "versionSpecificity2": "Die in \"engines.vscode\" ({0}) angegebene Version ist nicht spezifisch genug. Definieren Sie für VS Code-Versionen nach Version 1.0.0 bitte mindestens die gewünschte Hauptversion, z. B. ^1.10.0, 1.10.x, 1.x.x, 2.x.x usw.", "versionMismatch": "Die Extension ist nicht mit dem Code {0} kompatibel. Die Extension erfordert {1}." diff --git a/i18n/deu/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/deu/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 108b0df58d7..2a32b38a4e3 100644 --- a/i18n/deu/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/deu/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "Ihre {0}-Installation ist offenbar beschädigt. Führen Sie eine Neuinstallation durch.", "integrity.moreInformation": "Weitere Informationen", - "integrity.dontShowAgain": "Nicht mehr anzeigen", - "integrity.prompt": "Ihre {0}-Installation ist offenbar beschädigt. Führen Sie eine Neuinstallation durch." + "integrity.dontShowAgain": "Nicht mehr anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json index 2e98d7310d1..d703cc6af77 100644 --- a/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/deu/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "Rahmenfarbe für Kopfzeilen und die Aufteilung in Inline-Mergingkonflikten.", "overviewRulerCurrentContentForeground": "Aktueller Übersichtslineal-Vordergrund für Inline-Mergingkonflikte.", "overviewRulerIncomingContentForeground": "Eingehender Übersichtslineal-Vordergrund für Inline-Mergingkonflikte. ", - "overviewRulerCommonContentForeground": "Hintergrund des Übersichtslineals des gemeinsamen übergeordneten Elements bei Inlinezusammenführungskonflikten." + "overviewRulerCommonContentForeground": "Hintergrund des Übersichtslineals des gemeinsamen übergeordneten Elements bei Inlinezusammenführungskonflikten.", + "overviewRulerFindMatchForeground": "Übersichtslineal-Markierungsfarbe für Suchübereinstimmungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.", + "overviewRulerSelectionHighlightForeground": "Übersichtslineal-Markierungsfarbe für Auswahlhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/deu/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..729878b1595 --- /dev/null +++ b/i18n/deu/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "Die Eigenschaft \"{0}\" ist erforderlich. Sie muss vom Typ \"string\" sein.", + "showViewlet": "{0} anzeigen", + "view": "Anzeigen" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/deu/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index c3de36954de..10d819ab539 100644 --- a/i18n/deu/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/deu/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Trägt Ansichten zum Editor bei.", "views.explorer": "Explorer-Ansicht", "views.debug": "Debugansicht", - "locationId.invalid": "{0}\" ist kein gültiger Ansichtenspeicherort", "duplicateView1": "Mehrere Ansichten können nicht mit derselben ID \"{0}\" am Speicherort \"{1}\" registriert werden.", "duplicateView2": "Eine Ansicht mit der ID \"{0}\" ist am Speicherort \"{1}\" bereits registriert." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 4290f5cc693..1f1499c09e6 100644 --- a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Formatieren beim Speichern nach {0} ms abgebrochen", + "timeout.onWillSave": "Bei onWillSaveTextDocument-Ereignis nach 1750 ms abgebrochen", "saveParticipants": "Speichern von Teilnehmern wird ausgeführt …" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 0a2dcb8a2c9..35229bd6699 100644 --- a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "Webview-Editor" + ] } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json index 35229bd6699..a933ea1e428 100644 --- a/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json +++ b/i18n/deu/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "extensionSource": "{0} (Erweiterung)" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 4ee819d71fa..8355c93e305 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "Wenn Sie keine Sprachausgabe verwenden, ändern Sie die Einstellung \"editor.accessibilitySupport\" in \"Aus\".", "disableTabMode": "Barrierefreiheitsmodus deaktivieren", "gotoLine": "Gehe zu Zeile", - "indentation": "Einzug", "selectEncoding": "Codierung auswählen", "selectEOL": "Zeilenendesequenz auswählen", "selectLanguageMode": "Sprachmodus auswählen", diff --git a/i18n/deu/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 21a390445da..72f24a7c13e 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0} MB", "sizeGB": "{0} GB", "sizeTB": "{0} TB", - "largeImageError": "Die Dateigröße des Bilds ist zu groß (über 1 MB), um im Editor angezeigt zu werden.", "resourceOpenExternalButton": "Bild mit externem Programm öffnen?", - "nativeBinaryError": "Die Datei wird nicht im Editor angezeigt, weil sie binär oder sehr groß ist oder eine nicht unterstützte Textcodierung verwendet.", "zoom.action.fit.label": "Ganzes Bild", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index cabab414f2d..25fb0b63c30 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Keine neuen Benachrichtigungen", "notifications": "Benachrichtigungen", "notificationsToolbar": "Aktionen der Benachrichtigungszentrale", "notificationsList": "Benachrichtigungsliste" diff --git a/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..bcdf56e4849 --- /dev/null +++ b/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json index 21a380f1297..52379955308 100644 --- a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "Fenster", "window.openFilesInNewWindow.on": "Dateien werden in einem neuen Fenster geöffnet.", "window.openFilesInNewWindow.off": "Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet.", + "window.openFilesInNewWindow.defaultMac": "Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet, sofern sie nicht über das Dock oder den Finder geöffnet werden.", + "window.openFilesInNewWindow.default": "Dateien werden in einem neuen Fenster geöffnet, sofern sie nicht innerhalb der Anwendung ausgewählt werden (z. B. über das Dateimenü).", + "openFilesInNewWindowMac": "Steuert, ob Dateien in einem neuen Fenster geöffnet werden.\n- default: Die Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet, sofern sie nicht über das Dock oder den Finder geöffnet werden.\n- on: Die Dateien werden in einem neuen Fenster geöffnet.\n- off: Die Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet.\nIn einigen Fällen wird diese Einstellung unter Umständen ignoriert (z. B. bei der Befehlszeilenoption \"-new-window\" oder \"-reuse-window\").", + "openFilesInNewWindow": "Steuert, ob Dateien in einem neuen Fenster geöffnet werden.\n- default: Die Dateien werden in einem neuen Fenster geöffnet, sofern sie nicht innerhalb der Anwendung ausgewählt werden (z. B. über das Dateimenü).\n- on: Die Dateien werden in einem neuen Fenster geöffnet.\n- off: Die Dateien werden im Fenster mit dem geöffneten Dateiordner oder im letzten aktiven Fenster geöffnet.\nIn einigen Fällen wird diese Einstellung unter Umständen ignoriert (z. B. bei der Befehlszeilenoption \"-new-window\" oder \"-reuse-window\").", "window.openFoldersInNewWindow.on": "Ordner werden in einem neuen Fenster geöffnet.", "window.openFoldersInNewWindow.off": "Ordner ersetzen das letzte aktive Fenster.", "window.openFoldersInNewWindow.default": "Ordner werden in einem neuen Fenster geöffnet, sofern kein Ordner innerhalb der Anwendung ausgewählt wird (z. B. über das Dateimenü).", "openFoldersInNewWindow": "Steuert, ob Ordner in einem neuen Fenster geöffnet werden oder das letzte aktive Fenster ersetzen.\n- default: Die Ordner werden in einem neuen Fenster geöffnet, sofern kein Ordner innerhalb der Anwendung ausgewählt wird (z. B. über das Dateimenü).\n- on: Die Ordner werden in einem neuen Fenster geöffnet.\n- off: Die Ordner ersetzen das letzte aktive Fenster.\nIn einigen Fällen wird diese Einstellung unter Umständen ignoriert (z. B. bei der Befehlszeilenoption \"-new-window\" oder \"-reuse-window\").", + "window.openWithoutArgumentsInNewWindow.on": "Neues leeres Fenster öffnen", + "window.openWithoutArgumentsInNewWindow.off": "Fokus auf die zuletzt aktive ausgeführte Instanz", + "openWithoutArgumentsInNewWindow": "Steuert, ob ein neues leeres Fenster geöffnet wird, wenn eine zweite Instanz ohne Argumente gestartet wird oder wenn für die zuletzt ausgeführt Instanz ein Fokus erforderlich ist.\n- on: Öffnet ein neues leeres Fenster.\n- off: Die zuletzt aktive ausgeführte Instanz erhält den Fokus.\nIn einigen Fällen wird diese Einstellung unter Umständen ignoriert (z. B. bei der Befehlszeilenoption \"-new-window\" oder \"-reuse-window\").", "window.reopenFolders.all": "Alle Fenster erneut öffnen.", "window.reopenFolders.folders": "Alle Ordner erneut öffnen. Leere Arbeitsbereiche werden nicht wiederhergestellt.", "window.reopenFolders.one": "Das letzte aktive Fenster erneut öffnen. ", @@ -56,6 +63,7 @@ "restoreWindows": "Steuert, wie Fenster nach einem Neustart erneut geöffnet werden. Wählen Sie \"none\", um immer mit einem leeren Arbeitsbereich zu beginnen, \"one\", um das zuletzt verwendete Fenster erneut zu öffnen, \"folders\", um alle Fenster, in denen Ordner geöffnet waren, erneut zu öffnen, oder \"all\", um alle Fenster der letzten Sitzung erneut zu öffnen.", "restoreFullscreen": "Steuert, ob ein Fenster im Vollbildmodus wiederhergestellt wird, wenn es im Vollbildmodus beendet wurde.", "zoomLevel": "Passen Sie den Zoomfaktor des Fensters an. Die ursprüngliche Größe ist 0. Jede Inkrementierung nach oben (z. B. 1) oder unten (z. B. -1) stellt eine Vergrößerung bzw. Verkleinerung um 20 % dar. Sie können auch Dezimalwerte eingeben, um den Zoomfaktor genauer anzupassen.", + "title": "Steuert den Fenstertitel basierend auf dem aktiven Editor. Variablen werden abhängig vom Kontext ersetzt:\n${activeEditorShort}: der Dateiname (z. B. myFile.txt)\n${activeEditorMedium}: der Pfad der Datei, relativ zum Arbeitsbereichsordner (z. B. myFolder/myFile.txt)\n${activeEditorLong}: der vollständige Pfad der Datei (z. B. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: Name des Arbeitsbereichsordners, der die Datei enthält (z. B. myFolder) \n${folderPath}: Dateipfad des Arbeitsbereichsordners, der die Datei enthält (z. B. /Users/Development/myFolder)\n${rootName}: Name des Arbeitsbereichs (z. B. myFolder oder myWorkspace)\n${rootPath}: Dateipfad des Arbeitsbereichs (z. B. /Users/Development/myWorkspace)\n${appName}: z. B. VS Code\n${dirty}: ein Änderungsindikator, wenn der aktive Editor geändert wurde\n${separator}: ein bedingtes Trennzeichen (\" - \"), das nur angezeigt wird, wenn es zwischen Variablen mit Werten steht", "window.newWindowDimensions.default": "Öffnet neue Fenster in der Mitte des Bildschirms.", "window.newWindowDimensions.inherit": "Öffnet neue Fenster mit den gleichen Abmessungen wie das letzte aktive Fenster.", "window.newWindowDimensions.maximized": "Öffnet neue Fenster maximiert.", @@ -71,6 +79,7 @@ "autoDetectHighContrast": "Ist diese Option aktiviert, erfolgt automatisch ein Wechsel zu einem Design mit hohem Kontrast, wenn Windows ein Design mit hohem Kontrast verwendet, und zu einem dunklen Design, wenn Sie für Windows kein Design mit hohem Kontrast mehr verwenden.", "titleBarStyle": "Passt das Aussehen der Titelleiste des Fensters an. Zum Anwenden der Änderungen ist ein vollständiger Neustart erforderlich.", "window.nativeTabs": "Aktiviert MacOS Sierra-Fensterregisterkarten. Beachten Sie, dass zum Übernehmen von Änderungen ein vollständiger Neustart erforderlich ist und durch ggf. konfigurierte native Registerkarten ein benutzerdefinierter Titelleistenstil deaktiviert wird.", + "window.smoothScrollingWorkaround": "Aktivieren Sie diese Problemumgehung, wenn der Bildlauf nach der Wiederherstellung eines minimierten VS Code-Fensters nicht mehr reibungslos funktioniert. Dies ist eine Problemumgehung für ein Problem (https://github.com/Microsoft/vscode/issues/13612), bei dem der Bildlauf auf Geräten mit präzisen Trackpads wie etwa den Surface-Geräten von Microsoft verzögert ist. Wenn Sie diese Problemumgehung aktivieren, flackert die Anzeige nach dem Wiederherstellen eines Fensters aus dem minimierten Zustand unter Umständen ein wenig, ansonsten treten jedoch keine Probleme auf.", "zenModeConfigurationTitle": "Zen-Modus", "zenMode.fullScreen": "Steuert, ob die Workbench durch das Aktivieren des Zen-Modus in den Vollbildmodus wechselt.", "zenMode.centerLayout": "Steuert, ob das Layout durch Aktivieren des Zen-Modus ebenfalls zentriert wird.", diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 6a4e04d332e..ddd2d3abd5a 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Haltepunkt bearbeiten...", + "breakpoint": "Haltepunkt", "functionBreakpointsNotSupported": "Funktionshaltepunkte werden von diesem Debugtyp nicht unterstützt.", "functionBreakpointPlaceholder": "Funktion mit Haltepunkt", "functionBreakPointInputAriaLabel": "Geben Sie den Funktionshaltepunkt ein.", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Nicht überprüfter Haltepunkt", "functionBreakpointUnsupported": "Funktionshaltepunkte werden von diesem Debugtyp nicht unterstützt.", "breakpointDirtydHover": "Nicht überprüfter Haltepunkt. Die Datei wurde geändert. Bitte starten Sie die Debugsitzung neu.", + "logBreakpointUnsupported": "Protokollpunkte werden für diesen Debugtyp nicht unterstützt.", "conditionalBreakpointUnsupported": "Bedingte Haltepunkte werden für diesen Debugtyp nicht unterstützt.", "hitBreakpointUnsupported": "Bedingte Trefferhaltepunkte werden für diesen Debugtyp nicht unterstützt." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index d105d95f39c..7540c5e0ca9 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Debuggen: Haltepunkt umschalten", "conditionalBreakpointEditorAction": "Debuggen: Bedingten Haltepunkt hinzufügen...", + "logPointEditorAction": "Debuggen: Protokollpunkt hinzufügen …", "runToCursor": "Ausführen bis Cursor", "debugEvaluate": "Debuggen: Auswerten", "debugAddToWatch": "Debuggen: Zur Überwachung hinzufügen", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 93b4d514d00..d82e734ead9 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "Unterbrechen, wenn die Bedingung für die Trefferanzahl erfüllt ist. EINGABETASTE zum Akzeptieren, ESC-TASTE zum Abbrechen.", "breakpointWidgetExpressionPlaceholder": "Unterbrechen, wenn der Ausdruck als TRUE ausgewertet wird. EINGABETASTE zum Akzeptieren, ESC-TASTE zum Abbrechen.", - "breakpointWidgetHitCountAriaLabel": "Das Programm wird nur angehalten, wenn die Bedingung für die Trefferanzahl erfüllt ist. Drücken Sie zum Akzeptieren die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", - "breakpointWidgetAriaLabel": "Das Programm wird nur angehalten, wenn diese Bedingung erfüllt ist. Drücken Sie zum Akzeptieren die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", "expression": "Ausdruck", - "hitCount": "Trefferanzahl" + "hitCount": "Trefferanzahl", + "logMessage": "Protokollmeldung" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index d64bb26e64f..0ab881816f8 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Verwenden Sie eindeutige Konfigurationsnamen.", "app.launch.json.compound.folder": "Name des Ordners, in dem sich der Verbund befindet.", "app.launch.json.compounds.configurations": "Namen von Konfigurationen, die als Bestandteil dieses Verbunds gestartet werden.", - "debugNoType": "Der \"type\" des Debugadapters kann nicht ausgelassen werden und muss vom Typ \"string\" sein.", "selectDebug": "Umgebung auswählen", "DebugConfig.failed": "Die Datei \"launch.json\" kann nicht im Ordner \".vscode\" erstellt werden ({0}).", "workspace": "Arbeitsbereich", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index ddf54889d34..fa33a362fd9 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Haltepunkt bearbeiten...", - "disableBreakpoint": "Haltepunkt deaktivieren", - "enableBreakpoint": "Haltepunkt aktivieren", + "breakpoint": "Haltepunkt", "removeBreakpoints": "Haltepunkte entfernen", "removeBreakpointOnColumn": "Haltepunkt in Spalte {0} entfernen", "removeLineBreakpoint": "Zeilenhaltepunkt entfernen", @@ -21,6 +19,8 @@ "enableBreakpoints": "Haltepunkt in Spalte {0} aktivieren", "enableBreakpointOnLine": "Zeilenhaltepunkt aktivieren", "addBreakpoint": "Haltepunkt hinzufügen", - "conditionalBreakpoint": "Bedingten Haltepunkt hinzufügen...", + "addConditionalBreakpoint": "Bedingten Haltepunkt hinzufügen...", + "addLogPoint": "Protokollpunkt hinzufügen …", + "cancel": "Abbrechen", "addConfiguration": "Konfiguration hinzufügen..." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index e0c41c377e0..d6cc1170dbf 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,5 +28,7 @@ "preLaunchTaskExitCode": "Der preLaunchTask \"{0}\" wurde mit dem Exitcode {1} beendet.", "showErrors": "Fehler anzeigen", "noFolderWorkspaceDebugError": "Debuggen der aktiven Datei ist nicht möglich. Stellen Sie sicher, dass sie auf einem Datenträger gespeichert ist und dass Sie die Debugerweiterung für diesen Dateityp installiert haben.", - "cancel": "Abbrechen" + "cancel": "Abbrechen", + "DebugTaskNotFound": "Der Task \"{0}\" konnte nicht gefunden werden.", + "taskNotTracked": "Der Task \"{0}\" kann nicht nachverfolgt werden." } \ No newline at end of file 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 7c14cdd4ed3..153ffe94777 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Weitere Informationen", - "unableToLaunchDebugAdapter": "Der Debugadapter kann nicht aus {0} gestartet werden.", - "unableToLaunchDebugAdapterNoArgs": "Debugadapter kann nicht gestartet werden.", - "stoppingDebugAdapter": "{0}. Der Debugadapter wird beendet.", "debugAdapterCrash": "Der Debugadapterprozess wurde unerwartet beendet." } \ No newline at end of file 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 d9c6aec8ad3..9b039afb7e7 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "Die ausführbare Datei \"{0}\" des Debugadapters ist nicht vorhanden.", "debugAdapterCannotDetermineExecutable": "Die ausführbare Datei \"{0}\" des Debugadapters kann nicht bestimmt werden.", - "launch.config.comment1": "Verwendet IntelliSense zum Ermitteln möglicher Attribute.", - "launch.config.comment2": "Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.", - "launch.config.comment3": "Weitere Informationen finden Sie unter {0}", - "debugType": "Der Typ der Konfiguration.", - "debugTypeNotRecognised": "Dieser Debugging-Typ wurde nicht erkannt. Bitte installieren und aktivieren Sie die dazugehörige Debugging-Erweiterung.", - "node2NotSupported": "\"node2\" wird nicht mehr unterstützt, verwenden Sie stattdessen \"node\", und legen Sie das Attribut \"protocol\" auf \"inspector\" fest.", - "debugName": "Der Name der Konfiguration. Er wird im Dropdownmenü der Startkonfiguration angezeigt.", - "debugRequest": "Der Anforderungstyp der Konfiguration. Der Wert kann \"launch\" oder \"attach\" sein.", - "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.", - "debugPrelaunchTask": "Ein Task, der ausgeführt werden soll, bevor die Debugsitzung beginnt.", - "debugWindowsConfiguration": "Windows-spezifische Startkonfigurationsattribute.", - "debugOSXConfiguration": "OS X-spezifische Startkonfigurationsattribute.", - "debugLinuxConfiguration": "Linux-spezifische Startkonfigurationsattribute.", - "deprecatedVariables": "\"env.\", \"config.\" und \"command.\" sind veraltet, verwenden Sie stattdessen \"env:\", \"config:\" und \"command:\"." + "unableToLaunchDebugAdapter": "Der Debugadapter kann nicht aus {0} gestartet werden.", + "unableToLaunchDebugAdapterNoArgs": "Debugadapter kann nicht gestartet werden." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..1bdbec328ab --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Verwendet IntelliSense zum Ermitteln möglicher Attribute.", + "launch.config.comment2": "Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.", + "launch.config.comment3": "Weitere Informationen finden Sie unter {0}", + "debugType": "Der Typ der Konfiguration.", + "debugTypeNotRecognised": "Dieser Debugging-Typ wurde nicht erkannt. Bitte installieren und aktivieren Sie die dazugehörige Debugging-Erweiterung.", + "node2NotSupported": "\"node2\" wird nicht mehr unterstützt, verwenden Sie stattdessen \"node\", und legen Sie das Attribut \"protocol\" auf \"inspector\" fest.", + "debugName": "Der Name der Konfiguration. Er wird im Dropdownmenü der Startkonfiguration angezeigt.", + "debugRequest": "Der Anforderungstyp der Konfiguration. Der Wert kann \"launch\" oder \"attach\" sein.", + "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.", + "debugPrelaunchTask": "Ein Task, der ausgeführt werden soll, bevor die Debugsitzung beginnt.", + "debugPostDebugTask": "Ein Task, der ausgeführt werden soll, nachdem die Debugsitzung endet.", + "debugWindowsConfiguration": "Windows-spezifische Startkonfigurationsattribute.", + "debugOSXConfiguration": "OS X-spezifische Startkonfigurationsattribute.", + "debugLinuxConfiguration": "Linux-spezifische Startkonfigurationsattribute.", + "deprecatedVariables": "\"env.\", \"config.\" und \"command.\" sind veraltet, verwenden Sie stattdessen \"env:\", \"config:\" und \"command:\"." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..eb3d8920646 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code-Konsole", + "mac.terminal.script.failed": "Fehler bei Skript \"{0}\" mit Exitcode {1}.", + "mac.terminal.type.not.supported": "\"{0}\" wird nicht unterstützt.", + "press.any.key": "Drücken Sie eine beliebige Taste, um fortzufahren...", + "linux.term.failed": "Fehler bei \"{0}\" mit Exitcode {1}." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 7b308ecd6d4..a2f215a756f 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -60,6 +60,7 @@ "malicious": "Böswillig", "disabled": "Deaktiviert", "disabled globally": "Deaktiviert", + "disabled workspace": "Für diesen Arbeitsbereich deaktiviert", "disableAll": "Alle installierten Erweiterungen löschen", "disableAllWorkspace": "Alle installierten Erweiterungen für diesen Arbeitsbereich deaktivieren", "enableAll": "Alle Erweiterungen aktivieren", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 179eb06b234..6789227ba76 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -8,10 +8,12 @@ ], "name": "Erweiterungsname", "extension id": "Erweiterungsbezeichner", + "preview": "Vorschau", "builtin": "Integriert", "publisher": "Name des Herausgebers", "install count": "Installationsanzahl", "rating": "Bewertung", + "repository": "Repositorium", "license": "Lizenz", "details": "Details", "contributions": "Beiträge", @@ -34,15 +36,16 @@ "view location": "Wo", "localizations": "Lokalisierungen ({0})", "localizations language id": "Sprach-ID", - "localizations language name": "Sprachname", - "localizations localized language name": "Sprachname (lokalisiert)", "colorThemes": "Farbdesigns ({0})", "iconThemes": "Symboldesigns ({0})", "colors": "Farben ({0})", + "colorId": "ID", "defaultDark": "Standard, dunkel", "defaultLight": "Standard, hell", "defaultHC": "Standard, hoher Kontrast", "JSON Validation": "JSON-Validierung ({0})", + "fileMatch": "Dateiübereinstimmung", + "schema": "Schema", "commands": "Befehle ({0})", "command name": "Name", "keyboard shortcuts": "Tastenkombinationen", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 161dda932e8..ad43edf49b9 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Diese Erweiterung wird von Benutzern des aktuellen Arbeitsbereichs empfohlen.", "reallyRecommended2": "Für diesen Dateityp wird die Erweiterung \"{0}\" empfohlen.", "reallyRecommendedExtensionPack": "Für diesen Dateityp wird das Erweiterungspaket \"{0}\" empfohlen.", - "showRecommendations": "Empfehlungen anzeigen", "install": "Installieren", + "showRecommendations": "Empfehlungen anzeigen", "showLanguageExtensions": "Der Marketplace enthält Erweiterungen, die bei \".{0}\"-Dateien behilflich sind.", "workspaceRecommended": "Für diesen Arbeitsbereich sind Erweiterungsempfehlungen verfügbar.", "installAll": "Alle installieren", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index e3e245a637c..b0cd80e83a4 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Deaktivere Tastenzuordnungen ({0}) um Konfilkte mit anderen zu vermeiden?", "yes": "Ja", - "no": "Nein", - "betterMergeDisabled": "Die \"Better Merge\" Erweiterung ist jetzt integriert, die alte Erweiterung wurde deaktiviert und kann deinstalliert werden.", - "uninstall": "Deinstallieren" + "no": "Nein" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index a3725fa64c5..7cca8764763 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "Empfohlen", "otherRecommendedExtensions": "Weitere Empfehlungen", "workspaceRecommendedExtensions": "Arbeitsbereich-Empfehlungen", + "builtInExtensions": "Features", + "builtInThemesExtensions": "Designs", "searchExtensions": "Nach Erweiterungen im Marketplace suchen", "sort by installs": "Sortieren nach: Installationsanzahl", "sort by rating": "Sortieren nach: Bewertung", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 4ba0d0b4fea..2736ae43b6c 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,17 @@ "confirmMoveTrashMessageMultiple": "Möchten Sie die folgenden {0} Dateien löschen?", "confirmMoveTrashMessageFolder": "Möchten Sie \"{0}\" samt Inhalt wirklich löschen?", "confirmMoveTrashMessageFile": "Möchten Sie \"{0}\" wirklich löschen?", + "undoBin": "Die Wiederherstellung kann aus dem Papierkorb erfolgen.", + "undoTrash": "Die Wiederherstellung kann aus dem Papierkorb erfolgen.", "doNotAskAgain": "Nicht erneut fragen", "confirmDeleteMessageMultiple": "Möchten Sie die folgenden {0} Dateien endgültig löschen?", "confirmDeleteMessageFolder": "Möchten Sie \"{0}\" samt Inhalt wirklich endgültig löschen?", "confirmDeleteMessageFile": "Möchten Sie \"{0}\" wirklich endgültig löschen?", "irreversible": "Diese Aktion kann nicht rückgängig gemacht werden.", - "importFiles": "Dateien importieren", + "binFailed": "Fehler beim Löschen über den Papierkorb. Möchten Sie den Löschvorgang stattdessen dauerhaft ausführen?", + "trashFailed": "Fehler beim Löschen über den Papierkorb. Möchten Sie den Löschvorgang stattdessen dauerhaft ausführen?", + "deletePermanentlyButtonLabel": "En&&dgültig löschen", + "retryButtonLabel": "Wiede&&rholen", "confirmOverwrite": "Im Zielordner ist bereits eine Datei oder ein Ordner mit dem gleichen Namen vorhanden. Möchten Sie sie bzw. ihn ersetzen?", "replaceButtonLabel": "&&Ersetzen", "fileIsAncestor": "Die einzufügende Datei ist ein Vorgänger des Zielordners", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 3a121e07e4e..8a4578792a4 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "Der Standardsprachmodus, der neuen Dateien zugewiesen wird.", "editorConfigurationTitle": "Editor", "formatOnSave": "Hiermit wird eine Datei beim Speichern formatiert. Es muss ein Formatierer vorhanden sein, die Datei darf nicht automatisch gespeichert werden, und der Editor darf nicht geschlossen werden.", + "formatOnSaveTimeout": "Zeitüberschreitung beim Formatieren während des Speicherns. Legt eine Zeitbegrenzung in Millisekunden für formatOnSave-Befehle fest. Befehle, die länger dauern als die festgelegte Zeitüberschreitung, werden abgebrochen. ", "explorerConfigurationTitle": "Datei-Explorer", "openEditorsVisible": "Die Anzahl der Editoren, die im Bereich \"Geöffnete Editoren\" angezeigt werden.", "autoReveal": "Steuert, ob der Explorer Dateien beim Öffnen automatisch anzeigen und auswählen soll.", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 10464e3a656..93c8167356a 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Geben Sie den Dateinamen ein. Drücken Sie zur Bestätigung die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", - "constructedPath": "{0} in **{1}** erstellen", "filesExplorerViewerAriaLabel": "{0}, Datei-Explorer", "dropFolders": "Möchten Sie die Ordner zum Arbeitsbereich hinzufügen?", "dropFolder": "Möchten Sie den Ordner zum Arbeitsbereich hinzufügen?", "addFolders": "&&Ordner hinzufügen", "addFolder": "&&Ordner hinzufügen", + "confirmRootsMove": "Möchten Sie die Reihenfolge mehrerer Stammordner in Ihrem Arbeitsbereich ändern?", "confirmMultiMove": "Möchten Sie die folgenden {0} Dateien verschieben?", + "confirmRootMove": "Möchten Sie die Reihenfolge des Stammordners \"{0}\" in Ihrem Arbeitsbereich ändern?", "confirmMove": "Möchten Sie \"{0}\" wirklich verschieben?", "doNotAskAgain": "Nicht erneut fragen", "moveButtonLabel": "&&Verschieben", diff --git a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index b1ad2f843d9..6f978d7eda1 100644 --- a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Möchten Sie die Sprache der Benutzeroberfläche von VS Code in {0} ändern und einen Neustart durchführen?", "yes": "Ja", "no": "Nein", - "doNotAskAgain": "Nicht erneut fragen", + "neverAgain": "Nicht mehr anzeigen", "JsonSchema.locale": "Die zu verwendende Sprache der Benutzeroberfläche.", "vscode.extension.contributes.localizations": "Trägt Lokalisierungen zum Editor bei", "vscode.extension.contributes.localizations.languageId": "ID der Sprache, in die Anzeigezeichenfolgen übersetzt werden.", diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 3926e145e99..68d40f09248 100644 --- a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Insgesamt {0} Probleme", - "filteredProblems": "Zeigt {0} von {1} Problemen an" + "totalProblems": "Insgesamt {0} Probleme" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json index 58d6f84f140..8a10d218183 100644 --- a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -7,5 +7,7 @@ "Do not edit this file. It is machine generated." ], "label": "Probleme", + "tooltip.1": "1 Problem in dieser Datei", + "tooltip.N": "{0} Probleme in dieser Datei", "markers.showOnFile": "Fehler & Warnungen auf Dateien und Ordnern anzeigen." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 6b3a52e72b9..1dd4edae3e5 100644 --- a/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Probleme", "markers.panel.aria.label.problems.tree": "Probleme nach Dateien gruppiert", "markers.panel.no.problems.build": "Es wurden bisher keine Probleme im Arbeitsbereich erkannt.", - "markers.panel.no.problems.filters": "Es wurden keine Ergebnisse mit den angegebenen Filterkriterien gefunden.", "markers.panel.action.filter": "Probleme filtern", - "markers.panel.filter.placeholder": "Nach Typ oder Text filtern", + "markers.panel.filter.ariaLabel": "Probleme filtern", "markers.panel.filter.errors": "Fehler", "markers.panel.filter.warnings": "Warnungen", "markers.panel.filter.infos": "Informationen", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "{0} Unbekannte", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} mit {1} Problemen", + "problems.tree.aria.label.marker.relatedInformation": "Dieses Problem verweist auf {0} Speicherorte.", + "problems.tree.aria.label.error.marker": "Von {0} generierter Fehler: {1} in Zeile {2} bei Zeichen {3}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Fehler: {0} in Zeile {1} bei Zeichen {2}.{3}", + "problems.tree.aria.label.warning.marker": "Von {0} generierte Warnung: {1} in Zeile {2} bei Zeichen {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Warnung: {0} in Zeile {1} bei Zeichen {2}.{3}", + "problems.tree.aria.label.info.marker": "Von {0} generierte Informationen: {1} in Zeile {2} bei Zeichen {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Informationen: {0} in Zeile {1} bei Zeichen {2}.{3}", + "problems.tree.aria.label.marker": "Von {0} generiertes Problem: {1} in Zeile {2} bei Zeichen {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Problem: {0} in Zeile {1} bei Zeichen {2}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{0} in Zeile {1} bei Zeichen {2} in {3}", "errors.warnings.show.label": "Fehler und Warnungen anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/deu/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 8a331f71f6e..d5aa2275e15 100644 --- a/i18n/deu/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Ausgabe umschalten", "clearOutput": "Ausgabe löschen", "toggleOutputScrollLock": "Ausgabe-Bildlaufsperre umschalten", - "switchToOutput.label": "Zur Ausgabe wechseln" + "switchToOutput.label": "Zur Ausgabe wechseln", + "openInLogViewer": "Protokolldatei öffnen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index 88ed08aa1d5..900a7f7ac3b 100644 --- a/i18n/deu/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Ausgabe", "logViewer": "Protokollanzeige", "viewCategory": "Anzeigen", - "clearOutput.label": "Ausgabe löschen" + "clearOutput.label": "Ausgabe löschen", + "openActiveLogOutputFile": "Ansicht: Aktive Protokollausgabedatei öffnen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index d9089d4fc04..737a3d57cf8 100644 --- a/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Tastenkombinationen", + "showDefaultKeybindings": "Standard-Tastaturbelegungen anzeigen", + "showUserKeybindings": "Benutzer-Tastaturbelegungen anzeigen", "SearchKeybindings.AriaLabel": "Tastenzuordnungen suchen", "SearchKeybindings.Placeholder": "Tastenzuordnungen suchen", "sortByPrecedene": "Nach Priorität sortieren", diff --git a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index c30d63e57e9..43033cd08a7 100644 --- a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Raw-Standardeinstellungen öffnen", + "openSettings": "Einstellungen öffnen", "openGlobalSettings": "Benutzereinstellungen öffnen", "openGlobalKeybindings": "Tastaturkurzbefehle öffnen", "openGlobalKeybindingsFile": "Datei mit Tastaturkurzbefehlen öffnen", diff --git a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 6baba95d0bf..1fe4a79f5f0 100644 --- a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Standardeinstellungen", "SearchSettingsWidget.AriaLabel": "Einstellungen suchen", "SearchSettingsWidget.Placeholder": "Einstellungen suchen", "noSettingsFound": "Keine Ergebnisse", diff --git a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 2940088146f..93e401bd692 100644 --- a/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Erweiterung \"{0}\" anzeigen", "editTtile": "Bearbeiten", "replaceDefaultValue": "In Einstellungen ersetzen", - "copyDefaultValue": "In Einstellungen kopieren", - "unsupportedPHPExecutablePathSetting": "Diese Einstellung muss eine Benutzereinstellung sein. Öffnen Sie zum Konfigurieren von PHP für den Arbeitsbereich eine PHP-Datei, und klicken Sie in der Statusleiste auf \"PHP-Pfad\".", - "unsupportedWorkspaceSetting": "Diese Einstellung muss eine Benutzereinstellung sein.", - "unsupportedWorkbenchSetting": "Diese Einstellung kann jetzt nicht angewendet werden. Sie wird angewendet, wenn Sie den Ordner direkt öffnen.", - "unsupportedWorkbenchSettingDevMode": "Diese Einstellung kann jetzt nicht angewendet werden. Sie wird angewendet, wenn Sie ihren Bereich beim Registrieren als \"Ressource\" definieren oder den Ordner direkt öffnen." + "copyDefaultValue": "In Einstellungen kopieren" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json index f36a3d9c95f..ac92df5f79c 100644 --- a/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Nächstes Sucheinschlussmuster anzeigen", "previousSearchIncludePattern": "Vorheriges Sucheinschlussmuster anzeigen", + "nextSearchExcludePattern": "Nächstes Suchausschlussmuster anzeigen", + "previousSearchExcludePattern": "Vorheriges Suchausschlussmuster anzeigen", "nextSearchTerm": "Nächsten Suchbegriff anzeigen", "previousSearchTerm": "Vorherigen Suchbegriff anzeigen", - "showSearchViewlet": "Suche anzeigen", "findInFiles": "In Dateien suchen", "replaceInFiles": "In Dateien ersetzen", "RefreshAction.label": "Aktualisieren", diff --git a/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json index 97d605ad472..f2f216a0a04 100644 --- a/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Suchdetails umschalten", + "searchScope.includes": "Einzuschließende Dateien", + "label.includes": "Sucheinschlussmuster", + "searchScope.excludes": "Auszuschließende Dateien", + "label.excludes": "Suchausschlussmuster", "replaceAll.confirmation.title": "Alle ersetzen", "replaceAll.confirm.button": "&&Ersetzen", "replaceAll.occurrence.file.message": "{0} Vorkommen in {1} Datei durch \"{2}\" ersetzt.", diff --git a/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 1dbbf27f3f1..23fd972a5ff 100644 --- a/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Suchen", + "copyMatchLabel": "Kopieren", + "copyPathLabel": "Pfad kopieren", + "copyAllLabel": "Alles kopieren", "findInFolder": "In Ordner suchen...", "findInWorkspace": "In Arbeitsbereich suchen...", "showTriggerActions": "Zu Symbol im Arbeitsbereich wechseln...", "name": "Suchen", - "search": "Suchen", "showSearchViewl": "Suche anzeigen", "view": "Anzeigen", "findInFiles": "In Dateien suchen", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Konfigurieren Sie diese Option, um Ergebnisse aus einer globalen Symbolsuche in die Dateiergebnisse für Quick Open einzuschließen.", "search.followSymlinks": "Steuert, ob Symlinks während der Suche gefolgt werden.", "search.smartCase": "Sucht ohne Berücksichtigung von Groß-/Kleinschreibung, wenn das Muster kleingeschrieben ist, andernfalls wird mit Berücksichtigung von Groß-/Kleinschreibung gesucht.", - "search.globalFindClipboard": "Steuert, ob die Suchansicht die freigegebene Suchzwischenablage auf macOS lesen oder verändern soll", - "search.location": "Vorschau: Steuert, ob die Suche als Ansicht in der Seitenleiste oder als Bedienfeld im Bereich des Bedienfelds für horizontales Layout angezeigt wird. In der nächsten Version wird das horizontale Layout im Bedienfeld verbessert und dies keine Vorschau mehr sein." + "search.globalFindClipboard": "Steuert, ob die Suchansicht die freigegebene Suchzwischenablage auf macOS lesen oder verändern soll" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 3c93dff57c4..4f5c93b0864 100644 --- a/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Helfen Sie uns die Unterstützung für {0} zu verbessern", "takeShortSurvey": "An kurzer Umfrage teilnehmen", "remindLater": "Später erinnern", - "neverAgain": "Nicht mehr anzeigen", - "helpUs": "Helfen Sie uns die Unterstützung für {0} zu verbessern" + "neverAgain": "Nicht mehr anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 8a2cf7269c2..3acd207c608 100644 --- a/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Wir würden uns freuen, wenn Sie an einer schnellen Umfrage teilnehmen.", "takeSurvey": "An Umfrage teilnehmen", "remindLater": "Später erinnern", - "neverAgain": "Nicht mehr anzeigen", - "surveyQuestion": "Wir würden uns freuen, wenn Sie an einer schnellen Umfrage teilnehmen." + "neverAgain": "Nicht mehr anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index cf9da95afab..4bee31d66e2 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Ein Problemmuster oder der Name eines beigetragenen oder vordefinierten Problemmusters. Kann ausgelassen werden, wenn die Basis angegeben ist.", "ProblemMatcherSchema.base": "Der Name eines zu verwendenden Basisproblemabgleichers.", "ProblemMatcherSchema.owner": "Der Besitzer des Problems im Code. Kann ausgelassen werden, wenn \"base\" angegeben wird. Der Standardwert ist \"external\", wenn keine Angabe erfolgt und \"base\" nicht angegeben wird.", + "ProblemMatcherSchema.source": "Eine visuell lesbare Zeichenfolge, die die Quelle dieser Diagnose beschreibt, z. B. \"typescript\" oder \"super lint\".", "ProblemMatcherSchema.severity": "Der Standardschweregrad für Erfassungsprobleme. Dieser wird verwendet, wenn das Muster keine Übereinstimmungsgruppe für den Schweregrad definiert.", "ProblemMatcherSchema.applyTo": "Steuert, ob ein für ein Textdokument gemeldetes Problem nur auf geöffnete, geschlossene oder alle Dokumente angewendet wird.", "ProblemMatcherSchema.fileLocation": "Definiert, wie Dateinamen interpretiert werden sollen, die in einem Problemmuster gemeldet werden.", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 37a1bba4e0c..fcf1a9b5913 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "Weist die Aufgabe keiner Gruppe zu.", "JsonSchema.tasks.group": "Definiert die Ausführungsgruppe, zu der diese Aufgabe gehört. Zum Hinzufügen der Aufgabe zur Buildgruppe wird \"build\" unterstützt und zum Hinzufügen zur Testgruppe \"test\".", "JsonSchema.tasks.type": "Definiert, ob die Aufgabe als Prozess oder als Befehl innerhalb einer Shell ausgeführt wird.", + "JsonSchema.command.quotedString.value": "Der tatsächliche Sollwert", + "JsonSchema.tasks.quoting.escape": "Fügt mithilfe des Escapezeichens der Shell vor Zeichen Escapezeichen ein (z. B. `  bei PowerShell und \\ bei Bash).", + "JsonSchema.tasks.quoting.strong": "Setzt das Argument mithilfe des starken Anführungszeichens der Shell in Anführungszeichen (z. B. \" bei PowerShell und Bash).", + "JsonSchema.tasks.quoting.weak": "Setzt das Argument mithilfe des schwachen Anführungszeichens der Shell in Anführungszeichen (z. B. ' bei PowerShell und Bash).", + "JsonSchema.command.quotesString.quote": "In welche Anführungszeichen der Befehlswert gesetzt wird.", "JsonSchema.command": "Der auszuführende Befehl. Es kann sich um ein externes Programm oder einen Shellbefehl handeln.", + "JsonSchema.args.quotedString.value": "Der tatsächliche Argumentwert", + "JsonSchema.args.quotesString.quote": "In welche Anführungszeichen der Argumentwert gesetzt wird.", "JsonSchema.tasks.args": "Argumente, die an den Befehl übergeben werden, wenn diese Aufgabe aufgerufen wird.", "JsonSchema.tasks.label": "Die Bezeichnung der Aufgabe der Benutzerschnittstelle", "JsonSchema.version": "Die Versionsnummer der Konfiguration.", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index b20a17cd7a7..a7490d669b4 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,7 +11,9 @@ "totalErrors": "{0} Fehler", "totalWarnings": "{0} Warnungen", "totalInfos": "{0}-Informationen", + "problems": "Probleme", "building": "Wird gebaut...", + "manyProblems": "Über 10.000", "runningTasks": "Aktive Aufgaben anzeigen", "tasks": "Aufgaben", "TaskSystem.noHotSwap": "Zum Ändern des Aufgabenausführungsmoduls mit einem aktiven Task muss das Fenster erneut geladen werden.", @@ -29,8 +31,8 @@ "selectProblemMatcher": "Fehler- und Warnungsarten auswählen, auf die die Aufgabenausgabe überprüft werden soll", "customizeParseErrors": "Die aktuelle Aufgabenkonfiguration weist Fehler auf. Beheben Sie die Fehler, bevor Sie eine Aufgabe anpassen.", "moreThanOneBuildTask": "In \"tasks.json\" sind mehrere Buildaufgaben definiert. Die erste wird ausgeführt.\n", - "TaskSystem.activeSame.background": "Die Aufgabe \"{0}\" ist bereits im Hintergrundmodus aktiv. Klicken Sie zum Beenden der Aufgabe im Menü \"Aufgaben\" auf \"Aufgabe beenden…\".", - "TaskSystem.activeSame.noBackground": "Die Aufgabe \"{0}\" ist bereits aktiv. Klicken Sie zum Beenden der Aufgabe im Menü \"Aufgaben\" auf \"Aufgabe beenden\".", + "terminateTask": "Aufgabe beenden", + "restartTask": "Aufgabe neu starten", "TaskSystem.active": "Eine aktive Aufgabe wird bereits ausgeführt. Beenden Sie diese, bevor Sie eine andere Aufgabe ausführen.", "TaskSystem.restartFailed": "Fehler beim Beenden und Neustarten der Aufgabe \"{0}\".", "TaskService.noConfiguration": "Fehler: Die Aufgabenerkennung {0} hat für die folgende Konfiguration keine Aufgabe beigetragen:\n {1}\nDie Aufgabe wird ignoriert.\n", @@ -47,8 +49,8 @@ "recentlyUsed": "zuletzt verwendete Aufgaben", "configured": "konfigurierte Aufgaben", "detected": "erkannte Aufgaben", - "TaskService.notAgain": "Nicht mehr anzeigen", "TaskService.ignoredFolder": "Die folgenden Arbeitsbereichsordner werden ignoriert, da sie Aufgabenversion 0.1.0 verwenden: {0}", + "TaskService.notAgain": "Nicht mehr anzeigen", "TaskService.pickRunTask": "Auszuführende Aufgabe auswählen", "TaslService.noEntryToRun": "Es wurde keine auszuführende Aufgabe gefunden. Aufgaben konfigurieren...", "TaskService.fetchingBuildTasks": "Buildaufgaben werden abgerufen...", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 2dfda5e5aca..4f46618a812 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Warnung: \"options.cwd\" muss vom Typ \"string\" sein. Der Wert {0} wird ignoriert.\n", + "ConfigurationParser.inValidArg": "Fehler: Befehlsargumente müssen Zeichenfolgen oder Zeichenfolgen in Anführungszeichen sein. Der angegebene Wert ist:\n{0}", "ConfigurationParser.noargs": "Fehler: Befehlsargumente müssen ein Array aus Zeichenfolgen sein. Angegebener Wert:\n{0}", "ConfigurationParser.noShell": "Warnung: Die Shell-Konfiguration wird nur beim Ausführen von Tasks im Terminal unterstützt.", "ConfigurationParser.noName": "Fehler: Der Problemabgleich im Deklarationsbereich muss einen Namen besitzen:\n{0}\n", diff --git a/i18n/deu/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..84fc7fe0d67 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "Die Hintergrundfarbe des Terminals, dies ermöglicht eine unterschiedliche Färbung des Terminals im Panel.", + "terminal.foreground": "Die Vordergrundfarbe des Terminal.", + "terminalCursor.foreground": "Die Vordergrundfarbe des Terminalcursors.", + "terminalCursor.background": "Die Hintergrundfarbe des Terminalcursors. Ermöglicht das Anpassen der Farbe eines Zeichens, das von einem Blockcursor überdeckt wird.", + "terminal.selectionBackground": "Die Auswahlvordergrundfarbe des Terminals.", + "terminal.border": "Die Farbe des Rahmens, der Bereiche innerhalb des Terminals teilt. Der Standardwert ist panel.border.", + "terminal.ansiColor": "\"{0}\" ANSI-Farbe im Terminal" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index b47e2f347c0..c66ad2bebf8 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,7 @@ "workbench.action.terminal.hideFindWidget": "Widget zum Ausblenden der Suche", "nextTerminalFindTerm": "Nächsten Suchbegriff anzeigen", "previousTerminalFindTerm": "Vorherigen Suchbegriff anzeigen", - "quickOpenTerm": "Aktives Terminal wechseln" + "quickOpenTerm": "Aktives Terminal wechseln", + "workbench.action.terminal.selectToPreviousCommand": "Auswählen bis zu vorherigem Befehl", + "workbench.action.terminal.selectToNextCommand": "Auswählen bis zu nächstem Befehl" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index fd696a9b61a..531c9fb5189 100644 --- a/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Dieser Arbeitsbereich enthält Einstellungen, die nur in den Benutzereinstellungen festgelegt werden können ({0}). Klicken Sie [hier]({1}), um mehr zu erfahren.", "openWorkspaceSettings": "Arbeitsbereichseinstellungen öffnen", - "dontShowAgain": "Nicht mehr anzeigen", - "unsupportedWorkspaceSettings": "Dieser Arbeitsbereich enthält Einstellungen, die nur in den Benutzereinstellungen festgelegt werden können ({0}). Klicken Sie [hier]({1}), um mehr zu erfahren." + "dontShowAgain": "Nicht mehr anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json index e77ab265d42..dbd9faf3c7e 100644 --- a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Später", "releaseNotes": "Anmerkungen zu dieser Version", "showReleaseNotes": "Anmerkungen zu dieser Version anzeigen", "read the release notes": "Willkommen bei {0} v{1}! Möchten Sie die Hinweise zu dieser Version lesen?", @@ -16,13 +15,12 @@ "updateIsReady": "Neues {0}-Update verfügbar.", "noUpdatesAvailable": "Zurzeit sind keine Updates verfügbar.", "ok": "OK", - "download now": "Jetzt herunterladen", "thereIsUpdateAvailable": "Ein Update ist verfügbar.", + "download now": "Jetzt herunterladen", + "later": "Später", "installUpdate": "Update installieren", - "updateAvailable": "Ein Update ist verfügbar: {0} {1}", "updateInstalling": "{0} {1} wird im Hintergrund installiert. Wir informieren Sie, wenn dies abgeschlossen ist.", "updateNow": "Jetzt aktualisieren", - "updateAvailableAfterRestart": "{0} wird nach dem Neustart aktualisiert.", "commandPalette": "Befehlspalette...", "settings": "Einstellungen", "keyboardShortcuts": "Tastenkombinationen", diff --git a/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 0a2dcb8a2c9..129a60d789e 100644 --- a/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "Webview-Editor" + "webview.editor.label": "Webview-Editor", + "developer": "Entwickler" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..1492a37abd0 --- /dev/null +++ b/i18n/deu/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview-Entwicklertools öffnen", + "refreshWebviewLabel": "Webviews erneut laden" +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index eab41295e8a..343d4b1d7ec 100644 --- a/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Tragen Sie zur Verbesserung von VS Code bei, und lassen Sie zu, dass Microsoft Nutzungsdaten erfasst. Lesen Sie unsere [Datenschutzvereinbarung]({0}), und erfahren Sie, wie Sie dies [deaktivieren]({1}).", + "telemetryOptOut.optInNotice": "Tragen Sie zur Verbesserung von VS Code bei, und lassen Sie zu, dass Microsoft Nutzungsdaten erfasst. Lesen Sie unsere [Datenschutzvereinbarung]({0}), und erfahren Sie, wie Sie dies [aktivieren]({1}).", "telemetryOptOut.readMore": "Weitere Informationen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/deu/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 406000b5b3e..de0f13bcb07 100644 --- a/i18n/deu/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Tools und Sprachen", "welcomePage.installExtensionPacksDescription": "Unterstützung für {0} und {1} installieren", "welcomePage.moreExtensions": "mehr", - "welcomePage.installKeymapDescription": "Tastenkombinationen installieren", - "welcomePage.installKeymapExtension": "Installieren Sie die Tastenkombinationen von {0} und {1}.", "welcomePage.others": "Andere", "welcomePage.colorTheme": "Farbdesign", "welcomePage.colorThemeDescription": "Passen Sie das Aussehen des Editors und Ihres Codes an Ihre Wünsche an.", diff --git a/i18n/deu/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/deu/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..0905d3e2f24 --- /dev/null +++ b/i18n/deu/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "Diese Einstellung kann jetzt nicht angewendet werden. Sie wird angewendet, wenn Sie den Ordner direkt öffnen." +} \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/deu/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 88c843bf458..5887d7611b4 100644 --- a/i18n/deu/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "Der Erweiterungshost wurde unerwartet beendet.", "extensionHostProcess.unresponsiveCrash": "Der Erweiterungshost wurde beendet, weil er nicht reagiert hat.", - "devTools": "Entwicklertools", "restart": "Erweiterungshost neu starten", "overwritingExtension": "Die Erweiterung \"{0}\" wird mit \"{1}\" überschrieben.", "extensionUnderDevelopment": "Die Entwicklungserweiterung unter \"{0}\" wird geladen.", diff --git a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index d1ad985a6bd..25ed118e0c1 100644 --- a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5 ist erforderlich. Klicken Sie auf den Link, um die Anwendung zu installieren.", "installNet": ".NET Framework 4.5 herunterladen", "neverShowAgain": "Nicht mehr anzeigen", - "netVersionError": "Microsoft .NET Framework 4.5 ist erforderlich. Klicken Sie auf den Link, um die Anwendung zu installieren.", + "enospcError": "{0} kann keine Dateiänderungen in diesem großen Workspace überwachen. Folgen Sie dem Anwendungslink, um das Problem zu beheben.", "learnMore": "Anweisungen", + "fileInvalidPath": "Ungültige Dateiressource ({0})", + "fileIsDirectoryError": "Die Datei ist ein Verzeichnis", + "fileNotModifiedError": "Datei nicht geändert seit", + "fileTooLargeError": "Die Datei ist zu groß, um sie zu öffnen.", + "fileNotFoundError": "Die Datei wurde nicht gefunden ({0}).", + "fileBinaryError": "Die Datei scheint eine Binärdatei zu sein und kann nicht als Text geöffnet werden.", + "filePermission": "Schreibzugriff auf Datei ({0}) verweigert", + "fileExists": "Die zu erstellende Datei ist bereits vorhanden ({0}). ", + "fileModifiedError": "Datei geändert seit", + "fileReadOnlyError": "Die Datei ist schreibgeschützt.", + "fileMoveConflict": "Verschieben/Kopieren kann nicht ausgeführt werden. Die Datei ist am Ziel bereits vorhanden.", + "unableToMoveCopyError": "Der Verschiebe-/Kopiervorgang kann nicht ausgeführt werden. Die Datei würde den Ordner ersetzen, in dem sie enthalten ist.", "binFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb.", "trashFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index ae94f99053a..c75ef9a2b35 100644 --- a/i18n/deu/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Die Datei wurde nicht gefunden ({0}).", "fileIsDirectoryError": "Die Datei ist ein Verzeichnis", "fileNotModifiedError": "Datei nicht geändert seit", "fileBinaryError": "Die Datei scheint eine Binärdatei zu sein und kann nicht als Text geöffnet werden." diff --git a/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index f8184dd0601..c9b03adcbae 100644 --- a/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "Der TextMate-Bereichsname, der von der tmLanguage-Datei verwendet wird.", "vscode.extension.contributes.grammars.path": "Der Pfad der tmLanguage-Datei. Der Pfad ist relativ zum Extensionordner und beginnt normalerweise mit \". /syntaxes/\".", "vscode.extension.contributes.grammars.embeddedLanguages": "Eine Zuordnung zwischen Bereichsname und Sprach-ID, wenn diese Grammatik eingebettete Sprachen enthält.", + "vscode.extension.contributes.grammars.tokenTypes": "Eine Zuordnung von Bereichsnamen zu Tokentypen.", "vscode.extension.contributes.grammars.injectTo": "Die Liste der Sprachbereichsnamen, in die diese Grammatik injiziert wird." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 64b51d1c603..033bdbfd918 100644 --- a/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/deu/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "Expected string in `contributes.{0}.path`. Provided value: {1}", "invalid.injectTo": "Ungültiger Wert in \"contributes.{0}.injectTo\". Es muss sich um ein Array von Sprachbereichsnamen handeln. Bereitgestellter Wert: {1}", "invalid.embeddedLanguages": "Ungültiger Wert in \"contributes.{0}.embeddedLanguages\". Muss eine Objektzuordnung von Bereichsname zu Sprache sein. Angegebener Wert: {1}", + "invalid.tokenTypes": "Ungültiger Wert in \"contributes.{0}.tokenTypes\". Muss eine Objektzuordnung von Bereichsname zu Tokentyp sein. Angegebener Wert: {1}", "invalid.path.1": "Es wurde erwartet, dass \"contributes.{0}.path\" ({1}) im Ordner ({2}) der Erweiterung enthalten ist. Dies führt ggf. dazu, dass die Erweiterung nicht portierbar ist.", "no-tm-grammar": "Keine TM-Grammatik für diese Sprache registriert." } \ No newline at end of file diff --git a/i18n/esn/extensions/css-language-features/package.i18n.json b/i18n/esn/extensions/css-language-features/package.i18n.json index 5b2576647c5..91d31339c05 100644 --- a/i18n/esn/extensions/css-language-features/package.i18n.json +++ b/i18n/esn/extensions/css-language-features/package.i18n.json @@ -8,6 +8,7 @@ ], "displayName": "Características del lenguaje CSS", "description": "Proporciona un potente soporte de lenguaje para archivos CSS, LESS y SCSS.", + "css.title": "CSS", "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.", @@ -50,6 +51,7 @@ "less.lint.zeroUnits.desc": "No se necesita una unidad para cero", "less.validate.title": "Controla la validación de LESS y la gravedad de los problemas.", "less.validate.desc": "Habilita o deshabilita todas las validaciones", + "scss.title": "SCSS (Sass)", "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.", diff --git a/i18n/esn/extensions/css/package.i18n.json b/i18n/esn/extensions/css/package.i18n.json index a0ca458b69d..8b817c2ddd4 100644 --- a/i18n/esn/extensions/css/package.i18n.json +++ b/i18n/esn/extensions/css/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Básicos de CSS", "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos CSS, LESS y SCSS." } \ No newline at end of file diff --git a/i18n/esn/extensions/emmet/package.i18n.json b/i18n/esn/extensions/emmet/package.i18n.json index 852d92d405c..d6c05800c1e 100644 --- a/i18n/esn/extensions/emmet/package.i18n.json +++ b/i18n/esn/extensions/emmet/package.i18n.json @@ -35,7 +35,7 @@ "emmetExtensionsPath": "Ruta de acceso a una carpeta que contiene los perfiles y fragmentos de Emmet.", "emmetShowExpandedAbbreviation": "Muestra abreviaciones Emmet expandidas como sugerencias. La opción \"inMarkupAndStylesheetFilesOnly\" se aplica a HTML, HAML, Jade, Slim, XML, XSL, CSS, SCSS, SASS, LESS y Stylus. La opción \"always\" se aplica a todas las partes del archivo, independientemente de que sea de marcado o CSS. ", "emmetShowAbbreviationSuggestions": "Muestra posibles abreviaciones Emmet como sugerencias. No se aplica a hojas de estilos ni cuando emmet.showExpandedAbbreviation está establecido en \"never\". ", - "emmetIncludeLanguages": "Habilita abreviaciones Emmet en lenguajes que no se admiten de forma predeterminada. Agregue una asignación aquí entre el lenguaje y el lenguaje que admite Emmet. Ejemplo: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"} ", + "emmetIncludeLanguages": "Habilite las abreviaturas de Emmet en idiomas que no sean compatibles de forma predeterminada. Añada una asignación aquí entre el idioma y el idioma admitido por Emmet.\n Ej.: { \"Vue-HTML \": \"HTML \", \"JavaScript \": \"javascriptreact \"}", "emmetVariables": "Variables para ser utilizadas en fragmentos de código de Emmet", "emmetTriggerExpansionOnTab": "Cuando se habilita, se expande la abreviación Emmet al presionar la tecla TAB. ", "emmetPreferences": "Preferencias usadas para modificar el comportamiento de algunas acciones y resoluciones de Emmet.", @@ -59,5 +59,7 @@ "emmetPreferencesCssWebkitProperties": "Propiedades CSS separadas por comas que obtienen el prefijo de proveedor 'webkit' cuando se utilizan en la abreviatura Emmet que comienza con '-'. Establecer en la cadena vacía para evitar siempre el prefijo 'webkit'.", "emmetPreferencesCssMozProperties": "Propiedades CSS separadas por comas que obtienen el prefijo de proveedor 'moz' cuando se utilizan en la abreviatura Emmet que comienza con '-'. Establecer en la cadena vacía para evitar siempre el prefijo 'moz'.", "emmetPreferencesCssOProperties": "Propiedades CSS separadas por comas que obtienen el prefijo de proveedor 'o' cuando se utilizan en la abreviatura Emmet que comienza con '-'. Establecer en la cadena vacía para evitar siempre el prefijo 'o'.", - "emmetPreferencesCssMsProperties": "Propiedades CSS separadas por comas que obtienen el prefijo de proveedor 'ms' cuando se utilizan en la abreviatura Emmet que comienza con '-'. Establecer en la cadena vacía para evitar siempre el prefijo 'ms'." + "emmetPreferencesCssMsProperties": "Propiedades CSS separadas por comas que obtienen el prefijo de proveedor 'ms' cuando se utilizan en la abreviatura Emmet que comienza con '-'. Establecer en la cadena vacía para evitar siempre el prefijo 'ms'.", + "emmetPreferencesCssFuzzySearchMinScore": "La mínima puntuación (de 0 a 1) que se debe alcanzar en la comparación difusa de abreviación. Los valores más bajos pueden producir muchos resultados falsos positivos, los valores más altos pueden reducir posibles coincidencias.", + "emmetOptimizeStylesheetParsing": "Cuando se establece en falso, se analiza el archivo entero para determinar si la posición actual es válida para la expansión de abreviaturas de Emmet. Cuando se establece en verdadero, sólo el contenido alrededor de la posición actual en archivos css, scss/less es analizado." } \ No newline at end of file diff --git a/i18n/esn/extensions/git/out/commands.i18n.json b/i18n/esn/extensions/git/out/commands.i18n.json index 53ebb086ddb..6f668444142 100644 --- a/i18n/esn/extensions/git/out/commands.i18n.json +++ b/i18n/esn/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "Aceptar", "push with tags success": "Insertado con etiquetas correctamente.", "pick remote": "Seleccionar un elemento remoto para publicar la rama '{0}':", + "sync is unpredictable": "Esta acción insertará e incorporará cambios en y desde '{0}/{1}'.", "never again": "No volver a mostrar ", "no remotes to publish": "El repositorio no tiene remotos configurados en los que publicar.", "no changes stash": "No existen cambios para el guardado provisional.", diff --git a/i18n/esn/extensions/html/package.i18n.json b/i18n/esn/extensions/html/package.i18n.json index 114d2d72125..3a6ffcc4e4e 100644 --- a/i18n/esn/extensions/html/package.i18n.json +++ b/i18n/esn/extensions/html/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Conceptos básicos de lenguaje HTML" + "displayName": "Conceptos básicos de lenguaje HTML", + "description": "Proporciona resaltado de sintaxis, correspondencia de corchetes y fragmentos de código en archivos HTML." } \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-language-features/out/security.i18n.json b/i18n/esn/extensions/markdown-language-features/out/security.i18n.json index 09a54bc2ce3..6d04884c962 100644 --- a/i18n/esn/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/esn/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,8 @@ ], "strict.title": "Strict", "strict.description": "Cargar solo el contenido seguro", + "insecureLocalContent.title": "Permitir contenido local inseguro ", + "insecureLocalContent.description": "Habilitar la carga del contenido sobre http desde localhost", "insecureContent.title": "Permitir contenido no seguro", "insecureContent.description": "Habilitar el contenido de carga sobre http", "disable.title": "Deshabilitar", @@ -15,5 +17,6 @@ "moreInfo.title": "Más información", "enableSecurityWarning.title": "Habilitar advertencias de seguridad de vista previa en este espacio de trabajo", "disableSecurityWarning.title": "Deshabilitar advertencias de seguridad de vista previa en este espacio de trabajo", + "toggleSecurityWarning.description": "No afecta al nivel de seguridad de contenido", "preview.showPreviewSecuritySelector.title": "Seleccione configuración de seguridad para las previsualizaciones de Markdown en esta área de trabajo" } \ No newline at end of file diff --git a/i18n/esn/extensions/php-language-features/package.i18n.json b/i18n/esn/extensions/php-language-features/package.i18n.json index dd2f1e37fd8..0b5e90ed32d 100644 --- a/i18n/esn/extensions/php-language-features/package.i18n.json +++ b/i18n/esn/extensions/php-language-features/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Indica si linter se ejecuta al guardar o al escribir.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)" + "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)", + "displayName": "Características del lenguaje PHP", + "description": "Proporciona un potente soporte de lenguaje para archivos PHP." } \ No newline at end of file diff --git a/i18n/esn/extensions/php/package.i18n.json b/i18n/esn/extensions/php/package.i18n.json index e7b6423f2b6..edf1d540da8 100644 --- a/i18n/esn/extensions/php/package.i18n.json +++ b/i18n/esn/extensions/php/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Características del lenguaje PHP" + "displayName": "Conceptos básicos del lenguaje PHP", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos PHP." } \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/commands.i18n.json b/i18n/esn/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..0406f029ae5 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Abra una carpeta en VS Code para usar un proyecto de TypeScript o JavaScript", + "typescript.projectConfigUnsupportedFile": "No se pudo determinar el proyecto de TypeScript o JavaScript. Tipo de archivo no compatible", + "typescript.projectConfigCouldNotGetInfo": "No se pudo determinar el proyecto de TypeScript o JavaScript", + "typescript.noTypeScriptProjectConfig": "El archivo no forma parte de un proyecto de TypeScript. Haga clic [aquí]({0}) para obtener más información.", + "typescript.noJavaScriptProjectConfig": "El archivo no forma parte de un proyecto de JavaScript. Haga clic [aquí]({0}) para obtener más información.", + "typescript.configureTsconfigQuickPick": "Configurar tsconfig.json", + "typescript.configureJsconfigQuickPick": "Configurar jsconfig.json" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..20f05236719 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Seleccione acción de código para aplicar", + "acquiringTypingsLabel": "Adquiriendo typings...", + "acquiringTypingsDetail": "Adquiriendo definiciones de typings para IntelliSense.", + "autoImportLabel": "Importar automáticamente desde {0}" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..c51828607c1 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Habilita la verificación semántica en un archivo de JavaScript. Debe estar al principio del archivo.", + "ts-nocheck": "Deshabilita la verificación semántica en un archivo de JavaScript. Debe estar al principio del archivo.", + "ts-ignore": "Suprime los errores @ts-check en la siguiente línea de un archivo. " +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..5cab0f0f878 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 implementación", + "manyImplementationLabel": "{0} implementaciones", + "implementationsErrorLabel": "No se pueden determinar las implementaciones" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..7579ba46bb3 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "Comentario de JSDoc" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..226cfad1182 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Organizar las importaciones" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..a3699d251e4 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Corregir todo en el archivo)" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..028c2af8de2 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 referencia", + "manyReferenceLabel": "{0} referencias", + "referenceErrorLabel": "No se pudieron determinar las referencias" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..2737725617d --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "construir - {0}", + "buildAndWatchTscLabel": "seguir - {0}" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/esn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..12d95cb7073 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "La ruta de acceso {0} no apunta a una instalación válida de tsserver. Se usará la versión de TypeScript del paquete.", + "serverCouldNotBeStarted": "El servidor de lenguaje TypeScript no se pudo iniciar. El mensaje de error es: {0}", + "typescript.openTsServerLog.notSupported": "El registro del servidor de TS requiere TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "Los registros del servidor TS están desconectados. Establezca \"typescript.tsserver.log\" y reinicie el servidor TS para activar los registros.", + "typescript.openTsServerLog.enableAndReloadOption": "Habilite el registro y reinicie el servidor TS", + "typescript.openTsServerLog.noLogFile": "El servidor de TS no ha iniciado el registro.", + "openTsServerLog.openFileFailedFailed": "No se puede abrir el archivo de registro del servidor de TS", + "serverDiedAfterStart": "El servicio de lenguaje TypeScript finalizó de forma inesperada cinco veces después de haberse iniciado y no se reiniciará.", + "serverDiedReportIssue": "Notificar problema", + "serverDied": "El servicio de lenguaje Typescript finalizó de forma inesperada cinco veces en los últimos cinco minutos." +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..ea0f0a445e5 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "versión inválida" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..6b1caf7be01 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Para habilitar las características de lenguaje de JavaScript/TypeScript en todo el proyecto, excluya las carpetas con muchos archivos, como: {0}", + "hintExclude.generic": "Para habilitar las características de idioma de JavaScript/TypeScript IntelliSense en todo el proyecto, excluya las carpetas de tamaño grande con archivos de origen en los que no trabaje.", + "large.label": "Configurar exclusiones", + "hintExclude.tooltip": "Para habilitar las características de idioma de JavaScript/TypeScript IntelliSense en todo el proyecto, excluya las carpetas de tamaño grande con archivos de origen en los que no trabaje." +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..290207978aa --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Recuperando cambios en los datos para un mejor rendimiento de TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "No se pudieron instalar archivos de términos para las características de lenguaje de JavaScript. Asegúrese de que NPM está instalado o configure \"typescript.npm\" en la configuración de usuario. Haga clic [aquí]({0}) para obtener más información.", + "typesInstallerInitializationFailed.doNotCheckAgain": "No volver a mostrar" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..2cac579a218 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Utilizar la versión de VS Code", + "useWorkspaceVersionOption": "Usar versión del área de trabajo", + "learnMore": "Más información", + "selectTsVersion": "Seleccionar la versión de TypeScript usada para las características del lenguaje de JavaScript y TypeScript" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/esn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..2fa648a3e7e --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "No se pudo cargar la versión de TypeScript en esta ruta", + "noBundledServerFound": "Otra aplicación (por ejemplo, una herramienta de detección de virus con un comportamiento erróneo) eliminó el tsserver de VSCode. Debe reinstalar el VS Code." +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-language-features/package.i18n.json b/i18n/esn/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..60682458562 --- /dev/null +++ b/i18n/esn/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,64 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Características del lenguaje JavaScript y TypeScript", + "description": "Proporciona soporte de lenguaje enriquecido para JavaScript y TypeScript.", + "typescript.reloadProjects.title": "Volver a cargar el proyecto", + "javascript.reloadProjects.title": "Volver a cargar el proyecto", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Complete las funciones con la signatura de parámetro.", + "typescript.tsdk.desc": "Especifica la ruta de acceso de carpeta que contiene los archivos lib*.d.ts y tsserver que se van a usar.", + "typescript.disableAutomaticTypeAcquisition": "Desactiva la adquisición automática de tipos. Requiere TypeScript >= 2.0.6.", + "typescript.tsserver.log": "votes Habilita los registros del servidor TS a un archivo. Este registro se puede utilizar para diagnosticar problemas en el servidor TS. Este registro puede contener rutas de acceso, código fuente y posiblemente otra información sensitiva acerca del proyecto.", + "typescript.tsserver.pluginPaths": "Rutas adicionales para descubrir plugins de servicio del lenguaje Typescript. Requiere TypeScript >= 2.3.0.", + "typescript.tsserver.pluginPaths.item": "Ruta relativa o absoluta. La ruta de acceso relativa se resolverá contra las carpetas del espacio de trabajo.", + "typescript.tsserver.trace": "Habilita el seguimiento de mensajes al servidor TS. Este seguimiento se puede utilizar para diagnosticar problemas en el servidor TS. Este seguimiento puede contener rutas de acceso, código fuente y posiblemente otra información sensitiva acerca del proyecto.", + "typescript.validate.enable": "Habilita o deshabilita la validación de TypeScript.", + "typescript.format.enable": "Habilita o deshabilita el formateador predeterminado de TypeScript.", + "javascript.format.enable": "Habilita o deshabilita el formateador predeterminado de JavaScript.", + "format.insertSpaceAfterCommaDelimiter": "Define el tratamiento del espacio después de un delimitador de coma.", + "format.insertSpaceAfterConstructor": "Define el manejo del espacio después de la palabra clave constructor. Requiere TypeScript >= 2.3.0", + "format.insertSpaceAfterSemicolonInForStatements": " Define el tratamiento del espacio después de punto y coma en una instrucción for.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Define el tratamiento del espacio después de un operador binario.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Define el tratamiento del espacio después de las palabras clave en una instrucción de flujo de control.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Define el tratamiento del espacio después de la palabra clave function para las funciones anónimas.", + "format.insertSpaceBeforeFunctionParenthesis": "Define el tratamiento del espacio delante de los paréntesis de los argumentos de las funciones. Requiere TypeScript >= 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": "Define el manejo del espacio después de abrir y antes de cerrar paréntesis no vacíos.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": "Define el manejo del espacio después de abrir y antes de cerrar los soportes no vacíos.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": "Define el manejo del espacio después de abrir y antes de cerrar llaves no vacías. Requiere TypeScript > = 2.3.0.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Define el tratamiento del espacio después de la llave de apertura y antes de la llave de cierre de cadenas de plantilla. Requiere TypeScript >= 2.0.6.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Define el tratamiento del espacio después de la llave de apertura y antes de la llave de cierre de las expresiones JSX. Requiere TypeScript >= 2.0.6.", + "format.insertSpaceAfterTypeAssertion": "Define el control del espacio después de las aserciones de tipos en TypeScript. Requiere TypeScript >= 2.4", + "format.placeOpenBraceOnNewLineForFunctions": "Define si una llave de apertura se incluye en una nueva línea para las funciones o no.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Define si una llave de apertura se incluye en una nueva línea para los bloques de control o no.", + "javascript.validate.enable": "Habilita o deshabilita la validación de JavaScript.", + "typescript.goToProjectConfig.title": "Ir a configuración del proyecto", + "javascript.goToProjectConfig.title": "Ir a configuración del proyecto", + "javascript.referencesCodeLens.enabled": "Habilitar/deshabilitar las referencias de CodeLens en los archivos de JavaScript.", + "typescript.referencesCodeLens.enabled": "Habilitar/deshabilitar las referencias de CodeLens en los archivos de TypeScript. Requiere TypeScript >= 2.0.6.", + "typescript.implementationsCodeLens.enabled": "Habilita o deshabilita implementaciones de CodeLens. Requiere TypeScript >= 2.2.0.", + "typescript.openTsServerLog.title": "Abrir registro del servidor de TS", + "typescript.restartTsServer": "Reiniciar servidor TS", + "typescript.selectTypeScriptVersion.title": "Seleccionar versión de TypeScript", + "typescript.reportStyleChecksAsWarnings": "Notificar comprobaciones de estilo como advertencias", + "jsDocCompletion.enabled": "Habilita o deshabilita comentarios automaticos de JSDoc", + "javascript.implicitProjectConfig.checkJs": "Habilita/deshabilita la comprobación semántica de los archivos JavaScript. Los archivos jsconfig.json o tsconfig.json reemplazan esta configuración. Se requiere TypeScript >=2.3.1.", + "typescript.npm": "Especifica la ruta de acceso al archivo ejecutable de NPM usada para la adquisición automática de tipos. Requiere TypeScript >= 2.3.4.", + "typescript.check.npmIsInstalled": "Compruebe si NPM está instalado para la adquisición automática de tipos.", + "javascript.nameSuggestions": "Habilitar/deshabilitar nombres únicos de la lista de sugerencias en los archivos de JavaScript. ", + "typescript.tsc.autoDetect": "Controla la auto detección de tareas del CAC. 'off' inhabilita esta función. 'build' crea una ejecución de compilación de tareas. 'watch' sólo crea compilación y 'watch tasks' 'on' crea tanto construir y ver tareas. Por defecto = 'on'. ", + "typescript.problemMatchers.tsc.label": "Problemas de TypeScript", + "typescript.problemMatchers.tscWatch.label": "Problemas de TypeScript (modo de inspección)", + "typescript.quickSuggestionsForPaths": "Activar o desactiva las sugerencias rápidas al escribir una ruta de importación.", + "typescript.locale": "Establece la configuración regional para reportar errores de TypeScript. Requiere TypeScript > = 2.6.0. Por defecto, utiliza el valor 'null' de VS Code para errores de TypeScript.", + "javascript.implicitProjectConfig.experimentalDecorators": "Activar/desactivar 'experimentalDecorators' para los archivos JavaScript que no son parte de un proyecto. Los archivos jsconfig.json o tsconfig.json reemplazan esta configuración. Requiere inicio > = 2.3.1. ", + "typescript.autoImportSuggestions.enabled": "Habilita o deshabilita sugerencias de importación automática.  Requiere TypeScript >= 2.6.1.", + "typescript.experimental.syntaxFolding": "Habilita/deshabilita los marcadores de plegado sensibles a la sintaxis.", + "taskDefinition.tsconfig.description": "Archivo tsconfig que define la compilación de TS.", + "javascript.suggestionActions.enabled": "Habilitar/deshabilitar sugerencias de diagnóstico para los archivos JavaScript en el editor. Requiere TypeScript > = 2.8 " +} \ No newline at end of file diff --git a/i18n/esn/src/vs/base/node/processes.i18n.json b/i18n/esn/src/vs/base/node/processes.i18n.json index ca0c97371a5..35229bd6699 100644 --- a/i18n/esn/src/vs/base/node/processes.i18n.json +++ b/i18n/esn/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "No se puede ejecutar un comando shell en una unidad UNC." + ] } \ No newline at end of file diff --git a/i18n/esn/src/vs/base/node/zip.i18n.json b/i18n/esn/src/vs/base/node/zip.i18n.json index 545249f03c4..fff6f71f4a8 100644 --- a/i18n/esn/src/vs/base/node/zip.i18n.json +++ b/i18n/esn/src/vs/base/node/zip.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "incompleteExtract": "Incompleta. Extraído {0} de {1} entradas", "notFound": "{0} no se encontró dentro del archivo zip." } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index bdde741219f..efeedf70590 100644 --- a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "Visualizar en GitHub", "loadingData": "Cargando datos...", + "rateLimited": "Límite de consulta de GitHub excedido. Espera.", "similarIssues": "Problemas similares", "open": "Abrir", "closed": "Cerrado", - "noResults": "No se encontraron resultados", + "noSimilarIssues": "No hay problemas similares encontrados", "settingsSearchIssue": "Problema de búsqueda de configuración", "bugReporter": "Informe de errores", "featureRequest": "Solicitud de característica", diff --git a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 5e6ecd766bd..ad772087dc1 100644 --- a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,12 @@ ], "completeInEnglish": "Por favor complete el formulario en inglés.", "issueTypeLabel": "Esto es un", + "issueSourceLabel": "Archivo en", + "vscode": "Visual Studio Code", + "extension": "Una extensión", + "disableExtensionsLabelText": "Intente reproducir el problema después de {0}. Si el problema sólo se reproduce cuando las extensiones están activas, puede que haya un problema con una extensión.", + "disableExtensions": "Deshabilitar todas las extensiones y volver a cargar la ventana", + "chooseExtension": "Extensión", "issueTitleLabel": "Título", "issueTitleRequired": "Por favor, introduzca un título.", "titleLengthValidation": "El título es demasiado largo.", @@ -18,13 +24,6 @@ "extensions": "Mis extensiones", "searchedExtensions": "Extensiones que se han buscado", "settingsSearchDetails": "Detalles de la búsqueda de configuración", - "tryDisablingExtensions": "¿Se reproduce el problema cuando están deshabilitadas las extensiones?", - "yes": "Sí", - "no": "No", - "disableExtensionsLabelText": "Intente reproducir el problema después de {0}.", - "disableExtensions": "Deshabilitar todas las extensiones y volver a cargar la ventana", - "showRunningExtensionsLabelText": "Si sospecha que se trata de un problema con una extensión, {0} para notificarlo.", - "showRunningExtensions": "Ver todas las extensiones que están en ejecución", "details": "Especifique los detalles.", "loadingData": "Cargando datos..." } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/esn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..c10a769e352 --- /dev/null +++ b/i18n/esn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "CPU %", + "memory": "Memoria (MB)", + "pid": "pid", + "name": "Nombre", + "killProcess": "Matar proceso", + "forceKillProcess": "Forzar matar proceso" +} \ 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 5286de3ed56..4fa8264443e 100644 --- a/i18n/esn/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/esn/src/vs/code/electron-main/menus.i18n.json @@ -146,6 +146,7 @@ "miConditionalBreakpoint": "Punto de interrupción &&condicional...", "miColumnBreakpoint": "Punto de interrupción de c&&olumna", "miFunctionBreakpoint": "Punto de interrupción de &&función...", + "miLogPoint": "&& Punto de registro de...", "miNewBreakpoint": "&&Nuevo punto de interrupción", "miEnableAllBreakpoints": "Habilitar todos los puntos de interrupción", "miDisableAllBreakpoints": "&&Deshabilitar todos los puntos de interrupción", @@ -161,6 +162,7 @@ "mMergeAllWindows": "Fusionar todas las ventanas", "miToggleDevTools": "&&Alternar herramientas de desarrollo", "miAccessibilityOptions": "&&Opciones de accesibilidad", + "miOpenProcessExplorerer": "Abrir Explorador de &&Procesos", "miReportIssue": "&&Notificar problema", "miWelcome": "&&Bienvenido", "miInteractivePlayground": "Área de juegos &&interactiva", diff --git a/i18n/esn/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/esn/src/vs/editor/browser/widget/diffReview.i18n.json index 6fac622936b..44586570582 100644 --- a/i18n/esn/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/esn/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Cerrar", - "header": "Diferencia {0} de {1}: original {2}, {3} líneas, modificado {4}, {5} líneas", "blankLine": "vacío", "equalLine": "original {0}, modificado {1}: {2}", "insertLine": "+ modificado {0}: {1}", diff --git a/i18n/esn/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/esn/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..d60d995d489 --- /dev/null +++ b/i18n/esn/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cursors.maximum": "El número de cursores se ha limitado a {0}." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/esn/src/vs/editor/common/config/commonEditorConfig.i18n.json index 966708573a3..385993cc48e 100644 --- a/i18n/esn/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/esn/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Se asigna a \"Control\" en Windows y Linux y a \"Comando\" en macOS.", "multiCursorModifier.alt": "Se asigna a \"Alt\" en Windows y Linux y a \"Opción\" en macOS.", "multiCursorModifier": "El modificador que se usará para agregar varios cursores con el mouse. \"ctrlCmd\" se asigna a \"Control\" en Windows y Linux y a \"Comando\" en macOS. Los gestos del mouse \"Ir a la definición\" y \"Abrir vínculo\" se adaptarán de modo que no entren en conflicto con el modificador multicurso", + "multiCursorMergeOverlapping": "Combinar varios cursores cuando se solapan.", "quickSuggestions.strings": "Habilita sugerencias rápidas en las cadenas.", "quickSuggestions.comments": "Habilita sugerencias rápidas en los comentarios.", "quickSuggestions.other": "Habilita sugerencias rápidas fuera de las cadenas y los comentarios.", @@ -88,6 +89,9 @@ "renderLineHighlight": "Controla cómo el editor debe presentar el resaltado de línea. Las posibilidades son \"ninguno\", \"margen\", \"línea\" y \"todo\".", "codeLens": "Controla si el editor muestra lentes de código", "folding": "Controla si el editor tiene habilitado el plegado de código.", + "foldingStrategyAuto": "Si está disponible, utilice una estrategia de plegado específica del idioma, de lo contrario volverá a la estrategia basada en sangría.", + "foldingStrategyIndentation": "Utilice siempre la estrategia de plegado basado en sangría.", + "foldingStrategy": "Controla la forma en que se calculan las gamas plegables. Las selecciones ' auto' utilizan una estrategia de plegado específica del idioma, si está disponible. 'Sangría' obliga a utilizar la estrategia de plegado con sangría.", "showFoldingControls": "Controla cuándo los controles de plegado del margen son ocultados automáticamente.", "matchBrackets": "Resaltar corchetes coincidentes cuando se seleccione uno de ellos.", "glyphMargin": "Controla si el editor debe representar el margen de glifo vertical. El margen de glifo se usa, principalmente, para depuración.", @@ -105,5 +109,7 @@ "selectionClipboard": "Controla si el portapapeles principal de Linux debe admitirse.", "sideBySide": "Controla si el editor de diferencias muestra las diferencias en paralelo o alineadas.", "ignoreTrimWhitespace": "Controla si el editor de diferencias muestra los cambios de espacio inicial o espacio final como diferencias.", + "largeFileSize": "Controla el umbral de tamaño de archivo en bytes más allá de los cuales se aplican reglas de optimización especiales", + "largeFileLineCount": "Controla el umbral de tamaño de archivo en términos de cuenta de línea más allá de las cuales se aplican reglas de optimización especiales", "renderIndicators": "Controla si el editor de diff muestra indicadores +/- para cambios agregados/quitados" } \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json index 131e96b837a..1da3081cf27 100644 --- a/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/esn/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "Color de las guías de sangría del editor.", "editorLineNumbers": "Color de números de línea del editor.", "editorActiveLineNumber": "Color del número de línea activa en el editor", + "deprecatedEditorActiveLineNumber": "ID es obsoleto. Usar en lugar 'editorLineNumber.activeForeground'. ", "editorRuler": "Color de las reglas del editor", "editorCodeLensForeground": "Color principal de lentes de código en el editor", "editorBracketMatchBackground": "Color de fondo tras corchetes coincidentes", @@ -28,6 +29,9 @@ "warningBorder": "Color de borde de squigglies de advertencia en el editor.", "infoForeground": "Color de primer plano de los subrayados ondulados informativos en el editor.", "infoBorder": "Color del borde de los subrayados ondulados informativos en el editor.", + "hintForeground": "Color de primer plano de pista squigglies en el editor.", + "hintBorder": "Color de borde de pista squigglies en el editor.", + "overviewRulerRangeHighlight": "Resumen de color de marcador para destacar rangos. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", "overviewRuleError": "Color de marcador de regla de información general para errores. ", "overviewRuleWarning": "Color de marcador de regla de información general para advertencias.", "overviewRuleInfo": "Color de marcador de regla de información general para mensajes informativos. " diff --git a/i18n/esn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/esn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..8a8848e3498 --- /dev/null +++ b/i18n/esn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,17 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Mostrar correcciones ({0})", + "quickFix": "Mostrar correcciones", + "quickfix.trigger.label": "Solución rápida...", + "editor.action.quickFix.noneMessage": "No hay acciones de código disponibles", + "refactor.label": "Refactorizar...", + "editor.action.refactor.noneMessage": "No hay refactorizaciones disponibles", + "source.label": "Acción de la fuente...", + "editor.action.source.noneMessage": "No hay acciones de fuente disponibles" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/find/findController.i18n.json b/i18n/esn/src/vs/editor/contrib/find/findController.i18n.json index 98e450e770f..0a2f41c1bae 100644 --- a/i18n/esn/src/vs/editor/contrib/find/findController.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/find/findController.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "startFindAction": "Buscar", + "startFindWithSelectionAction": "Buscar con selección", "findNextMatchAction": "Buscar siguiente", "findPreviousMatchAction": "Buscar anterior", "nextSelectionMatchFindAction": "Buscar selección siguiente", diff --git a/i18n/esn/src/vs/editor/contrib/format/formatActions.i18n.json b/i18n/esn/src/vs/editor/contrib/format/formatActions.i18n.json index f54e722387a..d811487bd46 100644 --- a/i18n/esn/src/vs/editor/contrib/format/formatActions.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/format/formatActions.i18n.json @@ -12,5 +12,7 @@ "hintnn": "{0} ediciones de formato entre las líneas {1} y {2}", "no.provider": "No hay formateador para los archivos ' {0} ' instalados.", "formatDocument.label": "Dar formato al documento", - "formatSelection.label": "Dar formato a la selección" + "no.documentprovider": "No hay formateador de documentos para los archivos ' {0} ' instalados.", + "formatSelection.label": "Dar formato a la selección", + "no.selectionprovider": "No hay formateador de selección para los archivos ' {0} ' instalados." } \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/links/links.i18n.json b/i18n/esn/src/vs/editor/contrib/links/links.i18n.json index cd880de830b..a7200dfc8a2 100644 --- a/i18n/esn/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "Ctrl + clic para abrir el vínculo", "links.command.mac": "Cmd + click para ejecutar el comando", "links.command": "Ctrl + click para ejecutar el comando", + "links.navigate.al.mac": "Opción + clic para seguir el enlace", "links.navigate.al": "Alt + clic para seguir el vínculo", + "links.command.al.mac": "Opción + click para ejecutar el comando", "links.command.al": "Alt + clic para ejecutar el comando", "invalid.url": "No se pudo abrir este vínculo porque no tiene un formato correcto: {0}", "missing.url": "No se pudo abrir este vínculo porque falta el destino.", diff --git a/i18n/esn/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/esn/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..bc97e24608a --- /dev/null +++ b/i18n/esn/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "editor.readonly": "No se puede editar en editor de sólo lectura" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index f494743a105..22631072b43 100644 --- a/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -6,7 +6,42 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "Sunday": "Domingo", + "Monday": "Lunes", + "Tuesday": "Martes", + "Wednesday": "Miércoles", + "Thursday": "Jueves", + "Friday": "Viernes", + "Saturday": "Sábado", + "SundayShort": "Dom", + "MondayShort": "Lun", + "TuesdayShort": "Mar", + "WednesdayShort": "Mié", + "ThursdayShort": "Jue", + "FridayShort": "Vie", + "SaturdayShort": "Sáb", + "January": "Enero", + "February": "Febrero", + "March": "Marzo", + "April": "Abril", + "May": "Mayo", + "June": "Junio", + "July": "Julio", + "August": "Agosto", + "September": "Septiembre", + "October": "Octubre", "November": "Noviembre", + "December": "Diciembre", + "JanuaryShort": "Ene", + "FebruaryShort": "Feb", + "MarchShort": "Mar", + "AprilShort": "Abr", + "MayShort": "May", + "JuneShort": "Jun", "JulyShort": "Jul", + "AugustShort": "Ago", + "SeptemberShort": "Sep", + "OctoberShort": "Oct", + "NovemberShort": "Noviembre", "DecemberShort": "Dic" } \ No newline at end of file diff --git a/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index d7c592b45d8..502886a6ec8 100644 --- a/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "Color de fondo de un símbolo durante el acceso de escritura, como escribir en una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", "wordHighlightBorder": "Color de fondo de un símbolo durante el acceso de lectura; por ejemplo, cuando se lee una variable.", "wordHighlightStrongBorder": "Color de fondo de un símbolo durante el acceso de escritura; por ejemplo, cuando se escribe una variable.", + "overviewRulerWordHighlightForeground": "Destaca el color del marcador para los puntos del símbolo. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", + "overviewRulerWordHighlightStrongForeground": "Destaca el color del marcador de acceso de escritura. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", "wordHighlight.next.label": "Ir al siguiente símbolo destacado", "wordHighlight.previous.label": "Ir al símbolo destacado anterior" } \ 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 6011d3c42ac..386d85b039d 100644 --- a/i18n/esn/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/esn/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Comience con el comando 'Developer: Startup Performance' habilitado.", "prof-startup": "Ejecutar generador de perfiles de CPU durante el inicio", "disableExtensions": "Deshabilite todas las extensiones instaladas.", - "inspect-extensions": "Permitir la depuración y el perfil de las extensiones. Revisar las herramientas de desarrollador para la conexión uri.", - "inspect-brk-extensions": "Permitir la depuración y el perfil de las extensiones con el host de la extensión pausado después del inicio. Revisar las herramientas de desarrollador para la conexión uri.", "disableGPU": "Deshabilita la aceleración de hardware de GPU.", "uploadLogs": "Carga los registros de la sesión actual a un extremo.", "maxMemory": "Tamaño máximo de memoria para una ventana (en Mbytes).", diff --git a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 87bd0fe318c..5e55b7d238c 100644 --- a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "invalidManifest": "Extensión no válida: package.json no es un archivo JSON.", + "incompatible": "No se puede instalar la extensión ' {0} ', ya que no es compatible con el código ' {1} '.", "restartCode": "Reinicie Code antes de volver a instalar {0}.", "installingOutdatedExtension": "Una versión más nueva de esta extensión ya está instalada. ¿Desea anular esto con la versión anterior?", "override": "Anular", @@ -14,12 +15,16 @@ "errorInstallingDependencies": "Error instalando dependencias. {0}", "MarketPlaceDisabled": "Marketplace no está habilitado", "removeError": "Error al quitar la extensión: {0}. Salga e inicie VS Code antes de intentarlo de nuevo.", + "Not a Marketplace extension": "Sólo se pueden reinstalar Extensiones del Marketplace", "notFoundCompatible": "No se pueden instalar '{0}'; no hay ninguna versión disponible compatible con VS Code '{1}'. ", "malicious extension": "No se puede instalar la extensión ya que se informó que era problemático.", "notFoundCompatibleDependency": "No se puede instalar porque no se encuentra la extensión dependiente '{0}' compatible con la versión actual '{1}' del VS Code.", "quitCode": "No se puede instalar la extensión. Por favor, salga e inicie VS Code antes de reinstalarlo. ", "exitCode": "No se puede instalar la extensión. Por favor, salga e inicie VS Code antes de reinstalarlo. ", + "renameError": "Error desconocido al cambiar el nombre de {0} a {1}", "uninstallDependeciesConfirmation": "¿Quiere desinstalar solo '{0}' o también sus dependencias?", + "uninstallOnly": "Sólo extensión", + "uninstallAll": "Desinstalar todo", "uninstallConfirmation": "¿Seguro que quiere desinstalar '{0}'?", "ok": "Aceptar", "singleDependentError": "No se puede desinstalar la extensión '{0}'. La extensión '{1}' depende de esta.", diff --git a/i18n/esn/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/esn/src/vs/platform/extensions/node/extensionValidator.i18n.json index 049daba800c..c38e957e55c 100644 --- a/i18n/esn/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/esn/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "No se pudo analizar el valor {0} de \"engines.vscode\". Por ejemplo, use: ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x, etc.", + "versionSyntax": "No se pudo analizar el valor de ' engines.vscode ' {0}. Utilice, por ejemplo: ^ 1.22.0, ^ 1.22. x, etc.", "versionSpecificity1": "La versión indicada en \"engines.vscode\" ({0}) no es suficientemente específica. Para las versiones de vscode anteriores a la 1.0.0, defina como mínimo la versión principal y secundaria deseadas. Por ejemplo: ^0.10.0, 0.10.x, 0.11.0, etc.", "versionSpecificity2": "La versión indicada en \"engines.vscode\" ({0}) no es suficientemente específica. Para las versiones de vscode posteriores a la 1.0.0, defina como mínimo la versión principal deseada. Por ejemplo: ^1.10.0, 1.10.x, 1.x.x, 2.x.x, etc.", "versionMismatch": "La extensión no es compatible con {0} de Code y requiere: {1}." diff --git a/i18n/esn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/esn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index e067f1c4e31..97c37f2a269 100644 --- a/i18n/esn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/esn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "La instalación de {0} parece estar dañada. Vuelva a instalar.", "integrity.moreInformation": "Más información", - "integrity.dontShowAgain": "No volver a mostrar", - "integrity.prompt": "La instalación de {0} parece estar dañada. Vuelva a instalar." + "integrity.dontShowAgain": "No volver a mostrar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/issue/electron-main/issueService.i18n.json b/i18n/esn/src/vs/platform/issue/electron-main/issueService.i18n.json index 7ed60aab299..2386e8f046d 100644 --- a/i18n/esn/src/vs/platform/issue/electron-main/issueService.i18n.json +++ b/i18n/esn/src/vs/platform/issue/electron-main/issueService.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "issueReporter": "Reportero de tema" + "issueReporter": "Reportero de tema", + "processExplorer": "Process Explorer" } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/list/browser/listService.i18n.json b/i18n/esn/src/vs/platform/list/browser/listService.i18n.json index 3c5d4431859..fd8a2daed6a 100644 --- a/i18n/esn/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/esn/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "El modificador que se usará para agregar un elemento en árboles y listas a una selección múltiple con el mouse (por ejemplo en el explorador, los editores abiertos y la vista SCM). ' ctrlCmd ' se asigna a ' control ' en Windows y Linux y a ' Command ' en macOS. Los gestos de ratón \"abrir a lado\", si se admiten, se adaptarán de tal manera que no estén en conflicto con el modificador multiselección.", "openMode.singleClick": "Abre elementos en solo clic de ratón.", "openMode.doubleClick": "Abre elementos en doble clic del ratón. ", - "openModeModifier": "Controla cómo abrir elementos en árboles y listas con el ratón (si está soportado). Establecer en ' singleClick ' para abrir elementos con un solo clic del ratón y ' DoubleClick ' para abrir sólo a través del doble clic del ratón. Para los elementos padres con hijos en los árboles, este ajuste controlará si un solo clic expande el padre o un doble clic. Tenga en cuenta que algunos árboles y listas pueden optar por ignorar esta configuración si no es aplicable" + "openModeModifier": "Controla cómo abrir elementos en árboles y listas con el ratón (si está soportado). Establecer en ' singleClick ' para abrir elementos con un solo clic del ratón y ' DoubleClick ' para abrir sólo a través del doble clic del ratón. Para los elementos padres con hijos en los árboles, este ajuste controlará si un solo clic expande el padre o un doble clic. Tenga en cuenta que algunos árboles y listas pueden optar por ignorar esta configuración si no es aplicable", + "horizontalScrolling setting": "Controla el esplazamiento horizontal de los árboles en la mesa de trabajo." } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json index 075049e313b..39139e04743 100644 --- a/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/esn/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "Color del borde en los encabezados y el divisor en conflictos de combinación alineados.", "overviewRulerCurrentContentForeground": "Primer plano de la regla de visión general actual para conflictos de combinación alineados.", "overviewRulerIncomingContentForeground": "Primer plano de regla de visión general de entrada para conflictos de combinación alineados.", - "overviewRulerCommonContentForeground": "Primer plano de la regla de visión general de ancestros comunes para conflictos de combinación alineados." + "overviewRulerCommonContentForeground": "Primer plano de la regla de visión general de ancestros comunes para conflictos de combinación alineados.", + "overviewRulerFindMatchForeground": "Destaca el color del marcador de regla para las coincidencias de búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.", + "overviewRulerSelectionHighlightForeground": "Destaca el color del marcador de regla para los puntos de selección . El color no debe ser opaco para no ocultar las decoraciones subyacentes." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/esn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..1dcbde980fd --- /dev/null +++ b/i18n/esn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "la propiedad `{0}` es obligatoria y debe ser de tipo \"string\"", + "showViewlet": "Mostrar {0}", + "view": "Ver" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 78e8984a534..fed60fe1bf0 100644 --- a/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/esn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Aporta vistas al editor", "views.explorer": "Vista del explorador", "views.debug": "Vista de depuración", - "locationId.invalid": "`{0}` no es una ubicación de vista válida", "duplicateView1": "No se pueden registrar múltiples vistas con el mismo identificador '{0}' en la ubicación '{1}'", "duplicateView2": "Una vista con el identificador '{0}' ya está registrada en la ubicación '{1}'" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 34f590266a9..754cfd39b02 100644 --- a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Anular la aplicación de formato al guardar después de {0} ms", + "timeout.onWillSave": "Se anuló onWillSaveTextDocument-event después de 1750 ms", "saveParticipants": "Ejecutando Guardar Participantes..." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 7957a5748f1..c6974979361 100644 --- a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "Editor de vistas web" + "errorMessage": "Ha ocurrido un error mientras se restauraba la vista: {0}" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json index 35229bd6699..651918c67b7 100644 --- a/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json +++ b/i18n/esn/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "extensionSource": "{0} (extensión)" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 1295b45f8c6..29cf10b5371 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,7 @@ "screenReaderDetectedExtra": "Si no va a usar un lector de pantalla, cambie el valor de configuración \"editor.accessibilitySupport\" a \"desactivado\".", "disableTabMode": "Deshabilitar modo de accesibilidad", "gotoLine": "Ir a la línea", - "indentation": "Sangría", + "selectIndentation": "Seleccione la sangría", "selectEncoding": "Seleccionar Encoding", "selectEOL": "Seleccionar secuencia de fin de línea", "selectLanguageMode": "Seleccionar modo de lenguaje", diff --git a/i18n/esn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 400b2707b25..0ca704a5b8d 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,11 @@ "sizeMB": "{0} MB", "sizeGB": "{0} GB", "sizeTB": "{0} TB", - "largeImageError": "El tamaño del archivo de la imagen es demasiado grande (> 1MB) para mostrarlo en el editor.", + "largeImageError": "La imagen no se muestra en el editor porque es demasiado grande ({0}). ", "resourceOpenExternalButton": "¿Abrir la imagen mediante un programa externo?", - "nativeBinaryError": "El archivo no se mostrará en el editor porque es binario, muy grande o usa una codificación de texto no compatible.", + "nativeFileTooLargeError": "El archivo no se muestra en el editor porque es demasiado grande ({0}). ", + "nativeBinaryError": "El archivo no se muestra en el editor porque es binario o utiliza una codificación de texto no soportada. ", + "openAsText": "¿Desea abrirlo de todas formas?", "zoom.action.fit.label": "Imagen completa", "imgMeta": "{0} x {1} {2}" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 369309aa7cb..94aeba068ee 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "No hay notificaciones nuevas", "notifications": "Notificaciones", "notificationsToolbar": "Acciones del centro de notificaciones", "notificationsList": "Lista de notificaciones" diff --git a/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..232be4ece69 --- /dev/null +++ b/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInput.countSelected": "{0} seleccionadas", + "ok": "Aceptar" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..c9120e6b4eb --- /dev/null +++ b/i18n/esn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInputBox.ariaLabel": "Escriba para restringir los resultados." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json index 8c8e17dfa93..89fe344b57b 100644 --- a/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json @@ -32,6 +32,7 @@ "openRecent": "Abrir Reciente...", "quickOpenRecent": "Abrir Reciente Rapidamente...", "reportIssueInEnglish": "Notificar problema", + "openProcessExplorer": "Abrir Explorador de Procesos", "reportPerformanceIssue": "Notificar problema de rendimiento", "keybindingsReference": "Referencia de métodos abreviados de teclado", "openDocumentationUrl": "Documentación", diff --git a/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json index 62d7de2c6f0..57d447a0a0b 100644 --- a/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "Ventana", "window.openFilesInNewWindow.on": "Los archivos se abrirán en una nueva ventana", "window.openFilesInNewWindow.off": "Los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa", + "window.openFilesInNewWindow.defaultMac": "Los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa, a menos que se abran con Dock o desde Finder.", + "window.openFilesInNewWindow.default": "Los archivos se abrirán en una nueva ventana hasta que sean llamados dentro de la aplicación (ej.: via menú Archivo)", + "openFilesInNewWindowMac": "Controla si los archivos deben abrirse en una ventana nueva.\n- default: los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa, a menos que se abran con Dock o desde Finder.\n- on: los archivos se abrirán en una ventana nueva.\n- off: los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa.\nTenga en cuenta que puede haber casos en los que se omita esta configuración (por ejemplo, cuando se utilizan las opciones de la línea de comandos -new-window o -reuse-window). ", + "openFilesInNewWindow": "Controla si los archivos deben abrirse en una ventana nueva.\n- default: los archivos se abrirán en una ventana nueva a menos que se seleccionen desde la aplicación (por ejemplo, desde el menú Archivo).\n- on: los archivos se abrirán en una ventana nueva.\n- off: los archivos se abrirán en la ventana con la carpeta de archivos abierta o en la última ventana activa.\nTenga en cuenta que puede haber casos en los que se omita esta configuración (por ejemplo, cuando se utilizan las opciones de la línea de comandos -new-window o -reuse-window).", "window.openFoldersInNewWindow.on": "Las carpetas se abrirán en una nueva ventana", "window.openFoldersInNewWindow.off": "Las carpetas reemplazarán la ventana activa más reciente", "window.openFoldersInNewWindow.default": "Las carpetas se abrirán en una nueva ventana a menos que se seleccione una carpeta desde la aplicación (p. ej. mediante el menú Archivo)", "openFoldersInNewWindow": "Controla si las carpetas deben abrirse en una ventana nueva o reemplazar la última ventana activa.\n- default: las carpetas se abrirán en una ventana nueva, a menos que se seleccione una carpeta desde la aplicación (por ejemplo, desde el menú Archivo)\n- on: las carpetas se abrirán en una ventana nueva\n- off: las carpetas reemplazarán la última ventana activa\nTenga en cuenta que aún puede haber casos en los que este parámetro se ignore (por ejemplo, al usar la opción de la línea de comandos -new-window o -reuse-window).", + "window.openWithoutArgumentsInNewWindow.on": "Abrir una nueva ventana vacía", + "window.openWithoutArgumentsInNewWindow.off": "Aplicar el foco a la última instancia en ejecución activa", + "openWithoutArgumentsInNewWindow": "Controla si debe abrirse una ventana nueva vacía cuando se inicia una segunda instancia sin argumentos o si la última instancia en ejecución debe obtener el foco.\n- on: se abre una ventana nueva vacía.\n- off: la última instancia en ejecución activa obtiene el foco.\nTenga en cuenta que puede haber casos en los que se omita esta configuración (por ejemplo, cuando se utilizan las opciones de la línea de comandos -new-window o -reuse-window).", "window.reopenFolders.all": "Reabrir todas las ventanas.", "window.reopenFolders.folders": "Reabrir todas las carpetas. Las áreas de trabajo vacías no se restaurarán.", "window.reopenFolders.one": "Reabrir la última ventana activa.", @@ -56,6 +63,7 @@ "restoreWindows": "Controla cómo se vuelven a abrir las ventanas tras un reinicio. Seleccione \"none\" para comenzar siempre con un área de trabajo vacía, \"one\" para volver a abrir la última ventana en la que trabajó, \"folders\" para volver a abrir todas las ventanas que tenían carpetas abiertas o \"all\" para volver a abrir todas las ventanas de la última sesión.", "restoreFullscreen": "Controla si una ventana se debe restaurar al modo de pantalla completa si se salió de ella en dicho modo.", "zoomLevel": "Ajuste el nivel de zoom de la ventana. El tamaño original es 0 y cada incremento (por ejemplo, 1) o disminución (por ejemplo, -1) representa una aplicación de zoom un 20 % más grande o más pequeño. También puede especificar decimales para ajustar el nivel de zoom con una granularidad más precisa.", + "title": "Controla el título de la ventana en función del editor activo. Las variables se reemplazan según el contexto:\n${activeEditorShort}: nombre del archivo (por ejemplo, miArchivo.txt).\n${activeEditorMedium}: ruta de acceso del archivo relativa a la carpeta del área de trabajo (por ejemplo, miCarpeta/miArchivo.txt).\n${activeEditorLong}: ruta de acceso completa del archivo (por ejemplo, /Usuarios/Desarrollo/miProyecto/miCarpeta/miArchivo.txt).\n${folderName}: nombre de la carpeta del área de trabajo que contiene el archivo (por ejemplo, miCarpeta).\n${folderPath}: ruta de acceso de la carpeta del área de trabajo que contiene el archivo (por ejemplo, /Usuarios/Desarrollo/miCarpeta).\n${rootName}: nombre del área de trabajo (por ejemplo, miCarpeta o miÁreaDeTrabajo).\n${rootPath}: ruta de acceso del área de trabajo (por ejemplo, /Usuarios/Desarrollo/miÁreaDeTrabajo).\n${appName}: nombre de la aplicación (por ejemplo, VS Code).\n${dirty}: indicador de modificaciones si se han realizado cambios en el editor activo.\n${separator}: separador condicional (\" - \") que solo se muestra cuando está rodeado de variables con valores o texto estático.", "window.newWindowDimensions.default": "Abrir las nuevas ventanas en el centro de la pantalla.", "window.newWindowDimensions.inherit": "Abrir las nuevas ventanas con la misma dimensión que la última activa.", "window.newWindowDimensions.maximized": "Abrir las nuevas ventanas maximizadas.", @@ -71,6 +79,8 @@ "autoDetectHighContrast": "Si está habilitado, se cambiará automáticamente al tema de contraste alto si Windows utiliza un tema de contraste alto, y al tema oscuro si cambia desde un tema de contraste alto de Windows.", "titleBarStyle": "Ajuste la apariencia de la barra de título de la ventana. Se debe realizar un reinicio completo para aplicar los cambios.", "window.nativeTabs": "Habilita las fichas de ventana en macOS Sierra. Note que los cambios requieren que reinicie el equipo y las fichas nativas deshabilitan cualquier estilo personalizado que haya configurado.", + "window.smoothScrollingWorkaround": "Habilite esta solución alternativa si el desplazamiento deja de ser homogéneo después de restaurar una ventana de VS Code minimizada. Esta es una solución para un problema (https://github.com/Microsoft/vscode/issues/13612) en el que el desplazamiento comienza a sufrir interrupciones en dispositivos con panel táctil de precisión, como los dispositivos Surface de Microsoft. Al habilitar esta solución alternativa, puede parpadear ligeramente la distribución después de restaurar la ventana minimizada, pero no afecta a nada más.", + "window.clickThroughInactive": "Si está habilitado, haciendo clic en una ventana inactiva, activará dicha ventana y disparará el elemento bajo el cursor del ratón si éste es clicable. Si está deshabilitado, haciendo clic en cualquier lugar en una ventana inactiva, solo activará la misma y será necesario un segundo clic en el elemento. ", "zenModeConfigurationTitle": "Modo zen", "zenMode.fullScreen": "Controla si activar el modo Zen pone también el trabajo en modo de pantalla completa.", "zenMode.centerLayout": "Controla si al encender el Modo Zen también se centra el diseño.", diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 19e1e0cc44d..bde7768bba1 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Editar punto de interrupción...", + "breakpoint": "Punto de interrupción", "functionBreakpointsNotSupported": "Este tipo de depuración no admite puntos de interrupción en funciones", "functionBreakpointPlaceholder": "Función donde interrumpir", "functionBreakPointInputAriaLabel": "Escribir punto de interrupción de función", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Punto de interrupción no comprobado", "functionBreakpointUnsupported": "Este tipo de depuración no admite puntos de interrupción en funciones", "breakpointDirtydHover": "Punto de interrupción no comprobado. El archivo se ha modificado, reinicie la sesión de depuración.", + "logBreakpointUnsupported": "Este tipo de depuración no admite puntos de registro", "conditionalBreakpointUnsupported": "Este tipo de depuración no es compatible con los puntos de interrupción condicionales.", "hitBreakpointUnsupported": "Este tipo de depuración no admite el uso de puntos de interrupción condicionales" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 77f54a5e29f..83395706f58 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Depuración: Alternar punto de interrupción", "conditionalBreakpointEditorAction": "Depuración: agregar punto de interrupción condicional...", + "logPointEditorAction": "Depurar: agregar punto de registro...", "runToCursor": "Ejecutar hasta el cursor", "debugEvaluate": "Depuración: Evaluar", "debugAddToWatch": "Depuración: Agregar a inspección", diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 72b3d080b9d..3da9af08237 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "Interrumpir cuando se alcance el número de llamadas. Presione \"ENTRAR\" para aceptar o \"Esc\" para cancelar.", "breakpointWidgetExpressionPlaceholder": "Interrumpir cuando la expresión se evalúa como true. Presione \"ENTRAR\" para aceptar o \"Esc\" para cancelar.", - "breakpointWidgetHitCountAriaLabel": "El programa solo se detendrá aquí si se alcanza el número de llamadas. Presione ENTRAR para aceptar o Esc para cancelar.", - "breakpointWidgetAriaLabel": "El programa solo se detendrá aquí si esta condición es true. Presione ENTRAR para aceptar o Esc para cancelar.", "expression": "Expresión", - "hitCount": "Número de llamadas" + "hitCount": "Número de llamadas", + "logMessage": "Mensaje de registro" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 64d4f38579f..779210b4ba7 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Por favor utilice nombres de configuración exclusivos.", "app.launch.json.compound.folder": "Nombre de la carpeta en la que se encuentra el compuesto.", "app.launch.json.compounds.configurations": "Nombres de las configuraciones que se iniciarán como parte de este elemento compuesto.", - "debugNoType": "El valor \"type\" del adaptador de depuración no se puede omitir y debe ser de tipo \"string\".", "selectDebug": "Seleccionar entorno", "DebugConfig.failed": "No se puede crear el archivo \"launch.json\" dentro de la carpeta \".vscode\" ({0}).", "workspace": "espacio de trabajo", diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 1c8d3ad1e17..3ff917571be 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Editar punto de interrupción...", - "disableBreakpoint": "Deshabilitar punto de interrupción", - "enableBreakpoint": "Habilitar punto de interrupción", + "breakpoint": "Punto de interrupción", "removeBreakpoints": "Quitar puntos de interrupción", "removeBreakpointOnColumn": "Quitar punto de interrupción en la columna {0}", "removeLineBreakpoint": "Quitar punto de interrupción de línea", @@ -21,6 +19,8 @@ "enableBreakpoints": "Habilitar punto de interrupción en la columna {0}", "enableBreakpointOnLine": "Habilitar punto de interrupción de línea", "addBreakpoint": "Agregar punto de interrupción", - "conditionalBreakpoint": "Agregar punto de interrupción condicional...", + "addConditionalBreakpoint": "Agregar punto de interrupción condicional...", + "addLogPoint": "Agregar punto de registro...", + "cancel": "Cancelar", "addConfiguration": "Agregar configuración..." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 98205ab953f..d28e2c7b8c0 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,5 +29,6 @@ "showErrors": "Mostrar errores", "noFolderWorkspaceDebugError": "El archivo activo no se puede depurar. Compruebe que se ha guardado en el disco y que tiene una extensión de depuración instalada para ese tipo de archivo.", "cancel": "Cancelar", - "DebugTaskNotFound": "No se pudo encontrar la tarea '{0}'." + "DebugTaskNotFound": "No se pudo encontrar la tarea '{0}'.", + "taskNotTracked": "La tarea '{0}' no puede rastrearse." } \ No newline at end of file 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 48c3d79a0dd..f5edde234b9 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Más información", - "unableToLaunchDebugAdapter": "No se puede iniciar el adaptador de depuración desde '{0}'.", - "unableToLaunchDebugAdapterNoArgs": "No se puede iniciar el adaptador de depuración.", - "stoppingDebugAdapter": "{0}. Deteniendo el adaptador de depuración.", "debugAdapterCrash": "El proceso de adaptación del depurador finalizó inesperadamente" } \ No newline at end of file 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 2bceb504035..3055932755f 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "El ejecutable del adaptador de depuración \"{0}\" no existe.", "debugAdapterCannotDetermineExecutable": "No se puede determinar el ejecutable para el adaptador de depuración \"{0}\".", - "launch.config.comment1": "Utilizar IntelliSense para aprender acerca de los posibles atributos.", - "launch.config.comment2": "Mantenga el puntero para ver las descripciones de los existentes atributos ", - "launch.config.comment3": "Para más información, visite: {0}", - "debugType": "Tipo de configuración.", - "debugTypeNotRecognised": "Este tipo de depuración no se reconoce. Compruebe que tiene instalada la correspondiente extensión de depuración y que está habilitada.", - "node2NotSupported": "\"node2\" ya no se admite; use \"node\" en su lugar y establezca el atributo \"protocol\" en \"inspector\".", - "debugName": "Nombre de la configuración. Aparece en el menú desplegable de la configuración de inicio.", - "debugRequest": "Tipo de solicitud de la configuración. Puede ser \"launch\" o \"attach\".", - "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", - "debugPrelaunchTask": "Tarea que se va a ejecutar antes de iniciarse la sesión de depuración.", - "debugWindowsConfiguration": "Atributos de configuración de inicio específicos de Windows.", - "debugOSXConfiguration": "Atributos de configuración de inicio específicos de OS X.", - "debugLinuxConfiguration": "Atributos de configuración de inicio específicos de Linux.", - "deprecatedVariables": "\"env.\", \"config.\" y \"command.\" están en desuso, utilice en su lugar \"env:\", \"config:\" y \"command:\"." + "unableToLaunchDebugAdapter": "No se puede iniciar el adaptador de depuración desde '{0}'.", + "unableToLaunchDebugAdapterNoArgs": "No se puede iniciar el adaptador de depuración." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..b916d2192fa --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Utilizar IntelliSense para aprender acerca de los posibles atributos.", + "launch.config.comment2": "Mantenga el puntero para ver las descripciones de los existentes atributos ", + "launch.config.comment3": "Para más información, visite: {0}", + "debugType": "Tipo de configuración.", + "debugTypeNotRecognised": "Este tipo de depuración no se reconoce. Compruebe que tiene instalada la correspondiente extensión de depuración y que está habilitada.", + "node2NotSupported": "\"node2\" ya no se admite; use \"node\" en su lugar y establezca el atributo \"protocol\" en \"inspector\".", + "debugName": "Nombre de la configuración. Aparece en el menú desplegable de la configuración de inicio.", + "debugRequest": "Tipo de solicitud de la configuración. Puede ser \"launch\" o \"attach\".", + "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", + "debugPrelaunchTask": "Tarea que se va a ejecutar antes de iniciarse la sesión de depuración.", + "debugPostDebugTask": "Tarea que se ejecutará después de terminar la sesión de depuración.", + "debugWindowsConfiguration": "Atributos de configuración de inicio específicos de Windows.", + "debugOSXConfiguration": "Atributos de configuración de inicio específicos de OS X.", + "debugLinuxConfiguration": "Atributos de configuración de inicio específicos de Linux.", + "deprecatedVariables": "\"env.\", \"config.\" y \"command.\" están en desuso, utilice en su lugar \"env:\", \"config:\" y \"command:\"." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..ec6803b438e --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "Consola de VS Code", + "mac.terminal.script.failed": "No se pudo ejecutar el script '{0}'. Código de salida: {1}.", + "mac.terminal.type.not.supported": "No se admite '{0}'", + "press.any.key": "Presione cualquier tecla para continuar...", + "linux.term.failed": "Error de '{0}' con el código de salida {1}" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index d1cf9483c41..695af76fade 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "Configurar extensiones recomendadas (Carpeta del área de trabajo)", "malicious tooltip": "Se informó de que esta extensión era problemática.", "malicious": "Malintencionado", + "disabled": "Deshabilitado", + "disabled globally": "Deshabilitado", + "disabled workspace": "Deshabilitado para esta área de trabajo", "disableAll": "Deshabilitar todas las extensiones instaladas", "disableAllWorkspace": "Deshabilitar todas las extensiones instaladas para esta área de trabajo", "enableAll": "Habilitar todas las extensiones", diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 21701a2c2dd..9945b32ea23 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -36,13 +36,16 @@ "view location": "Donde", "localizations": "Localizaciones ({0}) ", "localizations language id": "ID. de idioma", - "localizations language name": "Nombre de idioma", - "localizations localized language name": "Nombre de idioma (localizado)", + "colorThemes": "Temas de color ({0})", + "iconThemes": "Temas de icono ({0})", + "colors": "Colores ({0})", + "colorId": "Id", "defaultDark": "Oscuro por defecto", "defaultLight": "Claro por defecto", "defaultHC": "Contraste alto por defecto", "JSON Validation": "Validación JSON ({0})", "fileMatch": "Coincidencia de archivo", + "schema": "Esquema", "commands": "Comandos ({0})", "command name": "Nombre", "keyboard shortcuts": "Métodos abreviados de teclado", diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 7a8e29d1760..1bc6e380146 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Esta extensión es recomendada por los usuarios del espacio de trabajo actual.", "reallyRecommended2": "La extension recomendada para este tipo de archivo es {0}", "reallyRecommendedExtensionPack": "Para este tipo de fichero, se recomienda el paquete de extensión '{0}'.", - "showRecommendations": "Mostrar recomendaciones", "install": "Instalar", + "showRecommendations": "Mostrar recomendaciones", "showLanguageExtensions": "El Marketplace tiene extensiones que pueden ayudar con '. {0} ' archivos ", "workspaceRecommended": "Esta área de trabajo tiene recomendaciones de extensión.", "installAll": "Instalar todo", diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 598580cdc04..a14a5510a07 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "¿Quiere deshabilitar otras asignaciones de teclas ({0}) para evitar conflictos entre enlaces de teclado?", "yes": "Sí", - "no": "No", - "betterMergeDisabled": "La extensión Mejor combinación está ahora integrada, la extensión instalada se deshabilitó y no se puede desinstalar.", - "uninstall": "Desinstalación" + "no": "No" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 896424f6a2c..a44cd55d9ca 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,9 @@ "recommendedExtensions": "Recomendado", "otherRecommendedExtensions": "Otras recomendaciones", "workspaceRecommendedExtensions": "Recomendaciones de espacio de trabajo", + "builtInExtensions": "Características", + "builtInThemesExtensions": "Temas", + "builtInBasicsExtensions": "Lenguajes de programación", "searchExtensions": "Buscar extensiones en Marketplace", "sort by installs": "Criterio de ordenación: Número de instalaciones", "sort by rating": "Criterio de ordenación: Clasificación", diff --git a/i18n/esn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index e7856c7726a..1a94d955a1e 100644 --- a/i18n/esn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,6 +8,8 @@ ], "textFileEditor": "Editor de archivos de texto", "createFile": "Crear archivo", + "relaunchWithIncreasedMemoryLimit": "Reiniciar con {0} MB", + "configureMemoryLimit": "Configurar el límite de memoria", "fileEditorWithInputAriaLabel": "{0}. Editor de archivos de texto.", "fileEditorAriaLabel": "Editor de archivos de texto." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index b540790d3f3..9cb57c08e43 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,17 @@ "confirmMoveTrashMessageMultiple": "¿Está seguro de que desea eliminar los siguientes archivos {0}?", "confirmMoveTrashMessageFolder": "¿Está seguro de que desea eliminar '{0}' y su contenido?", "confirmMoveTrashMessageFile": "¿Está seguro de que desea eliminar '{0}'?", + "undoBin": "Se puede restaurar de la papelera de reciclaje.", + "undoTrash": "Se puede restaurar de la papelera.", "doNotAskAgain": "No volver a preguntarme", "confirmDeleteMessageMultiple": "¿Está seguro de que desea eliminar de forma permanente los siguientes archivos {0}?", "confirmDeleteMessageFolder": "¿Está seguro de que desea eliminar '{0}' y su contenido de forma permanente?", "confirmDeleteMessageFile": "¿Está seguro de que desea eliminar '{0}' de forma permanente?", "irreversible": "Esta acción es irreversible.", - "importFiles": "Importar archivos", + "binFailed": "Error al eliminar usando la papelera de reciclaje. ¿Desea eliminar de forma permanente en su lugar?", + "trashFailed": "No se pudo eliminar usando la papelera. ¿Desea eliminar de forma permanente?", + "deletePermanentlyButtonLabel": "&&Eliminar de forma permanente", + "retryButtonLabel": "&&Reintentar", "confirmOverwrite": "Ya existe un archivo o carpeta con el mismo nombre en la carpeta de destino. ¿Quiere reemplazarlo?", "replaceButtonLabel": "&&Reemplazar", "fileIsAncestor": "El archivo que se va a pegar es un antecesor de la carpeta de destino", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 93ee0518a0b..6a280847cb6 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "El modo de lenguaje predeterminado que se asigna a nuevos archivos.", "editorConfigurationTitle": "Editor", "formatOnSave": "Formatea un archivo al guardarlo. Debe haber un formateador disponible, el archivo no debe guardarse automáticamente y el editor no debe estar cerrándose.", + "formatOnSaveTimeout": "Tiempo de espera de aplicación de formato al guardar. Especifica un límite de tiempo en milisegundos para los comandos formatOnSave. Los comandos que tarden más del tiempo de espera especificado se cancelarán.", "explorerConfigurationTitle": "Explorador de archivos", "openEditorsVisible": "Número de editores mostrados en el panel de editores abiertos.", "autoReveal": "Controla si el explorador debe mostrar y seleccionar automáticamente los archivos al abrirlos.", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 1bcad541fa7..2a357906cfb 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Escriba el nombre de archivo. Presione ENTRAR para confirmar o Esc para cancelar", - "constructedPath": "Crear {0} en **{1}**", "filesExplorerViewerAriaLabel": "{0}, Explorador de archivos", "dropFolders": "¿Quiere agregar las carpetas al área de trabajo?", "dropFolder": "¿Quiere agregar la carpeta al área de trabajo?", "addFolders": "&&Agregar carpetas", "addFolder": "&&Agregar carpeta", + "confirmRootsMove": "¿Está seguro de que quiere cambiar el orden de varias carpetas raíz en el área de trabajo?", "confirmMultiMove": "¿Está seguro de que desea mover los siguientes archivos {0}?", + "confirmRootMove": "¿Está seguro de que quiere cambiar el orden de la carpeta raíz \"{0}\" en el área de trabajo?", "confirmMove": "¿Está seguro de que desea mover '{0}'?", "doNotAskAgain": "No volver a preguntarme", "moveButtonLabel": "&&Mover", diff --git a/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 8d320c3e36d..6fd49793b66 100644 --- a/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "¿Desea cambiar el idioma de la interfaz de usuario de VS Code a {0} y reiniciar la aplicación?", "yes": "Sí", "no": "No", - "doNotAskAgain": "No volver a preguntarme", + "neverAgain": "No volver a mostrar", "JsonSchema.locale": "Idioma de la interfaz de usuario que debe usarse.", "vscode.extension.contributes.localizations": "Contribuye a la localización del editor", "vscode.extension.contributes.localizations.languageId": "Identificador del idioma en el que se traducen las cadenas de visualización.", diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 710a643d6e8..57024a086ac 100644 --- a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "Copiar", - "copyMarkerMessage": "Copiar mensaje" + "copyMessage": "Copiar mensaje" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 4e534a88b7c..8323facb36a 100644 --- a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Total {0} Problemas", - "filteredProblems": "Mostrando {0} de {1} problemas" + "totalProblems": "Total {0} Problemas" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index eab6272315a..e7f7ed6b7d1 100644 --- a/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Problemas", "markers.panel.aria.label.problems.tree": "Problemas agrupados por archivos", "markers.panel.no.problems.build": "Hasta el momento, no se encontraron problemas en el área de trabajo.", - "markers.panel.no.problems.filters": "No se encontraron resultados con los criterios de filtro proporcionados", "markers.panel.action.filter": "Filtrar problemas", - "markers.panel.filter.placeholder": "Filtrar por tipo o texto", + "markers.panel.filter.ariaLabel": "Filtrar problemas", "markers.panel.filter.errors": "errores", "markers.panel.filter.warnings": "advertencias", "markers.panel.filter.infos": "informaciones", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "{0} desconocidos", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} con {1} problemas", + "problems.tree.aria.label.marker.relatedInformation": " Este problema tiene referencias a ubicaciones de {0}.", + "problems.tree.aria.label.error.marker": "Error generado por {0}: {1} en la línea {2} y el carácter {3}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Error: {0} en la línea {1} y el carácter {2}.{3}", + "problems.tree.aria.label.warning.marker": "Advertencia generada por {0}: {1} en la línea {2} y el carácter {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Advertencia: {0} en la línea {1} y el carácter {2}.{3}", + "problems.tree.aria.label.info.marker": "Información generada por {0}: {1} en la línea {2} y el carácter {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Información: {0} en la línea {1} y el carácter {2}.{3}", + "problems.tree.aria.label.marker": "Problema generado por {0}: {1} en la línea {2} y el carácter {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Problema: {0} en la línea {1} y el carácter {2}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{0} en la línea {1} y el carácter {2} en {3}", "errors.warnings.show.label": "Mostrar errores y advertencias" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/esn/src/vs/workbench/parts/output/browser/outputActions.i18n.json index d799d3d1934..0c741775e1f 100644 --- a/i18n/esn/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Alternar salida", "clearOutput": "Borrar salida", "toggleOutputScrollLock": "Alternar Bloq Despl salida", - "switchToOutput.label": "Cambiar a salida" + "switchToOutput.label": "Cambiar a salida", + "openInLogViewer": "Abrir archivo de registro" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index d0ee7119bb7..1ce77e76c3f 100644 --- a/i18n/esn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Salida", "logViewer": "Visor de registros", "viewCategory": "Ver", - "clearOutput.label": "Borrar salida" + "clearOutput.label": "Borrar salida", + "openActiveLogOutputFile": "Ver: abrir el archivo de salida del registro activo" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index b0f61204eeb..634545e1c6f 100644 --- a/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Métodos abreviados de teclado", + "showDefaultKeybindings": "Mostrar enlaces de teclado predeterminados", + "showUserKeybindings": "Mostrar enlaces de teclado del usuario", "SearchKeybindings.AriaLabel": "Buscar enlaces de teclado", "SearchKeybindings.Placeholder": "Buscar enlaces de teclado", "sortByPrecedene": "Ordenar por procedimiento", diff --git a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index 61b308ae32d..33e1d8a94d2 100644 --- a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Abrir Configuración Predeterminada Raw", + "openSettings": "Abrir configuración", "openGlobalSettings": "Abrir configuración de usuario", "openGlobalKeybindings": "Abrir métodos abreviados de teclado", "openGlobalKeybindingsFile": "Abrir el archivo de métodos abreviados de teclado", diff --git a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index af8a30c82d9..2c40cb00195 100644 --- a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Configuración predeterminada", "SearchSettingsWidget.AriaLabel": "Buscar configuración", "SearchSettingsWidget.Placeholder": "Buscar configuración", "noSettingsFound": "Sin resultados", @@ -16,6 +15,8 @@ "nlpResult": "Resultados en lenguaje natural", "filterResult": "Resultados filtrados", "defaultSettings": "Configuración predeterminada", + "defaultUserSettings": "Configuración predeterminada de usuario", + "defaultWorkspaceSettings": "Configuración de espacio de trabajo predeterminado", "defaultFolderSettings": "Configuración de carpeta predeterminada", "defaultEditorReadonly": "Editar en el editor de lado de mano derecha para reemplazar valores predeterminados.", "preferencesAriaLabel": "Preferencias predeterminadas. Editor de texto de solo lectura." diff --git a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index e70951fbef4..98610852f74 100644 --- a/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Mostrar extensión \"{0}\"", "editTtile": "Editar", "replaceDefaultValue": "Reemplazar en Configuración", - "copyDefaultValue": "Copiar en Configuración", - "unsupportedPHPExecutablePathSetting": "Este valor debe estar en la configuración de usuario. Si quiere configurar PHP para el área de trabajo, abra un archivo PHP y haga clic en \"Ruta de acceso PHP\" en la barra de estado.", - "unsupportedWorkspaceSetting": "Este valor debe estar en Configuración de usuario.", - "unsupportedWorkbenchSetting": "Esta configuración no se puede aplicar ahora. Se aplicará al abrir esta carpeta directamente.", - "unsupportedWorkbenchSettingDevMode": "Esta configuración no se puede aplicar ahora. Se aplicará si se define su alcance como 'recurso' o al abrir esta carpeta directamente. " + "copyDefaultValue": "Copiar en Configuración" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 4f4ee6b527a..67ddbe8f8cd 100644 --- a/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "Instalar proveedores adicionales de SCM...", "no open repo": "No hay proveedores de control de código fuente activos.", "source control": "Control de código fuente", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Ocultar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json index e69218c998b..c7dc8145a23 100644 --- a/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Mostrar siguiente búsqueda de patrón include", "previousSearchIncludePattern": "Mostrar búsqueda anterior de patrón include ", + "nextSearchExcludePattern": "Mostrar siguiente búsqueda de patrón exclude ", + "previousSearchExcludePattern": "Mostrar búsqueda anterior de patrón exclude ", "nextSearchTerm": "Mostrar siguiente término de búsqueda", "previousSearchTerm": "Mostrar anterior término de búsqueda", - "showSearchViewlet": "Mostrar búsqueda", "findInFiles": "Buscar en archivos", "replaceInFiles": "Reemplazar en archivos", "RefreshAction.label": "Actualizar", diff --git a/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json index be513ebe447..0c3d29ae593 100644 --- a/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Alternar detalles de la búsqueda", + "searchScope.includes": "archivos para incluir", + "label.includes": "Buscar patrones de inclusión", + "searchScope.excludes": "archivos para excluir", + "label.excludes": "Buscar patrones de exclusión", "replaceAll.confirmation.title": "Reemplazar todo", "replaceAll.confirm.button": "&&Reemplazar", "replaceAll.occurrence.file.message": "{0} aparición reemplazada en {1} archivo por \"{2}\".", diff --git a/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 1cb9f6c349e..fc682127315 100644 --- a/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Buscar", + "copyMatchLabel": "Copiar", + "copyPathLabel": "Copiar ruta de acceso", + "copyAllLabel": "Copiar todo", "findInFolder": "Buscar en carpeta...", "findInWorkspace": "Buscar en área de trabajo...", "showTriggerActions": "Ir al símbolo en el área de trabajo...", "name": "Buscar", - "search": "Buscar", "showSearchViewl": "Mostrar búsqueda", "view": "Ver", "findInFiles": "Buscar en archivos", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Configurar para incluir los resultados de una búsqueda global de símbolos en los resultados de archivos de Quick Open.", "search.followSymlinks": "Controla si debe seguir enlaces simbólicos durante la búsqueda.", "search.smartCase": "Proporciona busquedas de mayúsculas y minúsculas si el patrón es todo en minúsculas, de lo contrario, busca en mayúsculas y minúsculas", - "search.globalFindClipboard": "Controla si la vista de búsqueda debe leer o modificar el portapapeles de búsqueda compartido en macOS", - "search.location": "Vista previa: controla si se muestra la búsqueda como una vista en la barra lateral o como un panel en el área de paneles para tener más espacio horizontal. En la próxima versión, la búsqueda en panel tendrá una distribución horizontal mejorada y dejará de ser una vista previa." + "search.globalFindClipboard": "Controla si la vista de búsqueda debe leer o modificar el portapapeles de búsqueda compartido en macOS" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 4022b41aaf8..e9c92ac0b0e 100644 --- a/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Ayúdenos a mejorar nuestro soporte para {0}", "takeShortSurvey": "Realizar una breve encuesta", "remindLater": "Recordármelo más tarde", - "neverAgain": "No volver a mostrar", - "helpUs": "Ayúdenos a mejorar nuestro soporte para {0}" + "neverAgain": "No volver a mostrar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 91318e8e66f..33ec507b93f 100644 --- a/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "¿Le importaría realizar una breve encuesta de opinión?", "takeSurvey": "Realizar encuesta", "remindLater": "Recordármelo más tarde", - "neverAgain": "No volver a mostrar", - "surveyQuestion": "¿Le importaría realizar una breve encuesta de opinión?" + "neverAgain": "No volver a mostrar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 485b6c325bf..c4a0654df75 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Patrón de problema o nombre de un patrón de problema que se ha aportado o predefinido. Se puede omitir si se especifica la base.", "ProblemMatcherSchema.base": "Nombre de un buscador de coincidencias de problemas base que se va a usar.", "ProblemMatcherSchema.owner": "Propietario del problema dentro de Code. Se puede omitir si se especifica \"base\". Si se omite y no se especifica \"base\", el valor predeterminado es \"external\".", + "ProblemMatcherSchema.source": "Una cadena legible que describe la fuente de este diagnóstico, por ejemplo 'Inicio' o 'super pelusa'.", "ProblemMatcherSchema.severity": "Gravedad predeterminada para los problemas de capturas. Se usa si el patrón no define un grupo de coincidencias para \"severity\".", "ProblemMatcherSchema.applyTo": "Controla si un problema notificado en un documento de texto se aplica solamente a los documentos abiertos, cerrados o a todos los documentos.", "ProblemMatcherSchema.fileLocation": "Define cómo deben interpretarse los nombres de archivo notificados en un patrón de problema.", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 41e40ef4d29..4f1f33161a7 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "No asigna la tarea a ningún grupo", "JsonSchema.tasks.group": "Define a qué grupo de ejecución pertenece esta tarea. Admite \"compilación\" para agregarla al grupo de compilación y \"prueba\" para agregarla al grupo de prueba.", "JsonSchema.tasks.type": "Define si la tarea se ejecuta como un proceso o como un comando dentro de in shell. ", + "JsonSchema.command.quotedString.value": "El valor actual del comando", + "JsonSchema.tasks.quoting.escape": "Carácteres de escape usan el carácter de escape de la linea de comandos (ej.: ' en PowerShell y \\ en Bash)", + "JsonSchema.tasks.quoting.strong": "Cita el argumento usando el carácter de citación doble de la linea de comandos (ej.: \" en PowerShell y Bash) ", + "JsonSchema.tasks.quoting.weak": "Cita el argumento usando el carácter de citación simple de la linea de comandos (ej.: ' en PowerShell y Bash) ", + "JsonSchema.command.quotesString.quote": "Cómo el valor del comando debería ser citado", "JsonSchema.command": "El comando que se va a ejecutar. Puede ser un programa externo o un comando shell.", + "JsonSchema.args.quotedString.value": "El valor actual del argumento", + "JsonSchema.args.quotesString.quote": "Cómo el valor del argumento debería ser citado ", "JsonSchema.tasks.args": "Argumentos que se pasan al comando cuando se invoca esta tarea.", "JsonSchema.tasks.label": "Etiqueta de interfaz de usuario de la tarea", "JsonSchema.version": "El número de versión de la configuración.", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index fb8b41d8a5e..870798c942c 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,7 +11,9 @@ "totalErrors": "{0} errores", "totalWarnings": "{0} advertencias", "totalInfos": "{0} informaciones", + "problems": "Problemas", "building": "Compilando...", + "manyProblems": "+10Mil", "runningTasks": "Mostrar tareas en ejecución", "tasks": "Tareas", "TaskSystem.noHotSwap": "Cambiar el motor de ejecución de tareas con una tarea activa ejecutandose, requiere recargar la ventana", @@ -29,8 +31,8 @@ "selectProblemMatcher": "Seleccione qué tipo de errores y advertencias deben buscarse durante el examen de la salida de la tarea", "customizeParseErrors": "La configuración actual de tareas contiene errores. Antes de personalizar una tarea, corrija los errores.", "moreThanOneBuildTask": "Hay muchas tareas de compilación definidas en el archivo tasks.json. Se ejecutará la primera.\n", - "TaskSystem.activeSame.background": "La tarea \"{0}\" ya está activa en segundo plano. Para terminarla, use la opción \"Terminar tarea\" del menú Tareas.", - "TaskSystem.activeSame.noBackground": "La tarea \"{0}\" ya está activa. Para terminarla, use la opción \"Terminar tarea\" del menú Tareas.", + "terminateTask": "Finalizar tarea", + "restartTask": "Reiniciar tarea", "TaskSystem.active": "Ya hay una tarea en ejecución. Finalícela antes de ejecutar otra tarea.", "TaskSystem.restartFailed": "No se pudo terminar y reiniciar la tarea {0}", "TaskService.noConfiguration": "Error: La detección de tarea {0} no encontró una tarea para la siguiente configuración:\n{1}\nLa tarea será omitida.\n", @@ -47,8 +49,8 @@ "recentlyUsed": "Tareas usadas recientemente", "configured": "tareas configuradas", "detected": "tareas detectadas", - "TaskService.notAgain": "No volver a mostrar", "TaskService.ignoredFolder": "Las siguientes carpetas del área de trabajo se omitirán porque utilizan la versión 0.1.0 de la tarea: {0}", + "TaskService.notAgain": "No volver a mostrar", "TaskService.pickRunTask": "Seleccione la tarea a ejecutar", "TaslService.noEntryToRun": "No se encontraron tareas para ejecutar. Configurar tareas...", "TaskService.fetchingBuildTasks": "Obteniendo tareas de compilación...", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 6769f7d66e8..c53edb70544 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Advertencia: options.cwd debe ser de tipo cadena. Se ignora el valor {0}.", + "ConfigurationParser.inValidArg": "Error: el argumento del comando debe ser una cadena de texto o una cadena de texto citada. El valor provisto es: [0]", "ConfigurationParser.noargs": "Error: Los argumentos de comando deben ser una matriz de cadenas. El valor proporcionado es: {0}", "ConfigurationParser.noShell": "Advertencia: La configuración del shell solo se admite al ejecutar tareas en el terminal.", "ConfigurationParser.noName": "Error: El buscador de coincidencias de problemas del ámbito de declaración debe tener un nombre: {0}", diff --git a/i18n/esn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..452c57e6943 --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "El color de fondo del terminal, esto permite colorear el terminal de forma diferente al panel.", + "terminal.foreground": "El color de primer plano del terminal.", + "terminalCursor.foreground": "Color de primer plano del cursor del terminal.", + "terminalCursor.background": "Color de fondo del cursor del terminal. Permite personalizar el color de un carácter solapado por un cursor de bloque.", + "terminal.selectionBackground": "Color de fondo de selección del terminal.", + "terminal.border": "Color del borde que separa paneles divididos en el terminal. El valor predeterminado es panel.border.", + "terminal.ansiColor": "color ANSI ' {0} ' en el terminal." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 1c13a74b033..9861595bf78 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -21,6 +21,7 @@ "workbench.action.terminal.newWorkspacePlaceholder": "Seleccione el directorio de trabajo actual para el nuevo terminal", "workbench.action.terminal.newInActiveWorkspace": "Crear nuevo terminal integrado (en el espacio de trabajo activo)", "workbench.action.terminal.split": "Dividir terminal", + "workbench.action.terminal.splitInActiveWorkspace": "Dividir Terminal (En el espacio de trabajo activo)", "workbench.action.terminal.focusPreviousPane": "Aplicar el foco al panel anterior", "workbench.action.terminal.focusNextPane": "Aplicar el foco al panel siguiente", "workbench.action.terminal.resizePaneLeft": "Cambiar el tamaño del panel por la izquierda", @@ -43,6 +44,7 @@ "workbench.action.terminal.scrollUpPage": "Desplazar hacia arriba (página)", "workbench.action.terminal.scrollToTop": "Desplazar al principio", "workbench.action.terminal.clear": "Borrar", + "workbench.action.terminal.clearSelection": "Borrar selección", "workbench.action.terminal.allowWorkspaceShell": "Permitir la configuración del área de trabajo Shell", "workbench.action.terminal.disallowWorkspaceShell": "No permitir la configuración del área de trabajo Shell", "workbench.action.terminal.rename": "Cambiar nombre", @@ -51,5 +53,9 @@ "workbench.action.terminal.hideFindWidget": "Ocultar Encontrar Widget", "nextTerminalFindTerm": "Mostrar siguiente término de búsqueda", "previousTerminalFindTerm": "Mostrar término de búsqueda anterior", - "quickOpenTerm": "Cambiar terminal activo" + "quickOpenTerm": "Cambiar terminal activo", + "workbench.action.terminal.scrollToPreviousCommand": "Desplácese al comando anterior", + "workbench.action.terminal.scrollToNextCommand": "Desplácese al siguiente comando", + "workbench.action.terminal.selectToPreviousCommand": "Seleccionar hasta el comando anterior", + "workbench.action.terminal.selectToNextCommand": "Seleccionar hasta el comando siguiente" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 330fde9328b..0b35aeabe88 100644 --- a/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Esta área de trabajo contiene valores de configuración que solo se pueden establecer en Configuración de usuario ({0}). Haga clic [aquí]({1}) para obtener más información.", "openWorkspaceSettings": "Abrir configuración del área de trabajo", - "dontShowAgain": "No volver a mostrar", - "unsupportedWorkspaceSettings": "Esta área de trabajo contiene valores de configuración que solo se pueden establecer en Configuración de usuario ({0}). Haga clic [aquí]({1}) para obtener más información." + "dontShowAgain": "No volver a mostrar" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index b9e27a328d5..2c980e5c8fe 100644 --- a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Más tarde", "releaseNotes": "Notas de la versión", "showReleaseNotes": "Mostrar las notas de la versión", "read the release notes": "{0} v{1}. ¿Quiere leer las notas de la versión?", @@ -16,13 +15,14 @@ "updateIsReady": "Nueva actualización de {0} disponible.", "noUpdatesAvailable": "Actualmente, no hay actualizaciones disponibles.", "ok": "Aceptar", - "download now": "Descargar ahora", "thereIsUpdateAvailable": "Hay una actualización disponible.", - "installUpdate": "Instalar la actualización ", + "download now": "Descargar ahora", + "later": "Más tarde", "updateAvailable": "Hay una actualización disponible: {0} {1}", + "installUpdate": "Instalar la actualización ", "updateInstalling": "{0} {1} se está instalando en segundo plano, le avisaremos cuando sea completada", + "updateAvailableAfterRestart": "Reiniciar {0} para aplicar la última actualización.", "updateNow": "Actualizar ahora", - "updateAvailableAfterRestart": "{0} se actualizará después de reiniciarse.", "commandPalette": "Paleta de comandos...", "settings": "Configuración", "keyboardShortcuts": "Métodos abreviados de teclado", diff --git a/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 7957a5748f1..cfb3d21c72a 100644 --- a/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "Editor de vistas web" + "webview.editor.label": "Editor de vistas web", + "developer": "Desarrollador" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..760d6b600cd --- /dev/null +++ b/i18n/esn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Abrir herramientas de desarrollo de vistas web", + "refreshWebviewLabel": "Recargar vistas web" +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index d3fc42e3ea0..41dc2fce9fc 100644 --- a/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Ayúdenos a mejorar VS Code permitiendo a Microsoft recopilar datos de uso. Lea nuestra [declaración de privacidad]({0}) y vea qué debe hacer para [no participar]({1}).", + "telemetryOptOut.optInNotice": "Ayúdenos a mejorar VS Code permitiendo a Microsoft recopilar datos de uso. Lea nuestra [declaración de privacidad]({0}) y vea qué debe hacer para [no participar]({1}).", "telemetryOptOut.readMore": "Leer más" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json b/i18n/esn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json index 4cca5673d67..9df96460d57 100644 --- a/i18n/esn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json @@ -13,6 +13,7 @@ "welcomeOverlay.extensions": "Administrar extensiones", "welcomeOverlay.problems": "Ver errores y advertencias", "welcomeOverlay.commandPalette": "Buscar y ejecutar todos los comandos", + "welcomeOverlay.notifications": "Mostrar notificaciones", "welcomeOverlay": "Información general de la interfaz de usuario", "hideWelcomeOverlay": "Ocultar información general de la interfaz", "help": "Ayuda" diff --git a/i18n/esn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/esn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index eec6537884d..dfe6cefe425 100644 --- a/i18n/esn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Herramientas y lenguajes", "welcomePage.installExtensionPacksDescription": "Instalar soporte para {0} y {1}", "welcomePage.moreExtensions": "más", - "welcomePage.installKeymapDescription": "Instalar los métodos abreviados de teclado", - "welcomePage.installKeymapExtension": "Instalar los métodos abreviados de teclado de {0} y {1}", "welcomePage.others": "otros", "welcomePage.colorTheme": "Tema de color", "welcomePage.colorThemeDescription": "Modifique a su gusto la apariencia del editor y el código", diff --git a/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 890db5376d9..41c9ed2d77b 100644 --- a/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -11,6 +11,7 @@ "open": "Abrir configuración", "saveAndRetry": "Guardar y reintentar", "errorUnknownKey": "No se puede escribir en {0} porque {1} no es una configuración registrada.", + "errorInvalidWorkspaceConfigurationApplication": "No se puede escribir {0} en configuración de área de trabajo. Esta opción puede escribirse solamente en configuración de usuario.", "errorInvalidFolderConfiguration": "No se puede escribir en Configuración de carpeta porque {0} no admite el ámbito del recurso de carpeta.", "errorInvalidUserTarget": "No se puede escribir en Configuración de usuario porque {0} no admite el ámbito global.", "errorInvalidWorkspaceTarget": "No se puede escribir a la configuración del espacio de trabajo porque {0} no soporta a un espacio de trabajo con multi carpetas.", diff --git a/i18n/esn/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/esn/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..53a465b71f5 --- /dev/null +++ b/i18n/esn/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedApplicationSetting": "Esta configuración puede aplicarse sólo en configuración de usuario", + "unsupportedWindowSetting": "Esta configuración no se puede aplicar ahora. Se aplicará al abrir esta carpeta directamente." +} \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index e71ac660c5f..0a5131780c1 100644 --- a/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -6,13 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "canNotResolveWorkspaceFolder": "${workspaceFolder} no se puede resolver. Por favor, abra una carpeta.", - "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} no se puede resolver en una área de trabajo de varias carpetas. Establezca el alcance de estas variables usando : y un nombre de carpeta.", - "canNotResolveFolderBasename": "${workspaceFolderBasename} no se puede resolver. Por favor, abra una carpeta.", - "canNotResolveLineNumber": "${lineNumber} no se puede resolver, por favor, abra un editor.", - "canNotResolveSelectedText": "${selectedText} no se puede resolver, por favor, abra un editor.", - "canNotResolveFileDirname": "${fileDirname} no se puede resolver, por favor, abra un editor.", - "canNotResolveFileExtname": "${fileExtname} no se puede resolver, por favor, abra un editor.", - "canNotResolveFileBasename": "${fileBasename} no se puede resolver, por favor, abra un editor.", - "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} no se puede resolver, por favor, abra un editor." + "canNotResolveWorkspaceFolder": "'${workspaceFolder}' no puede ser resuelto. Por favor, abra una carpeta.", + "canNotResolveFolderBasename": "'${workspaceFolderBasename}' no puede ser resuelto. Por favor, abra una carpeta." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 29f353047f0..dd5c8e077c6 100644 --- a/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -6,10 +6,12 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "vscode.extension.engines": "Compatibilidad del motor.", "vscode.extension.engines.vscode": "Para las extensiones de VS Code, especifica la versión de VS Code con la que la extensión es compatible. No puede ser *. Por ejemplo: ^0.10.5 indica compatibilidad con una versión de VS Code mínima de 0.10.5.", "vscode.extension.publisher": "El publicador de la extensión VS Code.", "vscode.extension.displayName": "Nombre para mostrar de la extensión que se usa en la galería de VS Code.", "vscode.extension.categories": "Categorías que usa la galería de VS Code para clasificar la extensión.", + "vscode.extension.category.languages.deprecated": "Utilice 'Lenguajes de programación' en su lugar ", "vscode.extension.galleryBanner": "Banner usado en VS Code Marketplace.", "vscode.extension.galleryBanner.color": "Color del banner en el encabezado de página de VS Code Marketplace.", "vscode.extension.galleryBanner.theme": "Tema de color de la fuente que se usa en el banner.", @@ -28,6 +30,8 @@ "vscode.extension.badges.url": "URL de la imagen del distintivo.", "vscode.extension.badges.href": "Vínculo del distintivo.", "vscode.extension.badges.description": "Descripción del distintivo.", + "vscode.extension.markdown": "Controla el motor de renderizado de Markdown utilizado en el Marketplace. Github (por defecto) o estándar.", + "vscode.extension.qna": "Controla el enlace Q&A en el Marketplace. Establézcalo a marketplace para habilitar el sitio web Q&A de Marketplace. Establézcalo a una cadena para proporcionar la dirección URL de un sitio web Q&A personalizado. Establézcalo en falso para deshabilitar el Q&A totalmente. ", "vscode.extension.extensionDependencies": "Dependencias a otras extensiones. El identificador de una extensión siempre es ${publisher}.${name}. Por ejemplo: vscode.csharp.", "vscode.extension.scripts.prepublish": "Script que se ejecuta antes de publicar el paquete como extensión VS Code.", "vscode.extension.scripts.uninstall": "Enlace de desinstalación para la extensión de VS Code. Script que se ejecuta cuando la extensión se ha desinstalado por completo de VS Code, que es cuando VS Code se reinicia (se cierra y se inicia) después de haberse desinstalado la extensión. Solo se admiten scripts de Node.", diff --git a/i18n/esn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/esn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 9012f97a2f8..fc53e989dd6 100644 --- a/i18n/esn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionsDisabled": "Todas las extensiones están deshabilitadas.", "extensionHostProcess.crash": "El host de extensiones finalizó inesperadamente.", "extensionHostProcess.unresponsiveCrash": "Se terminó el host de extensiones porque no respondía.", - "devTools": "Herramientas de desarrollo", + "devTools": "Herramientas de desarrollo abiertas", "restart": "Reiniciar el host de extensiones", "overwritingExtension": "Sobrescribiendo la extensión {0} con {1}.", "extensionUnderDevelopment": "Cargando la extensión de desarrollo en {0}", diff --git a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index aa407167dba..ecc3269c8a1 100644 --- a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,11 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Requiere Microsoft .NET Framework 4.5. Siga el vínculo para instalarlo.", "installNet": "Descargar .NET Framework 4.5", "neverShowAgain": "No volver a mostrar", - "netVersionError": "Requiere Microsoft .NET Framework 4.5. Siga el vínculo para instalarlo.", - "learnMore": "Instrucciones", "enospcError": "{0} es incapaz de observar los cambios de los archivos en este espacio de trabajo tan grande. Por favor siga las instrucciones en el link para resolver este problema.", + "learnMore": "Instrucciones", + "fileInvalidPath": "Recurso de archivo no válido ({0})", + "fileIsDirectoryError": "El archivo es un directorio", + "fileNotModifiedError": "Archivo no modificado desde", + "fileTooLargeError": "Archivo demasiado grande para abrirlo", + "fileNotFoundError": "Archivo no encontrado ({0})", + "fileBinaryError": "El archivo parece ser binario y no se puede abrir como texto", + "filePermission": "Permiso denegado al escribir en el archivo ({0})", + "fileExists": "El archivo a crear ya existe ({0})", + "fileModifiedError": "Archivo Modificado Desde", + "fileReadOnlyError": "El archivo es de solo lectura", + "fileMoveConflict": "No se puede mover o copiar. El archivo ya existe en la ubicación de destino. ", + "unableToMoveCopyError": "No se puede mover o copiar. El archivo reemplazaría a la carpeta que lo contiene.", "binFailed": "No se pudo mover \"{0}\" a la papelera de reciclaje", "trashFailed": "No se pudo mover '{0}' a la papelera" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 577ce27c3b8..33d664310eb 100644 --- a/i18n/esn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Archivo no encontrado ({0})", "fileIsDirectoryError": "El archivo es un directorio", "fileNotModifiedError": "Archivo no modificado desde", "fileBinaryError": "El archivo parece ser binario y no se puede abrir como texto" diff --git a/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 54bbf3f0874..bc5ecccc178 100644 --- a/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "Nombre del ámbito de TextMate que usa el archivo tmLanguage.", "vscode.extension.contributes.grammars.path": "Ruta de acceso del archivo tmLanguage. La ruta es relativa a la carpeta de extensión y normalmente empieza por \"./syntaxes/\".", "vscode.extension.contributes.grammars.embeddedLanguages": "Asignación de un nombre de ámbito al identificador de lenguaje si esta gramática contiene lenguajes incrustados.", + "vscode.extension.contributes.grammars.tokenTypes": "Asignación de nombre de ámbito a tipos de token.", "vscode.extension.contributes.grammars.injectTo": "Lista de nombres de ámbito de lenguaje al que se inyecta esta gramática." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index c947b1e5b52..52477cab338 100644 --- a/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/esn/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "Se esperaba una cadena en \"contributes.{0}.path\". Valor proporcionado: {1}", "invalid.injectTo": "Valor no válido en `contributes.{0}.injectTo`. Debe ser una matriz de nombres de ámbito de lenguaje. Valor proporcionado: {1}", "invalid.embeddedLanguages": "Valor no válido en \"contributes.{0}.embeddedLanguages\". Debe ser una asignación de objeto del nombre del ámbito al lenguaje. Valor proporcionado: {1}", + "invalid.tokenTypes": "Valor no válido en \"contributes.{0}.tokenTypes\". Debe ser una asignación de objeto del nombre del ámbito al tipo de token. Valor proporcionado: {1}", "invalid.path.1": "Se esperaba que \"contributes.{0}.path\" ({1}) se incluyera en la carpeta de la extensión ({2}). Esto puede hacer que la extensión no sea portátil.", "no-tm-grammar": "No hay ninguna gramática de TM registrada para este lenguaje." } \ No newline at end of file diff --git a/i18n/fra/extensions/css/package.i18n.json b/i18n/fra/extensions/css/package.i18n.json index 35229bd6699..f80d3cb8bfc 100644 --- a/i18n/fra/extensions/css/package.i18n.json +++ b/i18n/fra/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage CSS", + "description": "Fournit la coloration syntaxique et la correspondance des parenthèses dans les fichiers CSS, LESS et SCSS." } \ No newline at end of file diff --git a/i18n/fra/extensions/emmet/package.i18n.json b/i18n/fra/extensions/emmet/package.i18n.json index f4abe170d6a..2b38d968d64 100644 --- a/i18n/fra/extensions/emmet/package.i18n.json +++ b/i18n/fra/extensions/emmet/package.i18n.json @@ -35,7 +35,7 @@ "emmetExtensionsPath": "Chemin d’accès au dossier contenant les profils Emmet et les extraits.", "emmetShowExpandedAbbreviation": "Affiche les abréviations Emmet développées sous forme de suggestions.\nL’option \"inMarkupAndStylesheetFilesOnly\" s’applique à haml, jade, slim, xml, xsl, css, html, scss, sass, less et stylus.\nL’option\"always\" s’applique à toutes les parties du fichier indépendamment du balisage/css.", "emmetShowAbbreviationSuggestions": "Affiche les abréviations Emmet possibles sous forme de suggestions. Non applicable dans les feuilles de style ou lorsque emmet.showExpandedAbbreviation est défini à \"never\".", - "emmetIncludeLanguages": "Activer les abréviations Emmet dans les langages qui ne sont pas pris en charge par défaut. Ajouter ici un mappage entre le langage et le langage Emmet pris en charge.\n Par exemple : {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", + "emmetIncludeLanguages": "Activer les abréviations Emmet dans les langages qui ne sont pas pris en charge par défaut. Ajoutez un mappage ici entre la langue et le langage supporté par emmet.\n Par exemple : {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "Variables à utiliser dans les extraits de Emmet", "emmetTriggerExpansionOnTab": "Lorsqu’activé, les abréviations Emmet sont développées lorsque vous appuyez sur TAB.", "emmetPreferences": "Préférences utilisées pour modifier le comportement de certaines actions et résolveurs d'Emmet.", @@ -60,5 +60,6 @@ "emmetPreferencesCssMozProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'moz' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'moz'.", "emmetPreferencesCssOProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'o' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'o'.", "emmetPreferencesCssMsProperties": "Les propriétés css séparées par des virgules qui ont un préfixe 'ms' vendor lorsqu’elles sont utilisées dans une abréviation emmet qui commence par '-'. Mettre une chaîne vide pour éviter le préfixe 'ms'.", - "emmetPreferencesCssFuzzySearchMinScore": "La note minimale (de 0 à 1) que la correspondance de l'abréviation (fuzzy-matched) devrait atteindre. Des valeurs plus faibles peuvent produire de nombreuses correspondances de faux-positifs, des valeurs plus élevées peuvent réduire les correspondances possibles." + "emmetPreferencesCssFuzzySearchMinScore": "La note minimale (de 0 à 1) que la correspondance de l'abréviation (fuzzy-matched) devrait atteindre. Des valeurs plus faibles peuvent produire de nombreuses correspondances de faux-positifs, des valeurs plus élevées peuvent réduire les correspondances possibles.", + "emmetOptimizeStylesheetParsing": "Si défini à false, la fichier entier est analysé pour déterminer si la position courante est valide pour l’expansion des abréviations Emmet. Si défini à true, seul le contenu autour de la position actuelle dans les fichiers css/scss/less est analysé." } \ No newline at end of file diff --git a/i18n/fra/extensions/git/out/commands.i18n.json b/i18n/fra/extensions/git/out/commands.i18n.json index bc93fe05e88..1fe6735dc5d 100644 --- a/i18n/fra/extensions/git/out/commands.i18n.json +++ b/i18n/fra/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "OK", "push with tags success": "Envoyé (push) avec des balises.", "pick remote": "Choisissez un dépôt distant où publier la branche '{0}' :", + "sync is unpredictable": "Cette action va effectuer un transfert (Push) et une récupération (Pull) des commits à destination et en provenance de '{0}/{1}'.", "never again": "OK, Ne plus afficher", "no remotes to publish": "Votre dépôt n'a aucun dépôt distant configuré pour une publication.", "no changes stash": "Aucune modification à remiser (stash).", diff --git a/i18n/fra/extensions/git/package.i18n.json b/i18n/fra/extensions/git/package.i18n.json index 560d4f6bf6e..6b9b77f8287 100644 --- a/i18n/fra/extensions/git/package.i18n.json +++ b/i18n/fra/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Contrôle s’il faut afficher une action Ouvrir le fichier dans l’affichage des modifications de Git.", "config.inputValidation": "Contrôle quand afficher la validation de la saisie du message de commit.", "config.detectSubmodules": "Contrôle s’il faut détecter automatiquement les sous-modules git.", + "config.detectSubmodulesLimit": "Contrôle la limite de sous-modules git détectés.", "colors.modified": "Couleur pour les ressources modifiées.", "colors.deleted": "Couleur pour les ressources supprimées.", "colors.untracked": "Couleur pour les ressources non tracées.", diff --git a/i18n/fra/extensions/markdown-language-features/out/security.i18n.json b/i18n/fra/extensions/markdown-language-features/out/security.i18n.json index 29ca6d0b4cb..a6eb76789ac 100644 --- a/i18n/fra/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/fra/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,8 @@ ], "strict.title": "Strict", "strict.description": "Charger uniquement le contenu sécurisé.", + "insecureLocalContent.title": "Autoriser le contenu local non sécurisé", + "insecureLocalContent.description": "Activer le chargement de contenu http servi par localhost", "insecureContent.title": "Autoriser le contenu non sécurisé", "insecureContent.description": "Activer le chargement de contenu sur http", "disable.title": "Désactiver", diff --git a/i18n/fra/extensions/php-language-features/package.i18n.json b/i18n/fra/extensions/php-language-features/package.i18n.json index f69ece2bdd4..60709998959 100644 --- a/i18n/fra/extensions/php-language-features/package.i18n.json +++ b/i18n/fra/extensions/php-language-features/package.i18n.json @@ -13,5 +13,6 @@ "configuration.title": "PHP", "commands.categroy.php": "PHP", "command.untrustValidationExecutable": "Interdire l'exécutable de validation PHP (défini comme paramètre d'espace de travail)", - "displayName": "Fonctionnalités de langage PHP" + "displayName": "Fonctionnalités de langage PHP", + "description": "Fournit une prise en charge de langage riche pour les fichiers PHP." } \ No newline at end of file diff --git a/i18n/fra/extensions/php/package.i18n.json b/i18n/fra/extensions/php/package.i18n.json index 20a77bf9902..2b1f86c1232 100644 --- a/i18n/fra/extensions/php/package.i18n.json +++ b/i18n/fra/extensions/php/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Fonctionnalités du langage PHP" + "displayName": "Bases du langage PHP", + "description": "Fournit la coloration syntaxique et la correspondance des parenthèses dans les fichiers PHP." } \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/commands.i18n.json b/i18n/fra/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..1738a01dc86 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Ouvrez un dossier dans VS Code pour utiliser un projet TypeScript ou JavaScript", + "typescript.projectConfigUnsupportedFile": "Impossible de déterminer le projet TypeScript ou JavaScript. Type de fichier non pris en charge", + "typescript.projectConfigCouldNotGetInfo": "Impossible de déterminer le projet TypeScript ou JavaScript", + "typescript.noTypeScriptProjectConfig": "Le fichier ne fait pas partie d'un projet TypeScript. Cliquer [ici]({0}) pour en savoir plus.", + "typescript.noJavaScriptProjectConfig": "Le fichier ne fait pas partie d'un projet JavaScript. Cliquer [ici]({0}) pour en savoir plus.", + "typescript.configureTsconfigQuickPick": "Configurer tsconfig.json", + "typescript.configureJsconfigQuickPick": "Configurer jsconfig.json" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..a9b06927dc3 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Sélectionner l'action de code à appliquer", + "acquiringTypingsLabel": "Acquisition des typings...", + "acquiringTypingsDetail": "Acquisition des définitions typings pour IntelliSense.", + "autoImportLabel": "Importation automatique depuis {0}" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..8096453313a --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Active la vérification sémantique dans un fichier JavaScript. Doit se trouver au début d'un fichier.", + "ts-nocheck": "Désactive la vérification sémantique dans un fichier JavaScript. Doit se trouver au début d'un fichier.", + "ts-ignore": "Supprime les erreurs @ts-check sur la ligne suivante d'un fichier." +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..2e7856eb1be --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 implémentation", + "manyImplementationLabel": "{0} implémentations", + "implementationsErrorLabel": "Impossible de déterminer les implémentations" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..7915d99dbd8 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "Commentaire JSDoc" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..064e933aa67 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Organiser les Imports" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..f10b35e9e5b --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Corriger tout dans le fichier)" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..927ba6cdb77 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 référence", + "manyReferenceLabel": "{0} références", + "referenceErrorLabel": "Impossible de déterminer les références" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..451f7029bac --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "build - {0}", + "buildAndWatchTscLabel": "watch - {0}" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/fra/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..f31ff437ec4 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "Le chemin {0} ne pointe pas vers une installation tsserver valide. Utilisation par défaut de la version TypeScript groupée.", + "serverCouldNotBeStarted": "Impossible de démarrer le serveur de langage TypeScript. Message d'erreur : {0}", + "typescript.openTsServerLog.notSupported": "La journalisation du serveur TS nécessite TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "La journalisation du serveur TS est désactivée. Définissez 'typescript.tsserver.log' et redémarrez le serveur TS pour activer la journalisation", + "typescript.openTsServerLog.enableAndReloadOption": "Activer la journalisation et redémarrer le serveur TS", + "typescript.openTsServerLog.noLogFile": "Le serveur TS n'a pas démarré la journalisation.", + "openTsServerLog.openFileFailedFailed": "Impossible d'ouvrir le fichier journal du serveur TS", + "serverDiedAfterStart": "Le service de langage TypeScript s'est subitement arrêté 5 fois juste après avoir démarré. Il n'y aura pas d'autres redémarrages.", + "serverDiedReportIssue": "Signaler un problème", + "serverDied": "Le service de langage TypeScript s'est subitement arrêté 5 fois au cours des 5 dernières minutes." +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..61ed0b60124 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "version non valide" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..b39c51e947e --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Pour activer les fonctionnalités de langage JavaScript/TypeScript à l'échelle du projet, excluez les dossiers contenant de nombreux fichiers, par exemple : {0}", + "hintExclude.generic": "Pour activer les fonctionnalités de langage JavaScript/TypeScript à l'échelle du projet, excluez les dossiers volumineux contenant des fichiers sources inutilisés.", + "large.label": "Configurer les exclusions", + "hintExclude.tooltip": "Pour activer les fonctionnalités de langage JavaScript/TypeScript à l'échelle du projet, excluez les dossiers volumineux contenant des fichiers sources inutilisés." +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..108ea8e9d3c --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Récupération (fetch) des données pour l'amélioration de TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "Impossible d'installer des fichiers de typages pour les fonctionnalités de langage JavaScript. Vérifiez que NPM est installé ou configurez 'typescript.npm' dans vos paramètres utilisateur. Cliquer [ici]({0}) pour en savoir plus.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Ne plus afficher" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..c6da9b3843f --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Utiliser la version de VS Code", + "useWorkspaceVersionOption": "Utiliser la version de l'espace de travail", + "learnMore": "En savoir plus", + "selectTsVersion": "Sélectionner la version TypeScript utilisée pour les fonctionnalités de langage JavaScript et TypeScript" +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/fra/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..5c32ecfe106 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Impossible de charger la version TypeScript dans ce chemin", + "noBundledServerFound": "Le tsserver de VSCode a été supprimé par une autre application, par exemple, un outil de détection de virus mal configuré. Réinstallez VS Code." +} \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-language-features/package.i18n.json b/i18n/fra/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..a84454b66c5 --- /dev/null +++ b/i18n/fra/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,65 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Fonctionnalités de langage TypeScript et JavaScript", + "description": "Fournit une prise en charge riche de langage pour JavaScript et TypeScript.", + "typescript.reloadProjects.title": "Recharger le projet", + "javascript.reloadProjects.title": "Recharger le projet", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Fonctions complètes avec leur signature de paramètre.", + "typescript.tsdk.desc": "Spécifie le chemin de dossier contenant les fichiers tsserver et lib*.d.ts à utiliser.", + "typescript.disableAutomaticTypeAcquisition": "Désactive l'acquisition de type automatique. Nécessite TypeScript >= 2.0.6.", + "typescript.tsserver.log": "Active la journalisation du serveur TS dans un fichier. Ce journal peut être utilisé pour diagnostiquer les problèmes du serveur TS. Il peut contenir des chemins de fichier, du code source et d'autres informations potentiellement sensibles de votre projet.", + "typescript.tsserver.pluginPaths": "Chemins d’accès supplémentaires pour découvrir les plugins de Service de langage Typescript. Nécessite TypeScript > = 2.3.0.", + "typescript.tsserver.pluginPaths.item": "Un chemin absolu ou un chemin relatif. Le chemin d’accès relatif sera résolu en fonction des dossiers de l’espace de travail.", + "typescript.tsserver.trace": "Active le traçage des messages envoyés au serveur TS. Cette trace peut être utilisée pour diagnostiquer les problèmes du serveur TS. Elle peut contenir des chemins de fichier, du code source et d'autres informations potentiellement sensibles de votre projet.", + "typescript.validate.enable": "Activez/désactivez la validation TypeScript.", + "typescript.format.enable": "Activez/désactivez le formateur TypeScript par défaut.", + "javascript.format.enable": "Activez/désactivez le formateur JavaScript par défaut.", + "format.insertSpaceAfterCommaDelimiter": "Définit le traitement des espaces après une virgule de délimitation.", + "format.insertSpaceAfterConstructor": "Définit le traitement des espaces après le mot clé constructor. Nécessite TypeScript >= 2.3.0.", + "format.insertSpaceAfterSemicolonInForStatements": " Définit le traitement des espaces après un point-virgule dans une instruction for.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Définit le traitement des espaces après un opérateur binaire.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Définit la gestion des espaces après les mots clés dans une instruction de flux de contrôle.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Définit le traitement des espaces après le mot clé function pour les fonctions anonymes.", + "format.insertSpaceBeforeFunctionParenthesis": "Définit la gestion des espaces avant les parenthèses des arguments d'une fonction. Nécessite TypeScript >= 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": "Définit l’espace après ouverture et avant la fermeture de parenthèses non vides.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": "Définit l’espace après ouverture et avant la fermeture de crochets non vides.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": "Définit l’espace après ouverture et avant la fermeture d'accolades non vides. Nécessite le TypeScript >= 2.3.0.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Définit la gestion de l'espace après l'ouverture et avant la fermeture des accolades de la chaîne de modèle. Nécessite TypeScript >= 2.0.6.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Définit la gestion de l'espace après l'ouverture et avant la fermeture des accolades de l'expression JSX. Nécessite TypeScript >= 2.0.6.", + "format.insertSpaceAfterTypeAssertion": "Définit le traitement des espaces après les assertions de type dans TypeScript. Nécessite TypeScript >= 2.4.", + "format.placeOpenBraceOnNewLineForFunctions": "Définit si une accolade ouvrante dans une fonction est placée ou non sur une nouvelle ligne.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Définit si une accolade ouvrante dans un bloc de contrôle est placée ou non sur une nouvelle ligne.", + "javascript.validate.enable": "Activez/désactivez la validation JavaScript.", + "typescript.goToProjectConfig.title": "Accéder à la configuration du projet", + "javascript.goToProjectConfig.title": "Accéder à la configuration du projet", + "javascript.referencesCodeLens.enabled": "Activez/désactivez les références CodeLens dans les fichiers JavaScript.", + "typescript.referencesCodeLens.enabled": "Activez/désactivez les références CodeLens dans les fichiers TypeScript. Nécessite TypeScript >= 2.0.6.", + "typescript.implementationsCodeLens.enabled": "Activer/désactiver CodeLens dans les implémentations. Nécessite TypeScript >= 2.2.0.", + "typescript.openTsServerLog.title": "Ouvrir le journal du serveur TS", + "typescript.restartTsServer": "Redémarrer le serveur TS", + "typescript.selectTypeScriptVersion.title": "Sélectionner la version de TypeScript", + "typescript.reportStyleChecksAsWarnings": "Rapporter les vérifications de style comme des avertissements", + "jsDocCompletion.enabled": "Activer/désactiver les commentaires JSDoc automatiques", + "javascript.implicitProjectConfig.checkJs": "Activer/désactiver la vérification sémantique des fichiers JavaScript. Les fichiers jsconfig.json ou tsconfig.json existants remplacent ce paramètre. Nécessite TypeScript >=2.3.1.", + "typescript.npm": "Spécifie le chemin de l'exécutable NPM utilisé pour l'acquisition de type automatique. Nécessite TypeScript >= 2.3.4.", + "typescript.check.npmIsInstalled": "Vérifie si NPM est installé pour l'acquisition de type automatique.", + "javascript.nameSuggestions": "Activez/désactivez l'inclusion de noms uniques à partir du fichier dans les listes de suggestions JavaScript.", + "typescript.tsc.autoDetect": "Contrôle la détection automatique des tâches tsc. 'off' désactive cette fonctionnalité. 'build' crée uniquement des tâches de compilation à exécution unique. 'watch' crée uniquement des tâches de compilation et de watch. 'on' crée les deux les tâches build et watch. La valeur par défaut est 'on'.", + "typescript.problemMatchers.tsc.label": "Problèmes liés à TypeScript", + "typescript.problemMatchers.tscWatch.label": "Problèmes liés à TypeScript (mode espion)", + "typescript.quickSuggestionsForPaths": "Activer/désactiver les suggestions rapides lorsque vous saisissez un chemin d’import.", + "typescript.locale": "Définit les paramètres locaux utilisés pour signaler les erreurs TypeScript . Nécessite TypeScript >= 2.6.0. Par défaut 'null' utilise les paramètres locaux de VS Code pour les erreurs TypeScript.", + "javascript.implicitProjectConfig.experimentalDecorators": "Activer/désactiver 'experimentalDecorators' pour les fichiers JavaScript qui ne font pas partie d'un projet. Les fichiers jsconfig.json ou tsconfig.json existants remplacent ce paramètre. Nécessite TypeScript >=2.3.1.", + "typescript.autoImportSuggestions.enabled": "Activer/désactiver les suggestions d'import automatiques. Nécessite TypeScript >= 2.6.1.", + "typescript.experimental.syntaxFolding": "Active/désactive les marqueurs de réduction en fonction de la syntaxe.", + "taskDefinition.tsconfig.description": "Fichier tsconfig qui définit la build TS.", + "javascript.suggestionActions.enabled": "Activer/désactiver le diagnostic de suggestion des fichiers JavaScript dans l’éditeur. Nécessite TypeScript > = 2.8", + "typescript.suggestionActions.enabled": "Activer/désactiver les diagnostics de suggestion pour les fichiers TypeScript dans l’éditeur de texte. Nécessite TypeScript > = 2.8." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/base/node/processes.i18n.json b/i18n/fra/src/vs/base/node/processes.i18n.json index ffb5b40ba74..35229bd6699 100644 --- a/i18n/fra/src/vs/base/node/processes.i18n.json +++ b/i18n/fra/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Impossible d'exécuter une commande d'interpréteur de commandes sur un lecteur UNC." + ] } \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index a1fd534cd5e..010c8f12ac4 100644 --- a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "Prévisualiser sur GitHub", "loadingData": "Chargement des données en cours...", + "rateLimited": "Limite de requête GitHub dépassée. Veuillez patienter.", "similarIssues": "Problèmes similaires", "open": "Ouvrir", "closed": "Fermé", - "noResults": "Résultats introuvables", + "noSimilarIssues": "Aucun problème similaire trouvé", "settingsSearchIssue": "Problème de paramètres de recherche", "bugReporter": "Rapporteur de bogue", "featureRequest": "Demande de fonctionnalité", diff --git a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index b903d97313a..f18659a614b 100644 --- a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,12 @@ ], "completeInEnglish": "Veuillez remplir le formulaire en anglais.", "issueTypeLabel": "Ceci est un ", + "issueSourceLabel": "Fichier sur", + "vscode": "Visual Studio Code", + "extension": "Une Extension", + "disableExtensionsLabelText": "Essayez de reproduire le problème après {0}. Si le problème se reproduit uniquement lorsque les extensions sont actives, c’est probablement un problème avec une extension.", + "disableExtensions": "en désactivant toutes les extensions et en rechargeant la fenêtre", + "chooseExtension": "Extension", "issueTitleLabel": "Titre", "issueTitleRequired": "Veuillez s’il vous plaît entrer un titre.", "titleLengthValidation": "Le titre est trop long.", @@ -18,13 +24,6 @@ "extensions": "Mes Extensions", "searchedExtensions": "Extensions recherchées", "settingsSearchDetails": "Détails de paramètres de recherche", - "tryDisablingExtensions": "Le problème est-il reproductible lorsque les extensions sont désactivées?", - "yes": "Oui", - "no": "Non", - "disableExtensionsLabelText": "Essayez de reproduire le problème après {0}.", - "disableExtensions": "en désactivant toutes les extensions et en rechargeant la fenêtre", - "showRunningExtensionsLabelText": "Si vous pensez que c'est un problème d'extension, {0} pour reporter le problème de l'extension.", - "showRunningExtensions": "Afficher toutes les extensions en cours d'exécution", "details": "Veuillez saisir les détails ", "loadingData": "Chargement des données..." } \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/fra/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..9eedc8116f8 --- /dev/null +++ b/i18n/fra/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "% PROCESSEUR", + "memory": "Mémoire (Mo)", + "pid": "pid", + "name": "Nom", + "killProcess": "Tuer le processus", + "forceKillProcess": "Forcer la suppression du processus" +} \ 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 8285cde130f..021a8b5c68b 100644 --- a/i18n/fra/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/fra/src/vs/code/electron-main/menus.i18n.json @@ -161,6 +161,7 @@ "mMergeAllWindows": "Fusionner toutes les fenêtres", "miToggleDevTools": "Activer/désactiver les ou&&tils de développement", "miAccessibilityOptions": "&&Options d'accessibilité", + "miOpenProcessExplorerer": "Ouvrir l'Explorateur de &&Processus", "miReportIssue": "Signaler un problème", "miWelcome": "&&Bienvenue", "miInteractivePlayground": "Terrain de jeu &&interactif", diff --git a/i18n/fra/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/fra/src/vs/editor/browser/widget/diffReview.i18n.json index 5bf8a5a69db..cb044b0dca6 100644 --- a/i18n/fra/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/fra/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Fermer", - "header": "Différence {0} sur {1} : {2} d'origine, {3} lignes, {4} modifiées, {5} lignes", "blankLine": "vide", "equalLine": "{0} d'origine, {1} modifiées : {2}", "insertLine": "+ {0} modifiées : {1}", diff --git a/i18n/fra/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/fra/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/fra/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/fra/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/fra/src/vs/editor/common/config/commonEditorConfig.i18n.json index c59fa7756c3..ef46fe72220 100644 --- a/i18n/fra/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/fra/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS.", "multiCursorModifier.alt": "Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.", "multiCursorModifier": "Le modificateur à utiliser pour ajouter plusieurs curseurs avec la souris. 'ctrlCmd' mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS. Les mouvements de souris Accéder à la définition et Ouvrir le lien s'adaptent pour ne pas entrer en conflit avec le modificateur multicurseur.", + "multiCursorMergeOverlapping": "Fusionnez plusieurs curseurs quand ils se chevauchent.", "quickSuggestions.strings": "Activez les suggestions rapides dans les chaînes.", "quickSuggestions.comments": "Activez les suggestions rapides dans les commentaires.", "quickSuggestions.other": "Activez les suggestions rapides en dehors des chaînes et des commentaires.", @@ -88,6 +89,9 @@ "renderLineHighlight": "Contrôle la façon dont l'éditeur doit afficher la surbrillance de la ligne active. Les différentes possibilités sont 'none', 'gutter', 'line' et 'all'.", "codeLens": "Contrôle si l'éditeur affiche les indicateurs CodeLens", "folding": "Contrôle si le pliage de code est activé dans l'éditeur", + "foldingStrategyAuto": "Si disponible, utilisez une stratégie de présentation langage-spécifique, sinon la stratégie d'indentation s'applique.", + "foldingStrategyIndentation": "Utilisez toujours l'indentation basée sur la stratégie de présentation", + "foldingStrategy": "Contrôle la façon dont les repliages sont calculées. 'auto' utilise une stratégie repliage spécifique au langage, si disponible. 'indentation' force à ce que la stratégie de repliage basée sur l'indentation soit utilisée.", "showFoldingControls": "Définit si les contrôles de réduction sur la bordure sont cachés automatiquement", "matchBrackets": "Met en surbrillance les crochets correspondants quand l'un d'eux est sélectionné.", "glyphMargin": "Contrôle si l'éditeur doit afficher la marge de glyphes verticale. La marge de glyphes sert principalement au débogage.", @@ -105,5 +109,7 @@ "selectionClipboard": "Contrôle si le presse-papiers primaire Linux doit être pris en charge.", "sideBySide": "Contrôle si l'éditeur de différences affiche les différences en mode côte à côte ou inline", "ignoreTrimWhitespace": "Contrôle si l'éditeur de différences affiche les changements liés aux espaces blancs de début ou de fin comme des différences", + "largeFileSize": "Contrôles le seuil de la taille de fichier en octets au-delà de laquelle les règles d’optimisation spéciale sont appliquées", + "largeFileLineCount": "Contrôle le seuil de taille de fichier en terme de nombre de lignes au-delà de laquelle les règles d’optimisation spéciale sont appliquées", "renderIndicators": "Contrôle si l'éditeur de différences affiche les indicateurs +/- pour les modifications ajoutées/supprimées" } \ No newline at end of file diff --git a/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json index 3b0bc493515..d368519c5fb 100644 --- a/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/fra/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "Couleur des repères de retrait de l'éditeur.", "editorLineNumbers": "Couleur des numéros de ligne de l'éditeur.", "editorActiveLineNumber": "Couleur des numéros de lignes actives de l'éditeur", + "deprecatedEditorActiveLineNumber": "Id est obsolète. Utilisez à la place 'editorLineNumber.activeForeground'. ", "editorRuler": "Couleur des règles de l'éditeur", "editorCodeLensForeground": "Couleur pour les indicateurs CodeLens", "editorBracketMatchBackground": "Couleur d'arrière-plan pour les accolades associées", @@ -28,6 +29,8 @@ "warningBorder": "Couleur de bordure de la ligne ondulée marquant les avertissements dans l'éditeur.", "infoForeground": "Couleur de premier plan de la ligne ondulée marquant les informations dans l'éditeur.", "infoBorder": "Couleur de bordure de la ligne ondulée marquant les informations dans l'éditeur.", + "hintForeground": "Couleur de premier plan de la ligne ondulée d'indication dans l'éditeur.", + "hintBorder": "Couleur de bordure de la ligne ondulée d'indication dans l'éditeur.", "overviewRulerRangeHighlight": "Couleur du marqueur de la règle d'aperçu pour des plages mises en surbrillance. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.", "overviewRuleError": "Couleur du marqueur de la règle d'aperçu pour les erreurs.", "overviewRuleWarning": "Couleur du marqueur de la règle d'aperçu pour les avertissements.", diff --git a/i18n/fra/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/fra/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..9e350d183dc --- /dev/null +++ b/i18n/fra/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Afficher les correctifs ({0})", + "quickFix": "Afficher les correctifs", + "quickfix.trigger.label": "Correction rapide...", + "editor.action.quickFix.noneMessage": "Aucune action de code disponible", + "refactor.label": "Remanier...", + "editor.action.refactor.noneMessage": "Aucune refactorisation disponible", + "source.label": "Action de la source", + "editor.action.source.noneMessage": "Aucune action n'est disponible", + "organizeImports.label": "Organiser les Imports" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/editor/contrib/links/links.i18n.json b/i18n/fra/src/vs/editor/contrib/links/links.i18n.json index 765ec6309f7..2837414f765 100644 --- a/i18n/fra/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/fra/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "Ctrl + clic pour suivre le lien", "links.command.mac": "Cmd + clic pour exécuter la commande", "links.command": "Ctrl + clic pour exécuter la commande", + "links.navigate.al.mac": "Option + clic pour suivre le lien", "links.navigate.al": "Alt + clic pour suivre le lien", + "links.command.al.mac": "Option + clic pour exécuter la commande", "links.command.al": "Alt + clic pour exécuter la commande", "invalid.url": "Échec de l'ouverture de ce lien, car il n'est pas bien formé : {0}", "missing.url": "Échec de l'ouverture de ce lien, car sa cible est manquante.", diff --git a/i18n/fra/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/fra/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/fra/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index eda9d2905d6..5b27a515c99 100644 --- a/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/fra/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -13,6 +13,33 @@ "Thursday": "Jeudi", "Friday": "Vendredi", "Saturday": "Samedi", + "SundayShort": "Dim", + "MondayShort": "Lun", + "TuesdayShort": "Mar", + "WednesdayShort": "Mer", + "ThursdayShort": "Jeu", + "FridayShort": "Ven", + "SaturdayShort": "Sam", + "January": "Janvier", + "February": "Février", + "March": "Mars", + "April": "Avril", + "May": "Mai", + "June": "Juin", + "July": "Juillet", + "August": "Août", + "September": "Septembre", + "October": "Octobre", + "November": "Novembre", + "December": "Décembre", + "JanuaryShort": "Jan", + "FebruaryShort": "Fév", + "MarchShort": "Mar", + "AprilShort": "Avr", + "MayShort": "Mai", + "JuneShort": "Jun", + "JulyShort": "Jul", + "AugustShort": "Aoû", "SeptemberShort": "Sep", "OctoberShort": "Oct", "NovemberShort": "Nov", 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 b078a360d5c..a68fecd7d97 100644 --- a/i18n/fra/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/fra/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Démarrez avec la commande 'Développeur : performance de démarrage' activée.", "prof-startup": "Exécuter le profileur d'UC au démarrage", "disableExtensions": "Désactivez toutes les extensions installées.", - "inspect-extensions": "Autorise le débogage et le profilage des extensions. Vérifier les outils de développements pour l'uri de connexion.", - "inspect-brk-extensions": "Autorise le débogage et le profilage des extensions avec l'hôte d'extensions en pause après le démarrage. Vérifier les outils de développement pour l'uri de connexion.", "disableGPU": "Désactivez l'accélération matérielle du GPU.", "uploadLogs": "Upload les logs depuis la session actuelle vers le endpoint sécurisé.", "maxMemory": "Taille mémoire maximale pour une fenêtre (En Megaoctêts)", diff --git a/i18n/fra/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/fra/src/vs/platform/extensions/node/extensionValidator.i18n.json index 14df62a8555..164aece343f 100644 --- a/i18n/fra/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/fra/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Impossible d'analyser la valeur {0} de 'engines.vscode'. Utilisez, par exemple, ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x, etc.", + "versionSyntax": "Impossible d'analyser la valeur {0} de `engines.vscode`. Veuillez utiliser, par exemple : ^1.22.0, ^1.22.x, ...", "versionSpecificity1": "La version spécifiée dans 'engines.vscode' ({0}) n'est pas assez précise. Pour les versions de vscode antérieures à 1.0.0, définissez au minimum les versions majeure et mineure souhaitées. Par exemple : ^0.10.0, 0.10.x, 0.11.0, etc.", "versionSpecificity2": "La version spécifiée dans 'engines.vscode' ({0}) n'est pas assez précise. Pour les versions de vscode ultérieures à 1.0.0, définissez au minimum la version majeure souhaitée. Par exemple : ^1.10.0, 1.10.x, 1.x.x, 2.x.x, etc.", "versionMismatch": "L'extension n'est pas compatible avec le code {0}. L'extension nécessite {1}." diff --git a/i18n/fra/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/fra/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 8ea54148dad..63284727ee8 100644 --- a/i18n/fra/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/fra/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "Votre installation de {0} semble être endommagée. Effectuez une réinstallation.", "integrity.moreInformation": "Informations", - "integrity.dontShowAgain": "Ne plus afficher", - "integrity.prompt": "Votre installation de {0} semble être endommagée. Effectuez une réinstallation." + "integrity.dontShowAgain": "Ne plus afficher" } \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/issue/electron-main/issueService.i18n.json b/i18n/fra/src/vs/platform/issue/electron-main/issueService.i18n.json index cfbd6f443b7..615db052738 100644 --- a/i18n/fra/src/vs/platform/issue/electron-main/issueService.i18n.json +++ b/i18n/fra/src/vs/platform/issue/electron-main/issueService.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "issueReporter": "Rapporteur du problème" + "issueReporter": "Rapporteur du problème", + "processExplorer": "Explorateur de processus" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/fra/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..7dd67c3300c --- /dev/null +++ b/i18n/fra/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "la propriété '{0}' est obligatoire et doit être de type 'string'", + "showViewlet": "Afficher {0}", + "view": "Affichage" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/fra/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index ff1868fc667..ed3d04c14e5 100644 --- a/i18n/fra/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/fra/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Ajoute des vues à l'éditeur", "views.explorer": "Mode Explorateur", "views.debug": "Debug View", - "locationId.invalid": "'{0}' n'est pas un emplacement de vue valide", "duplicateView1": "Impossible d’enregistrer des vues multiples avec le même id '{0}'» dans l’emplacement '{1}'", "duplicateView2": "Une vue avec l’id `{0}` est déjà enregistrée à l’emplacement `{1}`" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 6b8c2481d1f..6ad0b22d7ed 100644 --- a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Format avorté lors de l'enregistrement après {0} ms", + "timeout.onWillSave": "OnWillSaveTextDocument-event avorté après 1750 ms", "saveParticipants": "Exécution de la sauvegarde des participants..." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index de7accdb519..38f0760c227 100644 --- a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "éditeur webview" + "errorMessage": "Une erreur s’est produite lors de restauration de a vue : {0}" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 7f3b1e3e8f9..d86bbe531c6 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,7 @@ "screenReaderDetectedExtra": "Si vous n'utilisez pas de lecteur d'écran, définissez le paramètre 'editor.accessibilitySupport' sur \"désactivé\".", "disableTabMode": "Désactiver le mode d'accessibilité", "gotoLine": "Atteindre la ligne", - "indentation": "Retrait", + "selectIndentation": "Sélectionner le retrait", "selectEncoding": "Sélectionner l'encodage", "selectEOL": "Sélectionner la séquence de fin de ligne", "selectLanguageMode": "Sélectionner le mode de langage", diff --git a/i18n/fra/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index e91a76e9b43..a9163f8c71e 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,11 @@ "sizeMB": "{0} Mo", "sizeGB": "{0} Go", "sizeTB": "{0} To", - "largeImageError": "La taille du fichier de l’image est trop grande (> à 1Mo) pour afficher dans l’éditeur.", + "largeImageError": "L’image n’est pas affichée dans l’éditeur parce qu’elle est trop grande ({0}).", "resourceOpenExternalButton": " Ouvrir l'image en utilisant un programme externe ?", - "nativeBinaryError": "Impossible d'afficher le fichier dans l'éditeur : soit il est binaire, soit il est très volumineux, soit il utilise un encodage de texte non pris en charge.", + "nativeFileTooLargeError": "Le fichier n’est pas affiché dans l’éditeur, parce qu’il est trop volumineux ({0}).", + "nativeBinaryError": "Le fichier n’est pas affiché dans l’éditeur parce que c’est un fichier binaire ou qu'il utilise un encodage de texte non pris en charge.", + "openAsText": "Vous voulez l'ouvrir quand même ?", "zoom.action.fit.label": "Toute l’Image", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 2a55390fff5..491f3b3f2fc 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Aucune nouvelle notification", "notifications": "Notifications", "notificationsToolbar": "Actions du centre de notifications", "notificationsList": "Liste des notifications" diff --git a/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..3eb1fd9f03c --- /dev/null +++ b/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInput.countSelected": "{0} Sélectionnés", + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..e961aa1b883 --- /dev/null +++ b/i18n/fra/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInputBox.ariaLabel": "Taper pour affiner les résultats." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/fra/src/vs/workbench/electron-browser/actions.i18n.json index 96d9fe6601d..8f9f7eb339d 100644 --- a/i18n/fra/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/fra/src/vs/workbench/electron-browser/actions.i18n.json @@ -32,6 +32,7 @@ "openRecent": "Ouvrir les éléments récents...", "quickOpenRecent": "Ouverture rapide des éléments récents...", "reportIssueInEnglish": "Signaler un problème", + "openProcessExplorer": "Ouvrir l'explorateur de processus", "reportPerformanceIssue": "Signaler un problème de performance", "keybindingsReference": "Référence des raccourcis clavier", "openDocumentationUrl": "Documentation", diff --git a/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json index ef97b82ec54..1a663cb4405 100644 --- a/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -47,11 +47,15 @@ "window.openFilesInNewWindow.off": "Les fichiers s'ouvrent dans la fenêtre du dossier conteneur ouvert ou dans la dernière fenêtre active", "window.openFilesInNewWindow.defaultMac": "Les fichiers s'ouvriront dans la fenêtre avec le dossier des fichiers ouvert ou la dernière fenêtre active, à moins qu'ils ne soient ouverts via le Dock ou depuis Finder.", "window.openFilesInNewWindow.default": "Les fichiers s'ouvriront dans une nouvelle fenêtre, à moins qu'ils ne soient sélectionnés dans l'application (par ex. via le menu Fichier)", + "openFilesInNewWindowMac": "Contrôle si les fichiers doivent s'ouvrir dans une nouvelle fenêtre.\n- default : les fichiers s'ouvriront dans la fenêtre avec le dossier des fichiers ouvert ou la dernière fenêtre active à moins qu'ils ne soient ouverts via le Dock ou depuis le Finder\n- on : les fichiers s'ouvriront dans une nouvelle fenêtre\n- off : les fichiers s'ouvriront dans la fenêtre avec le dossier des fichiers ouvert ou la dernière fenêtre active\nNotez qu'il peut encore y avoir des cas où ce paramètre est ignoré (par exemple lorsque vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", + "openFilesInNewWindow": "Contrôle si les fichiers doivent s'ouvrir dans une nouvelle fenêtre.\n- default : les fichiers s'ouvriront dans une nouvelle fenêtre à moins qu'ils ne soient sélectionnés dans l'application (par ex. via le menu Fichier)\n- on : les fichiers s'ouvriront dans une nouvelle fenêtre\n- off : les fichiers s'ouvriront dans la fenêtre avec le dossier des fichiers ouvert ou la dernière fenêtre active\nNotez qu'il peut encore y avoir des cas où ce paramètre est ignoré (par exemple lorsque vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", "window.openFoldersInNewWindow.on": "Les dossiers s'ouvrent dans une nouvelle fenêtre", "window.openFoldersInNewWindow.off": "Les dossiers remplacent la dernière fenêtre active", "window.openFoldersInNewWindow.default": "Les dossiers s'ouvrent dans une nouvelle fenêtre, sauf si un dossier est sélectionné depuis l'application (par exemple, via le menu Fichier)", "openFoldersInNewWindow": "Contrôle si les dossiers doivent s'ouvrir dans une nouvelle fenêtre ou remplacer la dernière fenêtre active.\n- default : les dossiers s'ouvrent dans une nouvelle fenêtre, sauf si un dossier est sélectionné depuis l'application (par exemple, via le menu Fichier)\n- on : les dossiers s'ouvrent dans une nouvelle fenêtre\n- off : les dossiers remplacent la dernière fenêtre active\nNotez que dans certains cas, ce paramètre est ignoré (par exemple, quand vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", "window.openWithoutArgumentsInNewWindow.on": "Ouvrir une nouvelle fenêtre vide", + "window.openWithoutArgumentsInNewWindow.off": "Mettre le focus sur la dernière instance active du terminal", + "openWithoutArgumentsInNewWindow": "Contrôle si une nouvelle fenêtre vide doit s’ouvrir lors du démarrage d’une seconde instance sans argument, ou si la dernière instance en cours d’exécution doit obtenir le focus.\n- on : ouvrir une nouvelle fenêtre vide\n- off : la dernière instance en cours d’exécution active obtiendra le focus\nNote qu’il peut encore exister des cas où ce paramètre est ignoré (par exemple lorsque vous utilisez l'option de ligne de commande -new-window ou -reuse-window).", "window.reopenFolders.all": "Rouvre toutes les fenêtres.", "window.reopenFolders.folders": "Rouvrir tous les dossiers. Les espaces de travail vides ne seront pas restaurées.", "window.reopenFolders.one": "Rouvre la dernière fenêtre active.", @@ -59,6 +63,7 @@ "restoreWindows": "Contrôle comment les fenêtres seront rouvertes après un redémarrage. Sélectionner 'none' pour toujours démarrer avec un espace de travail vide, 'one' pour rouvrir la dernière fenêtre avec laquelle vous avez travaillé, 'folders' pour rouvrir toutes les fenêtres qui avaient des dossiers ouverts ou 'all' pour rouvrir toutes les fenêtres de votre dernière session.", "restoreFullscreen": "Contrôle si une fenêtre doit être restaurée en mode plein écran si elle a été fermée dans ce mode.", "zoomLevel": "Modifiez le niveau de zoom de la fenêtre. La taille d'origine est 0. Chaque incrément supérieur (exemple : 1) ou inférieur (exemple : -1) représente un zoom 20 % plus gros ou plus petit. Vous pouvez également entrer des décimales pour changer le niveau de zoom avec une granularité plus fine.", + "title": "Contrôle le titre de la fenêtre basé sur l’éditeur actif. Les variables sont remplacées selon le contexte : \n${activeEditorShort} : le nom de fichier (p. ex. monfichier.txt)\n${activeEditorMedium} : le chemin d’accès du fichier par rapport au dossier de l’espace de travail (par exemple, myFolder/myFile.txt) \n${activeEditorLong} : le chemin d’accès complet du fichier (par exemple / Users/Development/myProject/myFolder/myFile.txt) \n${folderName} : le nom du dossier de l'espace de travail dans lequel le fichier est contenu (p. ex. mondossier) \n${folderPath} : le chemin d’accès au dossier de l'espace de travail dans lequel le fichier est contenu (par exemple /Users/Development/myFolder) \n{$ rootName} : le nom de l’espace de travail (p. ex. myFolder ou myWorkspace) \n${rootPath} : le chemin d’accès de l’espace de travail (par exemple, /Users/Development/myWorkspace) \n${appName} : p. ex. VS Code\n${dirty} : un indicateur si l’éditeur actif est modifié\n${separator} : un séparateur conditionnel (\" - \") qui ne s'affiche que quand ils sont entourés par des variables avec des valeurs ou du texte statique", "window.newWindowDimensions.default": "Permet d'ouvrir les nouvelles fenêtres au centre de l'écran.", "window.newWindowDimensions.inherit": "Permet d'ouvrir les nouvelles fenêtres avec la même dimension que la dernière fenêtre active.", "window.newWindowDimensions.maximized": "Permet d'ouvrir les nouvelles fenêtres de manière agrandie.", @@ -74,6 +79,8 @@ "autoDetectHighContrast": "Si cette option est activée, le thème à contraste élevé est automatiquement choisi quand Windows utilise un thème à contraste élevé. À l'inverse, le thème sombre est automatiquement choisi quand Windows n'utilise plus le thème à contraste élevé.", "titleBarStyle": "Ajustez l'apparence de la barre de titre de la fenêtre. Vous devez effectuer un redémarrage complet pour que les changements soient appliqués.", "window.nativeTabs": "Active les onglets macOS Sierra. Notez que vous devez redémarrer l'ordinateur pour appliquer les modifications et que les onglets natifs désactivent tout style de barre de titre personnalisé configuré, le cas échéant.", + "window.smoothScrollingWorkaround": "Activez cette solution de contournement si le défilement n’est plus lissé après la restauration d’une fenêtre de VS Code réduite. Il s’agit d’une solution de contournement pour un problème (https://github.com/Microsoft/vscode/issues/13612) où le défilement commence à laguer sur les périphériques dotés de pavés de précision comme les appareils Surface de Microsoft. Activer cette solution de contournement peut provoquer un peu de scintillement de mise en page après la restauration de la fenêtre depuis l’état minimisé mais est sans danger.", + "window.clickThroughInactive": "Si activée, cliquer sur une fenêtre inactive activera la fenêtre et déclenchera l’élément sous la souris, si elle est cliquable. Si désactivé, cliquer n’importe où sur une fenêtre inactive va seulement l'activer et un second clic sur l’élément sera nécessaire.", "zenModeConfigurationTitle": "Mode Zen", "zenMode.fullScreen": "Contrôle si l'activation de Zen Mode met également le banc d'essai en mode plein écran.", "zenMode.centerLayout": "Contrôle si l'activation du mode Zen centre également la disposition.", diff --git a/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index f3007ffa419..41453556314 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Modifier un point d'arrêt...", + "breakpoint": "Point d'arrêt", "functionBreakpointsNotSupported": "Les points d'arrêt de fonction ne sont pas pris en charge par ce type de débogage", "functionBreakpointPlaceholder": "Fonction où effectuer un point d'arrêt", "functionBreakPointInputAriaLabel": "Point d'arrêt sur fonction de type", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Point d'arrêt non vérifié", "functionBreakpointUnsupported": "Les points d'arrêt de fonction ne sont pas pris en charge par ce type de débogage", "breakpointDirtydHover": "Point d'arrêt non vérifié. Fichier modifié. Redémarrez la session de débogage.", + "logBreakpointUnsupported": "Log points non pris en charge par ce type de débogage", "conditionalBreakpointUnsupported": "Les points d'arrêt conditionnels ne sont pas pris en charge par ce type de débogage", "hitBreakpointUnsupported": "Les points d'arrêt conditionnels ne sont pas pris en charge par ce type de débogage" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 518d71cfb8f..b9f58b85393 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Déboguer : activer/désactiver un point d'arrêt", "conditionalBreakpointEditorAction": "Déboguer : ajouter un point d'arrêt conditionnel...", + "logPointEditorAction": "Déboguer : ajouter un Log point...", "runToCursor": "Exécuter jusqu'au curseur", "debugEvaluate": "Déboguer : évaluer", "debugAddToWatch": "Déboguer : ajouter à la fenêtre Espion", diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index bd3746f483c..44f7ce035b6 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -6,10 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "breakpointWidgetLogMessagePlaceholder": "Message à loguer lorsque le point d’arrêt est atteint. Les expressions entre {} sont interpolées. 'Entrée' pour accepter,'Echap' pour annuler.", "breakpointWidgetHitCountPlaceholder": "Arrêt quand le nombre d'accès est atteint. 'Entrée' pour accepter ou 'Échap' pour annuler.", "breakpointWidgetExpressionPlaceholder": "Arrêt quand l'expression prend la valeur true. 'Entrée' pour accepter ou 'Échap' pour annuler.", - "breakpointWidgetHitCountAriaLabel": "Le programme s'arrête ici uniquement si le nombre d'accès est atteint. Appuyez sur Entrée pour accepter, ou sur Échap pour annuler.", - "breakpointWidgetAriaLabel": "Le programme s'arrête ici uniquement si cette condition a la valeur true. Appuyez sur Entrée pour accepter, ou sur Échap pour annuler.", "expression": "Expression", - "hitCount": "Nombre d'accès" + "hitCount": "Nombre d'accès", + "logMessage": "Message de log" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 899866a157c..f960d2726e7 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -27,5 +27,6 @@ "onFirstSessionStart": "Afficher debug dans seule la barre d’état après que le débogage a été lancé pour la première fois", "showInStatusBar": "Contrôle quand la barre d’état de débogage doit être visible", "openDebug": "Contrôle si la vue de débogage doit être ouverte au démarrage de la session de débogage.", - "launch": "Configuration du lancement du débogage global. Doit être utilisée comme alternative à 'launch.json' qui est partagé entre les espaces de travail" + "launch": "Configuration du lancement du débogage global. Doit être utilisée comme alternative à 'launch.json' qui est partagé entre les espaces de travail", + "extensionHostDebugAdapter": "Exécuter l'adaptateur de débogage dans l'hôte d'extension" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 4839400b9f6..8f1025680dd 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,7 @@ "useUniqueNames": "Veuillez utiliser des noms de configuration uniques.", "app.launch.json.compound.folder": "Nom du dossier dans lequel le composé se trouve.", "app.launch.json.compounds.configurations": "Noms des configurations qui sont lancées dans le cadre de ce composé.", - "debugNoType": "Le 'type' de l'adaptateur de débogage ne peut pas être omis. Il doit s'agir du type 'string'.", + "debugNoType": "Le 'type' de débogueur ne peut pas être omis et doit être de type 'string'.", "selectDebug": "Sélectionner l'environnement", "DebugConfig.failed": "Impossible de créer le fichier 'launch.json' dans le dossier '.vscode' ({0}).", "workspace": "espace de travail", diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 2cdcf5ae1aa..7ba8fc67a9e 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Modifier un point d'arrêt...", - "disableBreakpoint": "Désactiver le point d'arrêt", - "enableBreakpoint": "Activer le point d'arrêt", + "breakpoint": "Point d'arrêt", "removeBreakpoints": "Supprimer les points d'arrêt", "removeBreakpointOnColumn": "Supprimer le point d'arrêt de la colonne {0}", "removeLineBreakpoint": "Supprimer le point d'arrêt de la ligne", @@ -21,6 +19,8 @@ "enableBreakpoints": "Activer le point d'arrêt de la colonne {0}", "enableBreakpointOnLine": "Activer le point d'arrêt de la ligne", "addBreakpoint": "Ajouter un point d'arrêt", - "conditionalBreakpoint": "Ajouter un point d'arrêt conditionnel...", + "addConditionalBreakpoint": "Ajouter un point d'arrêt conditionnel...", + "addLogPoint": "Ajouter un Log Point", + "cancel": "Annuler", "addConfiguration": "Ajouter une configuration..." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index d6c47b100cd..dc9d0f20d0f 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -29,5 +29,6 @@ "showErrors": "Afficher les erreurs", "noFolderWorkspaceDebugError": "Impossible de déboguer le fichier actif. Vérifiez qu'il est enregistré sur le disque et qu'une extension de débogage est installée pour ce type de fichier.", "cancel": "Annuler", - "DebugTaskNotFound": "Tâche '{0}' introuvable." + "DebugTaskNotFound": "Tâche '{0}' introuvable.", + "taskNotTracked": "La tâche '{0}' ne peut pas être tracée." } \ No newline at end of file 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 8689f3cf375..c3efb42b047 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Informations", - "unableToLaunchDebugAdapter": "Impossible de lancer l'adaptateur de débogage à partir de '{0}'.", - "unableToLaunchDebugAdapterNoArgs": "Impossible de lancer l'adaptateur de débogage.", - "stoppingDebugAdapter": "{0}. Arrêt de l'adaptateur de débogage.", "debugAdapterCrash": "Le processus de l'adaptateur de débogage s'est terminé de manière inattendue" } \ No newline at end of file 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 9a38baf2456..11c71d149dc 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "L'exécutable d'adaptateur de débogage '{0}' n'existe pas.", "debugAdapterCannotDetermineExecutable": "Impossible de déterminer l'exécutable pour l'adaptateur de débogage '{0}'.", - "launch.config.comment1": "Utilisez IntelliSense pour en savoir plus sur les attributs possibles.", - "launch.config.comment2": "Pointez pour afficher la description des attributs existants.", - "launch.config.comment3": "Pour plus d'informations, visitez : {0}", - "debugType": "Type de configuration.", - "debugTypeNotRecognised": "Le type de débogage n'est pas reconnu. Vérifiez que vous avez installé l'extension de débogage correspondante et qu'elle est activée.", - "node2NotSupported": "\"node2\" n'est plus pris en charge. Utilisez \"node\" à la place, et affectez la valeur \"inspector\" à l'attribut \"protocol\".", - "debugName": "Le nom de la configuration s'affiche dans le menu déroulant de la configuration de lancement.", - "debugRequest": "Type de requête de configuration. Il peut s'agir de \"launch\" ou \"attach\".", - "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", - "debugPrelaunchTask": "Tâche à exécuter avant le démarrage de la session de débogage.", - "debugWindowsConfiguration": "Attributs de configuration de lancement spécifiques à Windows.", - "debugOSXConfiguration": "Attributs de configuration de lancement spécifiques à OS X.", - "debugLinuxConfiguration": "Attributs de configuration de lancement spécifiques à Linux.", - "deprecatedVariables": "env.', 'config.' et 'command.' sont déconseillés. Utilisez 'env:', 'config:' et 'command:' à la place." + "unableToLaunchDebugAdapter": "Impossible de lancer l'adaptateur de débogage à partir de '{0}'.", + "unableToLaunchDebugAdapterNoArgs": "Impossible de lancer l'adaptateur de débogage." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..6d5a247318d --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Utilisez IntelliSense pour en savoir plus sur les attributs possibles.", + "launch.config.comment2": "Pointez pour afficher la description des attributs existants.", + "launch.config.comment3": "Pour plus d'informations, visitez : {0}", + "debugType": "Type de configuration.", + "debugTypeNotRecognised": "Le type de débogage n'est pas reconnu. Vérifiez que vous avez installé l'extension de débogage correspondante et qu'elle est activée.", + "node2NotSupported": "\"node2\" n'est plus pris en charge. Utilisez \"node\" à la place, et affectez la valeur \"inspector\" à l'attribut \"protocol\".", + "debugName": "Le nom de la configuration s'affiche dans le menu déroulant de la configuration de lancement.", + "debugRequest": "Type de requête de configuration. Il peut s'agir de \"launch\" ou \"attach\".", + "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", + "debugPrelaunchTask": "Tâche à exécuter avant le démarrage de la session de débogage.", + "debugPostDebugTask": "Tâche à exécuter après que le débogage se termine.", + "debugWindowsConfiguration": "Attributs de configuration de lancement spécifiques à Windows.", + "debugOSXConfiguration": "Attributs de configuration de lancement spécifiques à OS X.", + "debugLinuxConfiguration": "Attributs de configuration de lancement spécifiques à Linux.", + "deprecatedVariables": "env.', 'config.' et 'command.' sont déconseillés. Utilisez 'env:', 'config:' et 'command:' à la place." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..d7245a4f2e5 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "Console VS Code", + "mac.terminal.script.failed": "Échec du script '{0}'. Code de sortie : {1}", + "mac.terminal.type.not.supported": "'{0}' non pris en charge", + "press.any.key": "Appuyez sur une touche pour continuer...", + "linux.term.failed": "Échec de '{0}'. Code de sortie : {1}" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 8414cc420ad..0057e22b4a8 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "Configurer les extensions recommandées (Dossier d'espace de travail)", "malicious tooltip": "Cette extension a été signalée comme problématique.", "malicious": "Malveillant", + "disabled": "Désactivé", + "disabled globally": "Désactivé", + "disabled workspace": "Désactivé pour cet espace de travail", "disableAll": "Désactiver toutes les extensions installées", "disableAllWorkspace": "Désactiver toutes les extensions installées pour cet espace de travail", "enableAll": "Activer toutes les extension", diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index c68f4a91092..ecc9b7ee903 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -8,6 +8,7 @@ ], "name": "Nom de l'extension", "extension id": "Identificateur d'extension", + "preview": "Aperçu", "builtin": "Intégrée", "publisher": "Nom de l'éditeur", "install count": "Nombre d'installations", @@ -34,14 +35,19 @@ "view name": "Nom", "view location": "Emplacement", "localizations": "Localisations ({0})", - "localizations language name": "Nom de langue", - "localizations localized language name": "Nom de langue (localisé)", + "localizations language id": "Id de langue", + "localizations language name": "Nom de la langue", + "localizations localized language name": "Nom de la langue (localisé)", + "colorThemes": "Thèmes de couleurs ({0})", + "iconThemes": "Thèmes d’icônes ({0})", + "colors": "Couleurs ({0})", "colorId": "Id", "defaultDark": "Défaut pour le thème sombre", "defaultLight": "Défaut pour le thème clair", "defaultHC": "Défaut pour le thème de contraste élevé", "JSON Validation": "Validation JSON ({0})", "fileMatch": "Correspondance de fichier", + "schema": "Schéma", "commands": "Commandes ({0})", "command name": "Nom", "keyboard shortcuts": "Raccourcis clavier", diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 143075b6592..103a8cee967 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Cette extension est recommandée par les utilisateurs de l’espace de travail actuel.", "reallyRecommended2": "L'extension '{0}' est recommandée pour ce type de fichier.", "reallyRecommendedExtensionPack": "Le pack d’extensions '{0}' est recommandé pour ce type de fichier.", - "showRecommendations": "Afficher les recommandations", "install": "Installer", + "showRecommendations": "Afficher les recommandations", "showLanguageExtensions": "Le Marketplace a des extensions qui peuvent aider avec les fichiers '.{0}'", "workspaceRecommended": "Cet espace de travail a des recommandations d'extension.", "installAll": "Tout installer", diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 60a8451e008..f36787aa87c 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Désactiver les autres mappages de touches ({0}) pour éviter les conflits de combinaisons de touches ?", "yes": "Oui", - "no": "Non", - "betterMergeDisabled": "L'extension Better Merge est désormais intégrée, l'extension installée est désactivée et peut être désinstallée.", - "uninstall": "Désinstaller" + "no": "Non" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 557f45e5910..f395ede0a04 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,9 @@ "recommendedExtensions": "Recommandées", "otherRecommendedExtensions": "Autres recommandations", "workspaceRecommendedExtensions": "Recommandations de l’espace de travail", + "builtInExtensions": "Fonctionnalités", + "builtInThemesExtensions": "Thèmes", + "builtInBasicsExtensions": "Langages de programmation", "searchExtensions": "Rechercher des extensions dans Marketplace", "sort by installs": "Trier par : nombre d'installations", "sort by rating": "Trier par : évaluation", diff --git a/i18n/fra/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 412d69fb5bf..3d2c988d730 100644 --- a/i18n/fra/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,6 +8,8 @@ ], "textFileEditor": "Éditeur de fichier texte", "createFile": "Créer un fichier", + "relaunchWithIncreasedMemoryLimit": "Redémarrer avec {0} Mo", + "configureMemoryLimit": "Configurer la limite de mémoire", "fileEditorWithInputAriaLabel": "{0}. Éditeur de fichier texte.", "fileEditorAriaLabel": "Éditeur de fichier texte." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index a31359c7486..0e64e0d6d54 100644 --- a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,18 @@ "confirmMoveTrashMessageMultiple": "Êtes-vous sûr de vouloir supprimer les fichiers {0} suivants ?", "confirmMoveTrashMessageFolder": "Voulez-vous vraiment supprimer '{0}' et son contenu ?", "confirmMoveTrashMessageFile": "Voulez-vous vraiment supprimer '{0}' ?", + "undoBin": "Vous pouvez restaurer à partir de la Corbeille.", + "undoTrash": "Vous pouvez restaurer à partir de la Poubelle.", "doNotAskAgain": "Ne plus me demander", "confirmDeleteMessageMultiple": "Êtes-vous sûr de vouloir supprimer définitivement les fichiers {0} suivants ?", "confirmDeleteMessageFolder": "Voulez-vous vraiment supprimer définitivement '{0}' et son contenu ?", "confirmDeleteMessageFile": "Voulez-vous vraiment supprimer définitivement '{0}' ?", "irreversible": "Cette action est irréversible !", - "importFiles": "Importer des fichiers", + "binFailed": "Impossible de supprimer en utilisant la corbeille. Voulez-vous supprimer définitivement à la place ?", + "trashFailed": "Impossible de supprimer en utilisant la corbeille. Voulez-vous supprimer définitivement à la place?", + "deletePermanentlyButtonLabel": "Supprimer &&définitivement", + "retryButtonLabel": "&&Réessayer", + "addFiles": "Ajouter des fichiers", "confirmOverwrite": "Un fichier ou dossier portant le même nom existe déjà dans le dossier de destination. Voulez-vous le remplacer ?", "replaceButtonLabel": "&&Remplacer", "fileIsAncestor": "Le fichier à copier est un ancêtre du dossier de destination", diff --git a/i18n/fra/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index e5b80a13c44..a75d38efac1 100644 --- a/i18n/fra/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,8 +35,10 @@ "hotExit": "Contrôle si les fichiers non enregistrés sont mémorisés entre les sessions, ce qui permet d'ignorer la demande d'enregistrement à la sortie de l'éditeur.", "useExperimentalFileWatcher": "Utilisez le nouvel observateur de fichiers expérimental.", "defaultLanguage": "Mode de langage par défaut affecté aux nouveaux fichiers.", + "maxMemoryForLargeFilesMB": "Contrôle la mémoire disponible pour VS Code après redémarrage en essayant d’ouvrir les fichiers volumineux. Cela a le même effet que de spécifier --max-memory=NEWSIZE sur la ligne de commande.", "editorConfigurationTitle": "Éditeur", "formatOnSave": "Met en forme un fichier au moment de l'enregistrement. Un formateur doit être disponible, le fichier ne doit pas être enregistré automatiquement, et l'éditeur ne doit pas être en cours d'arrêt.", + "formatOnSaveTimeout": "Délai d’attente pour formater lors de l'enregistrement. Spécifie le délai en millisecondes pour les commandes formatOnSave. Les commandes prenant plus de temps que le délai d’attente spécifié seront annulées.", "explorerConfigurationTitle": "Explorateur de fichiers", "openEditorsVisible": "Nombre d'éditeurs affichés dans le volet Éditeurs ouverts.", "autoReveal": "Contrôle si l'Explorateur doit automatiquement afficher et sélectionner les fichiers à l'ouverture.", diff --git a/i18n/fra/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/fra/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index a5adcd52e79..c86f735842b 100644 --- a/i18n/fra/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Tapez le nom du fichier. Appuyez sur Entrée pour confirmer ou sur Échap pour annuler.", - "constructedPath": "Créer {0} dans **{1}**", "filesExplorerViewerAriaLabel": "{0}, Explorateur de fichiers", "dropFolders": "Voulez-vous ajouter les dossiers à l’espace de travail ?", "dropFolder": "Voulez-vous ajouter le dossier à l’espace de travail ?", "addFolders": "&&Ajouter les dossiers", "addFolder": "&&Ajouter le dossier", + "confirmRootsMove": "Êtes-vous sûr de vouloir modifier l’ordre de plusieurs dossiers de la racine dans votre espace de travail ?", "confirmMultiMove": "Êtes-vous sûr de vouloir déplacer les fichiers '{0}' suivants ?", + "confirmRootMove": "Êtes-vous sûr de vouloir modifier l’ordre de dossier racine '{0}' dans votre espace de travail ?", "confirmMove": "Êtes-vous certain de vouloir déplacer '{0}' ?", "doNotAskAgain": "Ne plus me demander", "moveButtonLabel": "&&Déplacer", diff --git a/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 76289731369..9139ee20000 100644 --- a/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Souhaitez-vous changer la langue de l’interface de VS Code en {0} et redémarrer ?", "yes": "Oui", "no": "Non", - "doNotAskAgain": "Ne plus me demander", + "neverAgain": "Ne plus afficher", "JsonSchema.locale": "Langue d'interface utilisateur (IU) à utiliser.", "vscode.extension.contributes.localizations": "Contribuer aux localisations de l’éditeur", "vscode.extension.contributes.localizations.languageId": "Id de la langue dans laquelle les chaînes d’affichage sont traduites.", diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 7e415dbd6de..a615adefb9e 100644 --- a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "copyMarker": "Copier" + "copyMarker": "Copier", + "copyMessage": "Copier le Message" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 556e096a283..6540dc70d56 100644 --- a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Total de {0} problèmes", - "filteredProblems": "Affichage de {0} sur {1} problèmes" + "totalProblems": "Total de {0} problèmes" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json index 0f826a200bb..37f685827c2 100644 --- a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "label": "Problèmes", + "tooltip.1": "1 problème dans ce fichier", "tooltip.N": "{0} problèmes dans ce fichier", "markers.showOnFile": "Afficher les erreurs & les avertissements sur les fichiers et dossiers." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..ab82f7468d7 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "disableFilesExclude": "Désactiver l'exclusion de fichiers.", + "clearFilter": "Effacer le filtre." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..60ed6998077 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "showing filtered problems": "Affichage de {0} de {1}" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index ced53cc49d4..9b347a7669b 100644 --- a/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,13 @@ "markers.panel.title.problems": "Problèmes", "markers.panel.aria.label.problems.tree": "Problèmes regroupés par fichiers", "markers.panel.no.problems.build": "Aucun problème n'a été détecté dans l'espace de travail jusqu'à présent.", - "markers.panel.no.problems.filters": "Résultats introuvables avec les critères de filtre fournis", + "markers.panel.no.problems.filters": "Aucun résultat trouvé avec les critères de filtre fourni.", + "markers.panel.no.problems.file.exclusions": "Tous les problèmes sont masqués car le filtre d'exclusion de fichiers est activé.", + "markers.panel.action.useFilesExclude": "Filtrer en utilisant le paramètre d’exclusion de fichiers", + "markers.panel.action.donotUseFilesExclude": "Ne pas utiliser le paramètre d’exclusion de fichiers", "markers.panel.action.filter": "Filtrer les problèmes", - "markers.panel.filter.placeholder": "Filtrer par type ou texte", + "markers.panel.filter.ariaLabel": "Filtrer les problèmes", + "markers.panel.filter.placeholder": "Filtre. Par exemple : texte, **/*.ts, !**/node_modules/**", "markers.panel.filter.errors": "erreurs", "markers.panel.filter.warnings": "avertissements", "markers.panel.filter.infos": "infos", @@ -30,5 +34,15 @@ "markers.panel.multiple.unknowns.label": "{0} inconnus", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} avec {1} problèmes", + "problems.tree.aria.label.marker.relatedInformation": " Ce problème a des références à {0} emplacements.", + "problems.tree.aria.label.error.marker": "Erreur générée par {0} : {1} à la ligne {2} et au caractère {3}. {4}", + "problems.tree.aria.label.error.marker.nosource": "Erreur : {0} à la ligne {1} et au caractère {2}.{3}", + "problems.tree.aria.label.warning.marker": "Avertissement généré par {0} : {1} à la ligne {2} et au caractère {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Avertissement : {0} à la ligne {1} et au caractère {2}.{3}", + "problems.tree.aria.label.info.marker": "Information générée par {0} : {1} à la ligne {2} et au caractère {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Information : {0} à la ligne {1} et au caractère {2}.{3}", + "problems.tree.aria.label.marker": "Problème généré par {0} : {1} à la ligne {2} et au caractère {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Problème : {0} à la ligne {1} et au caractère {2}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{0} à la ligne {1} et caractère {2} dans {3}", "errors.warnings.show.label": "Afficher les erreurs et les avertissements" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/fra/src/vs/workbench/parts/output/browser/outputActions.i18n.json index d3e62ab1acb..e15ca824e07 100644 --- a/i18n/fra/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Activer/désactiver la sortie", "clearOutput": "Effacer la sortie", "toggleOutputScrollLock": "Activer/désactiver l'arrêt du défilement de la sortie", - "switchToOutput.label": "Passer à la sortie" + "switchToOutput.label": "Passer à la sortie", + "openInLogViewer": "Ouvrir le fichier de log" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index 1453eaa812b..25674d1f305 100644 --- a/i18n/fra/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Sortie", "logViewer": "Visualiseur de journal", "viewCategory": "Affichage", - "clearOutput.label": "Effacer la sortie" + "clearOutput.label": "Effacer la sortie", + "openActiveLogOutputFile": "Affichage: Ouvrir le fichier de log de sortie actif" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 10b4d1f5b73..675ad6e2d50 100644 --- a/i18n/fra/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Raccourcis clavier", + "showDefaultKeybindings": "Afficher les raccourcis clavier par défaut", + "showUserKeybindings": "Afficher les raccourcis clavier utilisateur", "SearchKeybindings.AriaLabel": "Rechercher dans les combinaisons de touches", "SearchKeybindings.Placeholder": "Rechercher dans les combinaisons de touches", "sortByPrecedene": "Trier par priorité", diff --git a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index c0015434d3f..a5e37bb7365 100644 --- a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Ouvrir les paramètres bruts par défaut", + "openSettings": "Ouvrir les paramètres", "openGlobalSettings": "Ouvrir les paramètres utilisateur", "openGlobalKeybindings": "Ouvrir les raccourcis clavier", "openGlobalKeybindingsFile": "Ouvrir le fichier des raccourcis clavier", diff --git a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 9576e2a4552..6dca29c55a8 100644 --- a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Paramètres par défaut", "SearchSettingsWidget.AriaLabel": "Paramètres de recherche", "SearchSettingsWidget.Placeholder": "Paramètres de recherche", "noSettingsFound": "Aucun résultat", @@ -16,6 +15,8 @@ "nlpResult": "Résultats en langage naturel", "filterResult": "Résultats filtrés", "defaultSettings": "Paramètres par défaut", + "defaultUserSettings": "Paramètres utilisateur par défaut", + "defaultWorkspaceSettings": "Paramètres de l'espace de travail par défaut", "defaultFolderSettings": "Paramètres de dossier par défaut", "defaultEditorReadonly": "Modifier dans l’éditeur du côté droit pour substituer les valeurs par défaut.", "preferencesAriaLabel": "Préférences par défaut. Éditeur de texte en lecture seule." diff --git a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 657d3d560d4..def18c92de6 100644 --- a/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Afficher l’Extension \"{0}\"", "editTtile": "Modifier", "replaceDefaultValue": "Remplacer dans les paramètres", - "copyDefaultValue": "Copier dans Paramètres", - "unsupportedPHPExecutablePathSetting": "Ce paramètre doit être un paramètre utilisateur. Pour configurer PHP pour l'espace de travail, ouvrez un fichier PHP, puis cliquez sur 'Chemin PHP' dans la barre d'état.", - "unsupportedWorkspaceSetting": "Ce paramètre doit être un paramètre utilisateur.", - "unsupportedWorkbenchSetting": "Ce paramètre ne peut pas être appliqué maintenant. Il est appliqué quand vous ouvrez ce dossier directement.", - "unsupportedWorkbenchSettingDevMode": "Ce paramètre ne peut pas s’appliquer maintenant. Il s’appliquera si vous définissez la portée à 'ressource' lors de son inscription, ou lorsque vous ouvrez ce dossier directement." + "copyDefaultValue": "Copier dans Paramètres" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/fra/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 47465e0f5cf..4bae27c08c3 100644 --- a/i18n/fra/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "Installer des fournisseurs SCM supplémentaires...", "no open repo": "Il n’y a aucun fournisseur de contrôle de code source actif.", "source control": "Contrôle de code source", - "viewletTitle": "{0} : {1}" + "viewletTitle": "{0} : {1}", + "hideView": "Masquer" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json index e355577f0f7..2598b4942bd 100644 --- a/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Afficher le prochain Include Pattern de recherche", "previousSearchIncludePattern": "Afficher le précédent Include Pattern de recherche", + "nextSearchExcludePattern": "Afficher le prochain Exclude Pattern de recherche", + "previousSearchExcludePattern": "Afficher le précédent Exclude Pattern de recherche", "nextSearchTerm": "Afficher le terme de recherche suivant", "previousSearchTerm": "Afficher le terme de recherche précédent", - "showSearchViewlet": "Afficher la zone de recherche", "findInFiles": "Chercher dans les fichiers", "replaceInFiles": "Remplacer dans les fichiers", "RefreshAction.label": "Actualiser", diff --git a/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json index 89db9e01119..4cd20eea1e6 100644 --- a/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Activer/désactiver les détails de la recherche", + "searchScope.includes": "fichiers à inclure", + "label.includes": "Modèles d'inclusion de recherche", + "searchScope.excludes": "fichiers à exclure", + "label.excludes": "Modèles d'exclusion de recherche", "replaceAll.confirmation.title": "Tout remplacer", "replaceAll.confirm.button": "&&Remplacer", "replaceAll.occurrence.file.message": "{0} occurrence remplacée dans {1} fichier par '{2}'.", diff --git a/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index dbb8b385ac4..d563780176c 100644 --- a/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,15 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Rechercher", + "copyMatchLabel": "Copier", + "copyPathLabel": "Copier le chemin", + "copyAllLabel": "Copier tout", + "toggleSearchViewPositionLabel": "Basculer la position de la vue de Recherche", "findInFolder": "Rechercher dans le dossier...", "findInWorkspace": "Trouver dans l’espace de travail...", "showTriggerActions": "Atteindre le symbole dans l'espace de travail...", "name": "Rechercher", - "search": "Rechercher", "showSearchViewl": "Afficher la zone de recherche", "view": "Affichage", "findInFiles": "Chercher dans les fichiers", @@ -26,5 +30,5 @@ "search.followSymlinks": "Contrôle s'il faut suivre les symlinks pendant la recherche.", "search.smartCase": "Recherches de manière non case-sensitive si le modèle est entièrement en minuscules, dans le cas contraire, recherche de manière case-sensitive", "search.globalFindClipboard": "Contrôle si la vue de recherche doit lire ou modifier le presse-papiers partagé sur macOS", - "search.location": "Aperçu : contrôle si la recherche est affichée comme une vue dans la barre latérale ou comme un panneau dans la zone correspondante pour libérer de l'espace horizontal. La prochaine version de la recherche dans le panneau prévoit une amélioration de la disposition horizontale qui ne sera plus un aperçu." + "search.location": "Contrôle si la recherche s’affichera comme une vue dans la barre latérale ou comme un panneau dans la zone de panneau pour plus d'espace horizontal. La prochaine version de la Recherche dans le panneau aura une meilleure présentation horizontale et cela ne sera plus une preview." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 89d6a7d5a6e..19e27f8073a 100644 --- a/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Aidez-nous à améliorer le support de {0}", "takeShortSurvey": "Répondre à une enquête rapide", "remindLater": "Me le rappeler plus tard", - "neverAgain": "Ne plus afficher", - "helpUs": "Aidez-nous à améliorer le support de {0}" + "neverAgain": "Ne plus afficher" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 41963e2a8e9..6f71b2a1bba 100644 --- a/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Acceptez-vous de répondre à une enquête rapide ?", "takeSurvey": "Répondre à l'enquête", "remindLater": "Me le rappeler plus tard", - "neverAgain": "Ne plus afficher", - "surveyQuestion": "Acceptez-vous de répondre à une enquête rapide ?" + "neverAgain": "Ne plus afficher" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index c58795e9606..cb12fed4c55 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Modèle de problème ou bien nom d'un modèle de problème faisant l'objet d'une contribution ou prédéfini. Peut être omis si base est spécifié.", "ProblemMatcherSchema.base": "Nom d'un détecteur de problèmes de correspondance de base à utiliser.", "ProblemMatcherSchema.owner": "Propriétaire du problème dans Code. Peut être omis si base est spécifié. Prend la valeur 'external' par défaut en cas d'omission et si base n'est pas spécifié.", + "ProblemMatcherSchema.source": "Une chaîne lisible par humain qui décrit la source de ce diagnostic, par exemple 'typescript' ou 'super lint'.", "ProblemMatcherSchema.severity": "Gravité par défaut des problèmes de capture. Est utilisé si le modèle ne définit aucun groupe de correspondance pour la gravité.", "ProblemMatcherSchema.applyTo": "Contrôle si un problème signalé pour un document texte s'applique uniquement aux documents ouverts ou fermés, ou bien à l'ensemble des documents.", "ProblemMatcherSchema.fileLocation": "Définit la façon dont les noms de fichiers signalés dans un modèle de problème doivent être interprétés.", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index c560e29a2d5..9e767348573 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "N'assigne la tâche à aucun groupe", "JsonSchema.tasks.group": "Définit le groupe d'exécution auquel la tâche appartient. Prend en charge \"build\" pour l'ajouter au groupe de génération et \"test\" pour l'ajouter au groupe de test.", "JsonSchema.tasks.type": "Définit si la tâche est exécutée comme un processus ou comme une commande à l’intérieur d’un shell.", + "JsonSchema.command.quotedString.value": "La valeur réelle de la commande", + "JsonSchema.tasks.quoting.escape": "Echappe les caractères à l’aide du caractère d’échappement du shell (par exemple: ` sous PowerShell et \\ sous bash).", + "JsonSchema.tasks.quoting.strong": "Entoure l’argument en utilisant le caractère guillemet du shell (par exemple: \" sous PowerShell et bash).", + "JsonSchema.tasks.quoting.weak": "Entoure l’argument en utilisant le caractère apostrophe du shell (par exemple: ' sous PowerShell et bash).", + "JsonSchema.command.quotesString.quote": "Comment la valeur de la commande devrait être donnée.", "JsonSchema.command": "Commande à exécuter. Il peut s'agir d'un programme externe ou d'une commande d'interpréteur de commandes.", + "JsonSchema.args.quotedString.value": "La valeur réelle de l’argument", + "JsonSchema.args.quotesString.quote": "Comment la valeur de l’argument devrait être donnée.", "JsonSchema.tasks.args": "Arguments passés à la commande quand cette tâche est appelée.", "JsonSchema.tasks.label": "L'étiquette de l’interface utilisateur de la tâche", "JsonSchema.version": "Numéro de version de la configuration.", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 61c4bc5cb90..87d639c304b 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,7 +11,9 @@ "totalErrors": "{0} erreurs", "totalWarnings": "{0} avertissements", "totalInfos": "{0} infos", + "problems": "Problèmes", "building": "Génération...", + "manyProblems": "10K+", "runningTasks": "Afficher les tâches en cours d'exécution", "tasks": "Tâches", "TaskSystem.noHotSwap": "Changer le moteur d’exécution de tâches avec une tâche active en cours d’exécution nécessite de recharger la fenêtre", @@ -29,8 +31,10 @@ "selectProblemMatcher": "Sélectionner pour quel type d’erreurs et d’avertissements analyser la sortie de la tâche", "customizeParseErrors": "La configuration de tâche actuelle contient des erreurs. Corrigez-les avant de personnaliser une tâche. ", "moreThanOneBuildTask": "De nombreuses tâches de génération sont définies dans le fichier tasks.json. Exécution de la première.\n", - "TaskSystem.activeSame.background": "La tâche '{0}' est déjà active et en mode arrière-plan. Pour la terminer, utiliser `Terminer la Tâche...` dans le menu Tâches.", - "TaskSystem.activeSame.noBackground": "La tâche '{0}' est déjà active. Pour la terminer, utiliser `Terminer la Tâche...` dans le menu Tâches.", + "TaskSystem.activeSame.background": "La tâche '{0}\" est déjà active et en mode arrière-plan.", + "TaskSystem.activeSame.noBackground": "La tâche '{0}' est déjà active.", + "terminateTask": "Terminer la tâche", + "restartTask": "Redémarrer la tâche", "TaskSystem.active": "Une tâche est déjà en cours d'exécution. Terminez-la avant d'exécuter une autre tâche.", "TaskSystem.restartFailed": "Échec de la fin de l'exécution de la tâche {0}", "TaskService.noConfiguration": "Erreur : La détection de la tâche {0} n’a pas contribué à une tâche pour la configuration suivante : {1}, la tâche sera ignorée.\n", @@ -47,8 +51,8 @@ "recentlyUsed": "tâches récemment utilisées", "configured": "tâches configurées", "detected": "tâches détectées", - "TaskService.notAgain": "Ne plus afficher", "TaskService.ignoredFolder": "Les dossiers d’espace de travail suivants sont ignorés car ils utilisent task version 0.1.0 : ", + "TaskService.notAgain": "Ne plus afficher", "TaskService.pickRunTask": "Sélectionner la tâche à exécuter", "TaslService.noEntryToRun": "Aucune tâche à exécuter n'a été trouvée. Configurer les tâches...", "TaskService.fetchingBuildTasks": "Récupération des tâches de génération...", diff --git a/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index d4389797bef..6d14510f43b 100644 --- a/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Warning: options.cwd must be of type string. Ignoring value {0}\n", + "ConfigurationParser.inValidArg": "Erreur : l'argument de commande doit être une chaîne ou une chaîne entre apostrophes. La valeur fournie est : \n{0}", "ConfigurationParser.noargs": "Erreur : les arguments de commande doivent correspondre à un tableau de chaînes. La valeur fournie est :\n{0}", "ConfigurationParser.noShell": "Avertissement : La configuration de l'interpréteur de commandes n'est prise en charge que durant l'exécution des tâches dans le terminal.", "ConfigurationParser.noName": "Erreur : le détecteur de problèmes de correspondance dans la portée de déclaration doit avoir un nom :\n{0}\n", diff --git a/i18n/fra/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/fra/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..e89604d8194 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "Couleur d'arrière-plan du terminal, permet d'appliquer au terminal une couleur différente de celle du panneau.", + "terminal.foreground": "Couleur de premier plan du terminal.", + "terminalCursor.foreground": "La couleur de premier plan du curseur du terminal.", + "terminalCursor.background": "La couleur d’arrière-plan du curseur terminal. Permet de personnaliser la couleur d’un caractère recouvert par un curseur de bloc.", + "terminal.selectionBackground": "La couleur d’arrière-plan de sélection du terminal.", + "terminal.border": "Couleur de bordure qui sépare les volets de fractionnement dans le terminal. La valeur par défaut est panel.border.", + "terminal.ansiColor": "Couleur ansi '{0}' dans le terminal." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 6b1951d0758..827b3155e46 100644 --- a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -21,6 +21,7 @@ "workbench.action.terminal.newWorkspacePlaceholder": "Sélectionner le répertoire de travail actuel pour le nouveau terminal", "workbench.action.terminal.newInActiveWorkspace": "Créer un nouveau Terminal intégré (dans l'espace de travail actif)", "workbench.action.terminal.split": "Diviser le terminal", + "workbench.action.terminal.splitInActiveWorkspace": "Diviser le Terminal (dans l'espace de travail actif)", "workbench.action.terminal.focusPreviousPane": "Focus sur le panneau précédent", "workbench.action.terminal.focusNextPane": "Focus sur le panneau suivant", "workbench.action.terminal.resizePaneLeft": "Redimensionner le panneau vers la gauche", @@ -43,6 +44,7 @@ "workbench.action.terminal.scrollUpPage": "Faire défiler vers le haut (page)", "workbench.action.terminal.scrollToTop": "Faire défiler jusqu'en haut", "workbench.action.terminal.clear": "Effacer", + "workbench.action.terminal.clearSelection": "Effacer la sélection", "workbench.action.terminal.allowWorkspaceShell": "Autoriser la configuration de l'interpréteur de commandes de l'espace de travail", "workbench.action.terminal.disallowWorkspaceShell": "Interdire la configuration de l'interpréteur de commandes de l'espace de travail", "workbench.action.terminal.rename": "Renommer", @@ -51,5 +53,9 @@ "workbench.action.terminal.hideFindWidget": "Masquer le widget de recherche", "nextTerminalFindTerm": "Afficher le terme de recherche suivant", "previousTerminalFindTerm": "Afficher le terme de recherche précédent", - "quickOpenTerm": "Changer de terminal actif" + "quickOpenTerm": "Changer de terminal actif", + "workbench.action.terminal.scrollToPreviousCommand": "Faire défiler jusqu'à la commande précédente", + "workbench.action.terminal.scrollToNextCommand": "Faire défiler jusqu'à la prochaine commande", + "workbench.action.terminal.selectToPreviousCommand": "Sélectionnez pour la commande précédente", + "workbench.action.terminal.selectToNextCommand": "Sélectionnez pour la commande suivante" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index a4dbf23f4f2..ebee0e36848 100644 --- a/i18n/fra/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Cet espace de travail contient des paramètres qui ne peuvent être définis que dans les paramètres utilisateur ({0}). Cliquez [ici]({1}) pour en savoir plus.", "openWorkspaceSettings": "Ouvrir les paramètres d'espace de travail", - "dontShowAgain": "Ne plus afficher", - "unsupportedWorkspaceSettings": "Cet espace de travail contient des paramètres qui ne peuvent être définis que dans les paramètres utilisateur ({0}). Cliquez [ici]({1}) pour en savoir plus." + "dontShowAgain": "Ne plus afficher" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json index cdcec8f9581..1c0f5e94e48 100644 --- a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Plus tard", "releaseNotes": "Notes de publication", "showReleaseNotes": "Afficher les notes de publication", "read the release notes": "Bienvenue dans {0} v{1} ! Voulez-vous lire les notes de publication ?", @@ -16,13 +15,14 @@ "updateIsReady": "Nouvelle mise à jour de {0} disponible.", "noUpdatesAvailable": "Aucune mise à jour n'est disponible actuellement.", "ok": "OK", - "download now": "Télécharger maintenant", "thereIsUpdateAvailable": "Une mise à jour est disponible.", - "installUpdate": "Installer la mise à jour", + "download now": "Télécharger maintenant", + "later": "Plus tard", "updateAvailable": "Il y a une mise à jour disponible : {0} {1}", + "installUpdate": "Installer la mise à jour", "updateInstalling": "{0} {1} est en train d'être installé en arrière-plan, nous vous ferons savoir quand c’est fini.", + "updateAvailableAfterRestart": "Redémarrer {0} pour appliquer la dernière mise à jour.", "updateNow": "Mettre à jour maintenant", - "updateAvailableAfterRestart": "{0} sera mis à jour après avoir redémarré.", "commandPalette": "Palette de commandes...", "settings": "Paramètres", "keyboardShortcuts": "Raccourcis clavier", diff --git a/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index de7accdb519..da5ba7cccbd 100644 --- a/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "éditeur webview" + "webview.editor.label": "éditeur webview", + "developer": "Développeur" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..09dc4357050 --- /dev/null +++ b/i18n/fra/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Ouvrir les outils de développement Webview", + "refreshWebviewLabel": "Recharger les Webviews" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index 0b9766fe701..f34ed7abe61 100644 --- a/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Aidez-nous à améliorer VS Code en permettant à Microsoft de recueillir des données d’utilisation. Lisez notre [déclaration sur la vie privée]({0}) et apprenez comment [se désengager]({1}).", + "telemetryOptOut.optInNotice": "Aidez-nous à améliorer VS Code en permettant à Microsoft de recueillir des données d’utilisation. Lisez notre [déclaration sur la vie privée]({0}) et apprenez comment [se désengager]({1}).", "telemetryOptOut.readMore": "Lire la suite" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json b/i18n/fra/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json index a6000329037..6a31ba50230 100644 --- a/i18n/fra/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json @@ -13,6 +13,7 @@ "welcomeOverlay.extensions": "Gérer les extensions", "welcomeOverlay.problems": "Afficher les erreurs et avertissements", "welcomeOverlay.commandPalette": "Rechercher et exécuter toutes les commandes", + "welcomeOverlay.notifications": "Afficher les notifications", "welcomeOverlay": "Vue d'ensemble de l'interface utilisateur", "hideWelcomeOverlay": "Masquer la vue d'ensemble de l'interface", "help": "Aide" diff --git a/i18n/fra/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/fra/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 2e114c616c5..25e95767831 100644 --- a/i18n/fra/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,8 @@ "welcomePage.installExtensionPacks": "Outils et langages", "welcomePage.installExtensionPacksDescription": "Installer un support pour {0} et {1}", "welcomePage.moreExtensions": "plus", - "welcomePage.installKeymapDescription": "Installer les raccourcis clavier", - "welcomePage.installKeymapExtension": "Installer les raccourcis clavier de {0} et {1}", + "welcomePage.installKeymapDescription": "Paramètres et combinaisons de touches", + "welcomePage.installKeymapExtension": "Installer les paramètres et les raccourcis clavier de {0} et {1}", "welcomePage.others": "autres", "welcomePage.colorTheme": "Thème de couleur", "welcomePage.colorThemeDescription": "Personnalisez l'apparence de l'éditeur et de votre code", diff --git a/i18n/fra/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json b/i18n/fra/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json index bce1f4235aa..dc4ae0dbd9a 100644 --- a/i18n/fra/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json +++ b/i18n/fra/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json @@ -8,6 +8,7 @@ ], "vscode.extension.contributes.configuration.title": "Résumé des paramètres. Cette étiquette va être utilisée dans le fichier de paramètres en tant que commentaire de séparation.", "vscode.extension.contributes.configuration.properties": "Description des propriétés de configuration.", + "scope.application.description": "Configuration spécifique de l'application, qui peut être configurée uniquement dans les paramètres utilisateur.", "scope.window.description": "Configuration spécifique de la fenêtre, qui peut être configurée dans les paramètres utilisateur ou de l'espace de travail.", "scope.resource.description": "Configuration spécifique de la ressource, qui peut être configurée dans les paramètres utilisateur, de l'espace de travail ou du dossier.", "scope.description": "Portée dans laquelle la configuration s’applique. Les portées disponibles sont `window` et `resource`.", diff --git a/i18n/fra/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/fra/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 0c4ab4d6564..9b731129c27 100644 --- a/i18n/fra/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -11,6 +11,7 @@ "open": "Ouvrir les paramètres", "saveAndRetry": "Enregistrer et Réessayer", "errorUnknownKey": "Impossible d’écrire dans {0} car {1} n’est pas une configuration recommandée.", + "errorInvalidWorkspaceConfigurationApplication": "Impossible d’écrire {0} dans paramètres de l’espace de travail. Ce paramètre peut être écrit uniquement dans les paramètres de l’utilisateur.", "errorInvalidFolderConfiguration": "Impossible d’écrire dans les paramètres de dossier parce que {0} ne supporte pas la portée de ressource de dossier.", "errorInvalidUserTarget": "Impossible d’écrire dans les paramètres utilisateur parce que {0} ne supporte pas de portée globale.", "errorInvalidWorkspaceTarget": "Impossible d’écrire dans les paramètres de l’espace de travail car {0} ne supporte pas de portée d’espace de travail dans un espace de travail multi dossiers.", diff --git a/i18n/fra/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/fra/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..c28d44842af --- /dev/null +++ b/i18n/fra/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedApplicationSetting": "Ce paramètre ne peut être appliqué que dans les paramètres utilisateur", + "unsupportedWindowSetting": "Ce paramètre ne peut pas être appliqué maintenant. Il est appliqué quand vous ouvrez ce dossier directement." +} \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index 53b77e34248..e5809c2c66f 100644 --- a/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -6,16 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "canNotResolveWorkspaceFolderMultiRoot": "${workspaceFolder} ne peut pas être résolu dans un espace de travail de dossiers multiples. Contrôlez la portée de ces variables en utilisant : et un nom de dossier.", - "canNotResolveWorkspaceFolder": "${workspaceFolder} ne peut pas être résolu. Veuillez ouvrir un dossier.", - "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} ne peut pas être résolu dans un espace de travail de dossiers multiples. Contrôlez la portée de ces variables en utilisant : et un nom de dossier.", - "canNotResolveFolderBasename": "${workspaceFolderBasename} ne peut pas être résolu. Veuillez ouvrir un dossier.", - "canNotResolveLineNumber": "${lineNumber} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveSelectedText": "${selectedText} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveFile": "${file} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveRelativeFile": "${relativeFile} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveFileDirname": "${fileDirname} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveFileExtname": "${fileExtname} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveFileBasename": "${fileBasename} ne peut pas être résolu, veuillez ouvrir un éditeur.", - "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} ne peut pas être résolu, veuillez ouvrir un éditeur." + "canNotResolveWorkspaceFolderMultiRoot": "'${workspaceFolder}' ne peut pas être résolu dans un espace de travail de dossiers multiples. Gérer la portée de cette variable en utilisant ':' et un nom de dossier d’espace de travail.", + "canNotResolveWorkspaceFolder": "'${workspaceFolder}' ne peut pas être résolu. Veuillez ouvrir un dossier.", + "canNotResolveFolderBasenameMultiRoot": "'${workspaceFolderBasename}' ne peut pas être résolu dans un espace de travail de dossiers multiples. Gérer la portée de cette variable en utilisant ':' et un nom de dossier d’espace de travail.", + "canNotResolveFolderBasename": "'${workspaceFolderBasename}' ne peut pas être résolu. Veuillez ouvrir un dossier.", + "canNotResolveLineNumber": "'${lineNumber}' ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveSelectedText": "'${selectedText}' ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveFile": "${file} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveRelativeFile": "${relativeFile} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveFileDirname": "${fileDirname} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveFileExtname": "${fileExtname} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveFileBasename": "${fileBasename} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur.", + "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} ne peut pas être résolu. Veuillez s’il vous plaît ouvrir un éditeur." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 0e26b3fa0ff..f79185e93b2 100644 --- a/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -6,10 +6,12 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "vscode.extension.engines": "Compatibilité de moteur.", "vscode.extension.engines.vscode": "Pour les extensions VS Code, spécifie la version de VS Code avec laquelle l'extension est compatible. Ne peut pas être *. Exemple : ^0.10.5 indique une compatibilité avec la version minimale 0.10.5 de VS Code.", "vscode.extension.publisher": "Éditeur de l'extension VS Code.", "vscode.extension.displayName": "Nom d'affichage de l'extension utilisée dans la galerie VS Code.", "vscode.extension.categories": "Catégories utilisées par la galerie VS Code pour catégoriser l'extension.", + "vscode.extension.category.languages.deprecated": "Utiliser 'Langages de programmation' à la place", "vscode.extension.galleryBanner": "Bannière utilisée dans le marketplace VS Code.", "vscode.extension.galleryBanner.color": "Couleur de la bannière de l'en-tête de page du marketplace VS Code.", "vscode.extension.galleryBanner.theme": "Thème de couleur de la police utilisée dans la bannière.", @@ -28,6 +30,8 @@ "vscode.extension.badges.url": "URL de l'image du badge.", "vscode.extension.badges.href": "Lien du badge.", "vscode.extension.badges.description": "Description du badge.", + "vscode.extension.markdown": "Contrôle le moteur de rendu de Markdown utilisé sur le marché. Github (par défaut) ou standard.", + "vscode.extension.qna": "Contrôle le lien Q&A sur le marché. Mettre à marketplace pour activer le site de Q&A du Marketplace par défaut. Mettre une chaîne pour fournir l’URL d’un site personnalisé de Q&A. Mettre à false pour désactiver complètement les Q&A.", "vscode.extension.extensionDependencies": "Dépendances envers d'autres extensions. L'identificateur d'une extension est toujours ${publisher}.${name}. Exemple : vscode.csharp.", "vscode.extension.scripts.prepublish": "Le script exécuté avant le package est publié en tant qu'extension VS Code.", "vscode.extension.scripts.uninstall": "Désinstallez le crochet pour l'extension VS Code. Script exécuté quand l'extension est complètement désinstallée dans VS Code et au redémarrage de VS Code (arrêt, puis démarrage). Seuls les scripts Node sont pris en charge.", diff --git a/i18n/fra/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/fra/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 2a4ba8f78bb..7604f9ffac7 100644 --- a/i18n/fra/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionsDisabled": "Toutes les extensions sont désactivées.", "extensionHostProcess.crash": "L'hôte d’extension s'est arrêté de manière inattendue.", "extensionHostProcess.unresponsiveCrash": "L'hôte d'extension s'est arrêté, car il ne répondait pas.", - "devTools": "Outils de développement", + "devTools": "Ouvrir les outils de développement", "restart": "Redémarrer l’hôte d'extension", "overwritingExtension": "Remplacement de l'extension {0} par {1}.", "extensionUnderDevelopment": "Chargement de l'extension de développement sur {0}", diff --git a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 2c081ca984a..bd1e8163634 100644 --- a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,24 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5 est obligatoire. Suivez le lien pour l'installer.", "installNet": "Télécharger .NET Framework 4.5", "neverShowAgain": "Ne plus afficher", - "netVersionError": "Microsoft .NET Framework 4.5 est obligatoire. Suivez le lien pour l'installer.", + "enospcError": "{0} n’est pas en mesure de surveiller les modifications de fichiers dans ce grand espace de travail. Veuillez suivre le lien d'instructions pour résoudre ce problème.", "learnMore": "Instructions", + "fileInvalidPath": "Ressource de fichier non valide ({0})", + "fileIsDirectoryError": "Le fichier est un répertoire", + "fileNotModifiedError": "Fichier non modifié depuis", + "fileTooLargeForHeapError": "Pour ouvrir un fichier de cette taille, vous devez redémarrer VS Code et lui permettre d’utiliser plus de mémoire", + "fileTooLargeError": "Fichier trop volumineux pour être ouvert", + "fileNotFoundError": "Fichier introuvable ({0})", + "fileBinaryError": "Il semble que le fichier soit binaire. Impossible de l'ouvrir en tant que texte", + "filePermission": "Autorisation refusée en écrivant dans le fichier ({0})", + "fileExists": "Le fichier à créer existe déjà ({0})", + "fileModifiedError": "Fichier modifié depuis", + "fileReadOnlyError": "Fichier en lecture seule", + "fileMoveConflict": "Déplacement/copie impossible. Le fichier existe déjà dans la destination.", + "unableToMoveCopyError": "Impossible de déplacer/copier. Le fichier remplace le dossier qui le contient.", "binFailed": "Échec du déplacement de '{0}' vers la corbeille", "trashFailed": "Échec du déplacement de '{0}' vers la corbeille" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/fra/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 2908555a1fa..d783ab341de 100644 --- a/i18n/fra/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Fichier introuvable ({0})", "fileIsDirectoryError": "Le fichier est un répertoire", "fileNotModifiedError": "Fichier non modifié depuis", "fileBinaryError": "Il semble que le fichier soit binaire. Impossible de l'ouvrir en tant que texte" diff --git a/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index abfb642e45b..e3c83da3c2d 100644 --- a/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "Nom de portée TextMate utilisé par le fichier tmLanguage.", "vscode.extension.contributes.grammars.path": "Chemin du fichier tmLanguage. Le chemin est relatif au dossier d'extensions et commence généralement par './syntaxes/'.", "vscode.extension.contributes.grammars.embeddedLanguages": "Mappage du nom de portée à l'ID de langage si cette grammaire contient des langages incorporés.", + "vscode.extension.contributes.grammars.tokenTypes": "Un mappage entre un nom d'étendue et des types de token.", "vscode.extension.contributes.grammars.injectTo": "Liste de noms des portées de langage auxquelles cette grammaire est injectée." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 9cabecf7e05..006e800804b 100644 --- a/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/fra/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "Chaîne attendue dans 'contributes.{0}.path'. Valeur fournie : {1}", "invalid.injectTo": "Valeur non valide dans 'contributes.{0}.injectTo'. Il doit s'agir d'un tableau de noms de portées de langage. Valeur fournie : {1}", "invalid.embeddedLanguages": "Valeur non valide dans 'contributes.{0}.embeddedLanguages'. Il doit s'agir d'un mappage d'objets entre le nom de portée et le langage. Valeur fournie : {1}", + "invalid.tokenTypes": "Valeur non valide dans 'contribue.{0}.tokenTypes'. Il doit s'agir d'un mappage d’objets entre un nom d’étendue et un type de jeton. Valeur fournie : {1}", "invalid.path.1": "'contributes.{0}.path' ({1}) est censé être inclus dans le dossier ({2}) de l'extension. Cela risque de rendre l'extension non portable.", "no-tm-grammar": "Aucune grammaire TM n'est inscrite pour ce langage." } \ No newline at end of file diff --git a/i18n/hun/extensions/emmet/package.i18n.json b/i18n/hun/extensions/emmet/package.i18n.json index 8d55c3feff5..0445f7ccce3 100644 --- a/i18n/hun/extensions/emmet/package.i18n.json +++ b/i18n/hun/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Emmet-profilokat és -kódtöredékeket tartalmazó mappa elérési útja.", "emmetShowExpandedAbbreviation": "Kibontott Emmet-rövidítések megjelenítése javaslatként. Az \"inMarkupAndStylesheetFilesOnly\" beállítás csak a html, haml, jade, slim, xml, xsl, css, scss, sass, less és stylus típusú tartalmat jelenti. Az \"always\" beállítás a fájl összes részére vonatkozik a jelölőnyelvtől/css-től függetlenül.", "emmetShowAbbreviationSuggestions": "Lehetséges Emmet-rövidítések megjelenítése javaslatként. Nem használható a stíluslapokon vagy ha az emmet.showExpandedAbbreviation értéke \"never\".", - "emmetIncludeLanguages": "Emmet-rövidítések engedélyezése olyan nyelvek esetében, amelyek alapértelmezés szerint nem támogatottak. Egy megfeleltetést kell felvenni a nyelv és egy emmet által támogatott nyelv között.\nPl.: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "Az Emmet-kódrészletekben használt változók", "emmetTriggerExpansionOnTab": "Ha engedélyezve van, akkor az Emmet-rövidítések a Tab billentyű lenyomásával bonthatók ki.", "emmetPreferences": "Beállítások, melyek módosítják az Emmet műveleteinek és feloldó algoritmusainak viselkedését.", diff --git a/i18n/hun/extensions/markdown-language-features/out/security.i18n.json b/i18n/hun/extensions/markdown-language-features/out/security.i18n.json index def0928c3a2..19ebd5b969e 100644 --- a/i18n/hun/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/hun/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,7 @@ ], "strict.title": "Szigorú", "strict.description": "Csak biztonságos tartalmak betöltése", + "insecureLocalContent.title": "Nem biztonságos helyi tartalom engedélyezése", "insecureContent.title": "Nem biztonságos tartalom engedélyezése", "insecureContent.description": "Tartalom betöltésének engedélyezése HTTP-n keresztül.", "disable.title": "Letiltás", diff --git a/i18n/hun/extensions/php/package.i18n.json b/i18n/hun/extensions/php/package.i18n.json index 41a3d3f94af..30301605646 100644 --- a/i18n/hun/extensions/php/package.i18n.json +++ b/i18n/hun/extensions/php/package.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP nyelvi funkciók", "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a PHP-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/commands.i18n.json b/i18n/hun/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..2d667c10166 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Nyisson meg egy mappát a VS Code-ban typescriptes vagy javascriptes projekt használatához!", + "typescript.projectConfigUnsupportedFile": "Nem sikerült meghatározni a TypeScript- vagy JavaScript-projektet. Nem támogatott fájltípus", + "typescript.projectConfigCouldNotGetInfo": "Nem sikerült meghatározni a TypeScript- vagy JavaScript-projektet", + "typescript.noTypeScriptProjectConfig": "A fájl nem egy TypeScript-projekt része. További információkat [ide]({0}) kattintva tudhat meg.", + "typescript.noJavaScriptProjectConfig": "A fájl nem egy JavaScript-projekt része. További információkat [ide]({0}) kattintva tudhat meg.", + "typescript.configureTsconfigQuickPick": "tsconfig.json konfigurálása", + "typescript.configureJsconfigQuickPick": "jsconfig.json konfigurálása" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..30437c7682c --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Válasszon végrehajtandó kódműveletet!", + "acquiringTypingsLabel": "Típusdefiníciók letöltése...", + "acquiringTypingsDetail": "Típusdefiníciók letöltése az IntelliSense-hez.", + "autoImportLabel": "Automatikus importálás a következő helyről: {0}" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..c7d2746fdb4 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Engedélyezi a JavaScript-fájlok szemantikai ellenőrzését. A fájl tetején kell szerepelnie.", + "ts-nocheck": "Letiltja a JavaScript-fájlok szemantikai ellenőrzését. A fájl tetején kell szerepelnie.", + "ts-ignore": "Elfedi a fájl következő sorában található @ts-check-hibákat." +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..7207bf3b210 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 implementáció", + "manyImplementationLabel": "{0} implementáció", + "implementationsErrorLabel": "Nem sikerült meghatározni az implementációkat" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..d6bb7d7c26e --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc-megjegyzés" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..4573e2028b6 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Importálások rendezése" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..e76bf145eff --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (összes javítása a fájlban)" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..ac0763b55e4 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 referencia", + "manyReferenceLabel": "{0} referencia", + "referenceErrorLabel": "Nem sikerült meghatározni a referenciákat" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..d7ad58409e7 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "buildelés – {0}", + "buildAndWatchTscLabel": "figyelés – {0}" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/hun/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..5c3b49a6031 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "A(z) {0} elérési út nem egy érvényes tsserver-telepítésre mutat. A beépített TypeScript-verzió lesz használva.", + "serverCouldNotBeStarted": "Nem sikerült elindítani a TypeScript nyelvi szervert. Hibaüzenet: {0}", + "typescript.openTsServerLog.notSupported": "A TS-szerver naplózáshoz TS 2.2.2+ szükséges", + "typescript.openTsServerLog.loggingNotEnabled": "A TS-szervernaplózás ki van kapcsolva. Állítsa be a `typescript.tsserver.log` beállítást, majd indítsa újra a TS-szervert a naplózás engedélyezéséhez!", + "typescript.openTsServerLog.enableAndReloadOption": "Naplózás engedélyezése és TS-szerver újraindítása", + "typescript.openTsServerLog.noLogFile": "A TS-szerver nem kezdett el naplózni", + "openTsServerLog.openFileFailedFailed": "A TS-szervernapló nem nyitható meg", + "serverDiedAfterStart": "A TypeScript nyelvi szolgáltatás öt alkalommal omlott össze rögtön azután, hogy el lett indítva. A szolgáltatás nem lesz újraindítva.", + "serverDiedReportIssue": "Probléma jelentése", + "serverDied": "A TypeScript nyelvi szolgáltatás öt alkalommal omlott össze az elmúlt öt percben." +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..93f5c9220fa --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "érvénytelen verzió" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..3e5d8de4e07 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "A JavaScript/TypeScript funkciók teljes projektre való engedélyezéséhez zárja ki a sok fájlt tartalmazó mappákat. Például: {0}", + "hintExclude.generic": "A JavaScript/TypeScript funkciók teljes projektre való engedélyezéséhez zárja ki azokat a mappákat, amelyben olyan forrásfájlok találhatók, melyen nem dolgozik. ", + "large.label": "Kivételek konfigurálása", + "hintExclude.tooltip": "A JavaScript/TypeScript funkciók teljes projektre való engedélyezéséhez zárja ki azokat a mappákat, amelyben olyan forrásfájlok találhatók, melyen nem dolgozik. " +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..4e9549aeb04 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Adatok lekérése a jobb typescriptes IntelliSense-hez", + "typesInstallerInitializationFailed.title": "Nem sikerült telepíteni a típusdefiníciós fájlokat a javascriptes nyelvi funkciókhoz. Győződjön meg róla, hogy az NPM telepítve van vagy módosítsa a 'typescript.npm' beállítás értékét a felhasználói beállításokban. További információkat [ide]({0}) kattintva tudhat meg.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Ne jelenítse meg újra" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..919b1678312 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "A VSCode verziójának használata", + "useWorkspaceVersionOption": "A munkaterület verziójának használata", + "learnMore": "További információ", + "selectTsVersion": "Válassza ki a javascriptes és typescriptes nyelvi funkciókhoz használt TypeScript-verziót" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/hun/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..4e8b25cde58 --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Nem sikerült meghatározni a TypeScript-verziót ezen az elérési úton", + "noBundledServerFound": "A VSCode beépített tsserverét törölte egy másik alkalmazás, például egy hibásan viselkedő víruskereső eszköz. Telepítse újra a VSCode-ot!" +} \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-language-features/package.i18n.json b/i18n/hun/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..59e6eed00dc --- /dev/null +++ b/i18n/hun/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,58 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript és JavaScript nyelvi funkciók", + "description": "Széleskörű nyelvi támogatás JavaScripthez és TypeScripthez.", + "typescript.reloadProjects.title": "Projekt újratöltése", + "javascript.reloadProjects.title": "Projekt újratöltése", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Függvények kiegészítése paraméterdefiníciójukkal.", + "typescript.tsdk.desc": "A tsservert és a lib*.d.ts fájlokat tartalmazó mappa elérési útja.", + "typescript.disableAutomaticTypeAcquisition": "Automatikus típusdefiníció-letöltés letiltása. Legalább 2.0.6-os TypeScriptet igényel.", + "typescript.tsserver.log": "Engedélyezi a TS-szerver naplózását egy fájlba. Ez a napló a TS-szerverrel kapcsolatos problémák diagnosztizálására használható. A napló tartalmazhat elérési utakat, forráskódot és más potenciálisan érzékeny, projekttel kapcsolatos adatot.", + "typescript.tsserver.trace": "Engedélyezi a TS-szervernek küldött üzenetek naplózását. Ez a napló a TS-szerverrel kapcsolatos problémák diagnosztizálására használható. A napló tartalmazhat elérési utakat, forráskódot és más potenciálisan érzékeny, projekttel kapcsolatos adatot. ", + "typescript.validate.enable": "TypeScript-validálás engedélyezése vagy letiltása.", + "typescript.format.enable": "Alapértelmezett TypeScript-formázó engedélyezése vagy letiltása.", + "javascript.format.enable": "Alapértelmezett JavaScript-formázó engedélyezése vagy letiltása.", + "format.insertSpaceAfterCommaDelimiter": "Meghatározza a szóközök kezelését vessző elválasztókarakter után.", + "format.insertSpaceAfterConstructor": "Meghatározza a szóközök kezelését a constructor kulcsszó után. TypeScript >= 2.3.0-t igényel.", + "format.insertSpaceAfterSemicolonInForStatements": "Meghatározza a szóközök kezelését pontosvessző után a for ciklusban.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Meghatározza a szóközök kezelését bináris operátorok után.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Meghatározza a szóközök kezelését vezérlési szerkezetek kulcsszavai után.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Meghatározza a szóközök kezelését a névtelen függvényekben található function kulcsszó után.", + "format.insertSpaceBeforeFunctionParenthesis": "Meghatározza a szóközök kezelését a függvényargumentumokat tartalmazó zárójel előtt. TypeScript >= 2.1.5-öt igényel.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Meghatározza a szóközök kezelését a sablonkarakterláncok (template stringek) kapcsos zárójeleinek nyitása után és zárása előtt. TypeScript >= 2.0.6-ot igényel.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Meghatározza a szóközök kezelését JSX-kifejezések kapcsos zárójeleinek nyitása után és zárása előtt. TypeScript >= 2.0.6-ot igényel.", + "format.insertSpaceAfterTypeAssertion": "Meghatározza a szóközök kezelését a típuskényszerítések utn. TypeScript >= 2.4-t igényel.", + "format.placeOpenBraceOnNewLineForFunctions": "Meghatározza, hogy a függvények nyitó kapcsos zárójelei új sorba kerüljenek-e vagy sem.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Meghatározza, hogy a vezérlőblokkok nyitó kapcsos zárójelei új sorba kerüljenek-e vagy sem.", + "javascript.validate.enable": "JavaScript-validálás engedélyezése vagy letiltása.", + "typescript.goToProjectConfig.title": "Projektkonfiguráció megkeresése", + "javascript.goToProjectConfig.title": "Projektkonfiguráció megkeresése", + "javascript.referencesCodeLens.enabled": "Referencia kódlencsék engedélyezése vagy letiltása a JavaScript-fájlokban.", + "typescript.referencesCodeLens.enabled": "Referencia kódlencsék engedélyezése vagy letiltása a TypeScript-fájlokban. TypeScript >= 2.0.6-ot igényel.", + "typescript.implementationsCodeLens.enabled": "Implementációs kódlencsék engedélyezése vagy letiltása. TypeScript >= 2.2.0-t igényel.", + "typescript.openTsServerLog.title": "TS-szervernapló megnyitása", + "typescript.restartTsServer": "TS-szerver újraindítása", + "typescript.selectTypeScriptVersion.title": "TypeScript-verzió kiválasztása", + "typescript.reportStyleChecksAsWarnings": "Stílusellenőrzés során talált esetek figyelmeztetésként legyenek jelentve", + "jsDocCompletion.enabled": "Automatikus JSDoc-megjegyzések engedélyezése vagy letiltása", + "javascript.implicitProjectConfig.checkJs": "JavaScript-fájlok szemantikai ellenőrzésének engedélyezése vagy letiltása. A meglévő jsconfig.json vagy tsconfig.json fájlok felülírják ezt a beállítást. TypeScript >= 2.3.1-et igényel.", + "typescript.npm": "Az automatikus típusdefiníció-letöltéshez használt NPM végrehajtható fájl elérési útja. TypeScript 2.3.4-et igényel.", + "typescript.check.npmIsInstalled": "Ellenőrizze, hogy az NPM telepítve van-e az automatikus típusdefiníció-letöltéshez.", + "javascript.nameSuggestions": "Egyedi nevek listázásának engedélyezése a javascriptes javaslati listákban.", + "typescript.tsc.autoDetect": "Meghatározza a tsc-s feladatok automatikus felderítésének működését. 'off' érték esetén a funkció ki van kapcsolva. 'build' esetén egyszer lefutó, fordítást végző feladatok jönnek létre. 'watch' esetén csak fordítást és figyelést végző feladatok jönnek létre. 'on' esetén buildelési és figyelési feladatok is keletkeznek. Az alapértelmezett érték: 'on'.", + "typescript.problemMatchers.tsc.label": "TypeScript-problémák", + "typescript.problemMatchers.tscWatch.label": "TypeScript-problémák (figyelő módban)", + "typescript.quickSuggestionsForPaths": "Kiegészítési javaslatok engedélyezése importált elérési utak beírásakor.", + "typescript.locale": "Meghatározza a TypeScript-hibák jelentésénél használt lokalizációt. TypeScript >= 2.6.0-t igényel. Az alapértelmezett 'null' érték esetén a VS Code-ban beállított nyelven jelennek meg a TypeScript-hibák.", + "javascript.implicitProjectConfig.experimentalDecorators": " 'experimentalDecorators' beállítás engedélyezése azon JavaScript-fájlok esetében, amelyek nem részei a projektnek. A meglévő jsconfig.json vagy tsconfig.json fájlok felülírják ezt a beállítást. TypeScript >= 2.3.1-et igényel.", + "typescript.autoImportSuggestions.enabled": "Automatikus importálási ajánlatok engedélyezése vagy letiltása. TypeScript >= 2.6.1-t igényel.", + "typescript.experimental.syntaxFolding": "Szintaxisalapú becsukható kódrészletek engedélyezése vagy letiltása.", + "taskDefinition.tsconfig.description": "A tsconfig-fájl, ami meghatározza a TS-buildet." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/base/node/processes.i18n.json b/i18n/hun/src/vs/base/node/processes.i18n.json index 0dff4be115a..35229bd6699 100644 --- a/i18n/hun/src/vs/base/node/processes.i18n.json +++ b/i18n/hun/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Rendszerparancsok UNC-meghajtókon nem hajthatók végre." + ] } \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 92689292f4f..7be3fc5b86f 100644 --- a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "Előnézet GitHubon", "loadingData": "Adatok betöltése...", + "rateLimited": "GitHub lekérdezési korlát túllépve. Kérem, várjon!", "similarIssues": "Hasonló problémák", "open": "Megnyitás", "closed": "Bezárva", - "noResults": "Nincs találat", + "noSimilarIssues": "Nincs hasonló probléma", "settingsSearchIssue": "Hiba a beállítások keresőjében", "bugReporter": "hibát", "featureRequest": "funkcióigényt", diff --git a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index a53b4129ee2..886cb41d49d 100644 --- a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,12 @@ ], "completeInEnglish": "Kérjük, hogy angolul töltse ki az űrlapot!", "issueTypeLabel": "Ez egy", + "issueSourceLabel": "Komponens", + "vscode": "Visual Studio Code", + "extension": "Egy kiegészítő", + "disableExtensionsLabelText": "Próbálja meg előidézni a hibát {0}! Ha a hiba csak aktív kiegészítőkkel idézhető elő, akkor nagy valószínűséggel a kiegészítőben van a hiba.", + "disableExtensions": "az összes kiegészítő letiltása és az ablak újratöltése után", + "chooseExtension": "Kiegészítő", "issueTitleLabel": "Cím", "issueTitleRequired": "Kérjük, adja meg a címet!", "titleLengthValidation": "A cím túl hosszú.", @@ -18,13 +24,6 @@ "extensions": "Kiegészítők", "searchedExtensions": "Keresett kiegészítők", "settingsSearchDetails": "Beállításokban való keresés részletei", - "tryDisablingExtensions": "A probléma letiltott kiegészítőkkel is előidézhető?", - "yes": "Igen", - "no": "Nem", - "disableExtensionsLabelText": "Próbálja meg előidézni a hibát {0}!", - "disableExtensions": "az összes kiegészítő letiltása és az ablak újratöltése után", - "showRunningExtensionsLabelText": "Ha azt gyanítja, hogy a hiba egy kiegészítőben van, {0} a kiegészítővel kapcsolatos hiba jelentéséhez!", - "showRunningExtensions": "tekintse meg a futó kiegészítők listáját", "details": "Írja le a részleteket!", "loadingData": "Adatok betöltése..." } \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/hun/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..27c0f1d3fcf --- /dev/null +++ b/i18n/hun/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "Processzor %", + "memory": "Memória (MB)", + "pid": "folyamatazonosító", + "name": "Név", + "killProcess": "Folyamat leállítása", + "forceKillProcess": "Folyamat kényszerített leállítása" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-main/menus.i18n.json b/i18n/hun/src/vs/code/electron-main/menus.i18n.json index e63be27f735..5b81e432f54 100644 --- a/i18n/hun/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/hun/src/vs/code/electron-main/menus.i18n.json @@ -161,6 +161,7 @@ "mMergeAllWindows": "Összes ablak összeolvasztása", "miToggleDevTools": "&&Fejlesztői eszközök be- és kikapcsolása", "miAccessibilityOptions": "&&Kisegítő lehetőségek", + "miOpenProcessExplorerer": "&&Feladatkezelő megnyitása", "miReportIssue": "H&&iba jelentése", "miWelcome": "Üdvözlő&&oldal", "miInteractivePlayground": "&&Interaktív játszótér", diff --git a/i18n/hun/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/hun/src/vs/editor/browser/widget/diffReview.i18n.json index 9ff041f3697..61a892df8cb 100644 --- a/i18n/hun/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/hun/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Bezárás", - "header": "{0}. eltérés, összesen: {1}. Eredeti: {2}., {3}. sorok, módosított: {4}., {5}. sorok", "blankLine": "üres", "equalLine": "eredeti {0}., módosított {1}.: {2}", "insertLine": "+ módosított {0}.: {1}", diff --git a/i18n/hun/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/hun/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/hun/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/hun/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/hun/src/vs/editor/common/config/commonEditorConfig.i18n.json index 21532a3464d..0dfc2d84ed4 100644 --- a/i18n/hun/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/hun/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Windows és Linux alatt a `Control`, macOS alatt a `Command` billentyűt jelenti.", "multiCursorModifier.alt": "Windows és Linux alatt az `Alt`, macOS alatt az `Option` billentyűt jelenti.", "multiCursorModifier": "Több kurzor hozzáadásához használt módosítóbillentyű. A `ctrlCmd` Windows és Linux alatt a `Control`, macOS alatt a `Command` billentyűt jelenti. A Definíció megkeresése és Hivatkozás megnyitása egérgesztusok automatikusan úgy lesznek beállítva, hogy ne ütközzenek a többkurzorhoz tartozó módosítóval.", + "multiCursorMergeOverlapping": "Több kurzor összeolvasztása, ha azok fedik egymást.", "quickSuggestions.strings": "Kiegészítési javaslatok engedélyezése karakterláncokban (stringekben)", "quickSuggestions.comments": "Kiegészítési javaslatok engedélyezése megjegyzésekben", "quickSuggestions.other": "Kiegészítési javaslatok engedélyezése karakterláncokon (stringeken) és megjegyzéseken kívül", @@ -88,6 +89,9 @@ "renderLineHighlight": "Meghatározza, hogy a szerkesztőablakban hogyan legyen kirajzolva az aktuális sor kiemelése. Lehetséges értékek: 'none', 'gutter', 'line', vagy 'all'.", "codeLens": "Meghatározza, hogy megjelenjenek-e a kódlencsék", "folding": "Meghatározza, hogy engedélyezve van-e a kódrészletek bezárása a szerkesztőablakban.", + "foldingStrategyAuto": "Nyelvspecifikus kódrész-bezárási stratégia használata, ha az rendelkezésre áll. Ha nem, akkor tartalékmegoldásként az indentálásalapú kódrész-bezárási stratégia használata.", + "foldingStrategyIndentation": "A kódrészek bezárása mindig az indentálásalapú kódrész-bezárási stratégia alapján történjen.", + "foldingStrategy": "Meghatározza, hogyan vannak meghatározva a bezárható kódrészek. Az 'auto' esetén a nyelvspecifikus kódbezárási stratégia van használva, ha az rendelkezésre áll. Az 'indentation' esetén minden esetben az indentálásalapú bezárási stratégia van használva.", "showFoldingControls": "Meghatározza, hogy a kódrészletek bezárásához tartozó vezérlőelemek automatikusan el legyenek-e rejtve.", "matchBrackets": "Zárójel kiválasztása esetén a hozzátartozó zárójel kiemelése.", "glyphMargin": "Meghatározza, hogy legyen-e vertikális szimbólummargó a szerkesztőablakban. A szimbólummargó elsősorban hibakeresésnél van használva.", @@ -105,5 +109,7 @@ "selectionClipboard": "Meghatározza-e, hogy támogatva van-e az elsődleges vágólap Linux alatt", "sideBySide": "Meghatározza, hogy a differenciaszerkesztő ablakban egymás mellett vagy a sorban jelenjenek meg az eltérések", "ignoreTrimWhitespace": "Meghatározza, hogy a differenciaszerkesztő ablakban megjelenjenek-e a sor elején vagy végén a szóközökben talált különbségek", + "largeFileSize": "Meghatározza azt a fájlméretet, ami fölött speciális optimalizálási szabályok lépnek érvénybe.", + "largeFileLineCount": "Meghatározza azt a sorszámot, ami fölött speciális optimalizálási szabályok lépnek érvénybe. ", "renderIndicators": "Meghatározza, hogy a differenciaszerkesztő ablakban megjelenjenek-e a +/- jelzők az hozzáadott/eltávolított változásoknál" } \ No newline at end of file diff --git a/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json index a81eff02751..05e0c0c13f7 100644 --- a/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/hun/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "A szerkesztőablak segédvonalainak színe.", "editorLineNumbers": "A szerkesztőablak sorszámainak színe.", "editorActiveLineNumber": "A szerkesztőablak aktív sorához tartozó sorszám színe.", + "deprecatedEditorActiveLineNumber": "Az Id elavult. Használja helyette az 'editorLineNumber.activeForeground' beállítást!", "editorRuler": "A szerkesztőablak sávjainak színe.", "editorCodeLensForeground": "A szerkesztőablakban található kódlencsék előtérszíne", "editorBracketMatchBackground": "Hozzátartozó zárójelek háttérszíne", diff --git a/i18n/hun/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/hun/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..ca792d8bea6 --- /dev/null +++ b/i18n/hun/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Javítások megjelenítése ({0})", + "quickFix": "Javítások megjelenítése", + "quickfix.trigger.label": "Gyorsjavítás...", + "editor.action.quickFix.noneMessage": "Nem áll rendelkezésre kódművelet", + "refactor.label": "Refaktorálás...", + "editor.action.refactor.noneMessage": "Nem áll rendelkezésre refaktorálási lehetőség", + "source.label": "Forrásművelet...", + "editor.action.source.noneMessage": "Nem áll rendelkezésre forrásművelet", + "organizeImports.label": "Importálások rendezése" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/editor/contrib/links/links.i18n.json b/i18n/hun/src/vs/editor/contrib/links/links.i18n.json index 6feb52b9cb7..9ca7de76bcf 100644 --- a/i18n/hun/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/hun/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "Hivatkozott oldal megnyitása Ctrl + kattintás paranccsal", "links.command.mac": "Cmd + kattintás a parancs végrehajtásához", "links.command": "Ctrl + kattintás a parancs végrehajtásához", + "links.navigate.al.mac": "Hivatkozás megnyitása az Option + kattintás paranccsal", "links.navigate.al": "Hivatkozás megnyitása Alt + kattintás paranccsal", + "links.command.al.mac": "Option + kattintás a parancs végrehajtásához", "links.command.al": "Alt + kattintás a parancs végrehajtásához", "invalid.url": "A hivatkozást nem sikerült megnyitni, mert nem jól formázott: {0}", "missing.url": "A hivatkozást nem sikerült megnyitni, hiányzik a célja.", diff --git a/i18n/hun/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/hun/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/hun/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/hun/src/vs/platform/environment/node/argv.i18n.json b/i18n/hun/src/vs/platform/environment/node/argv.i18n.json index f26bd4d55da..19039e5513a 100644 --- a/i18n/hun/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/hun/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Indítás a 'Developer: Startup Performance' parancs engedélyezésével.", "prof-startup": "Processzorhasználat profilozása induláskor", "disableExtensions": "Összes telepített kiegészítő letiltása.", - "inspect-extensions": "Hibakeresés és profilozás engedélyezése a kiegészítőkben. Ellenőrizze a fejlesztői eszközöket a csatlakozási URI-hoz.", - "inspect-brk-extensions": "Hibakeresés és profilozás engedélyezése a kiegészítőkben, úgy, hogy a kiegészítő gazdafolyamata szüneteltetve lesz az indítás után. Ellenőrizze a fejlesztői eszközöket a csatlakozási URI-hoz. ", "disableGPU": "Hardveres gyorsítás letiltása.", "uploadLogs": "Az aktuális munkamenet naplóinak feltöltése egy biztonságos végpontra.", "maxMemory": "Egy ablak maximális memóriamérete (megabájtban).", diff --git a/i18n/hun/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/hun/src/vs/platform/extensions/node/extensionValidator.i18n.json index ebab6182648..2b680ac3f88 100644 --- a/i18n/hun/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/hun/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Nem sikerült feldolgozni az `engines.vscode` beállítás értékét ({0}). Használja például a következők egyikét: ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x stb.", + "versionSyntax": "Nem sikerült feldolgozni az `engines.vscode` beállítás értékét ({0}). Használja például a következők egyikét: ^1.22.0, ^1.22.x stb.", "versionSpecificity1": "Az `engines.vscode` beállításban megadott érték ({0}) nem elég konkrét. A vscode 1.0.0 előtti verzióihoz legalább a kívánt fő- és alverziót is meg kell adni. Pl.: ^0.10.0, 0.10.x, 0.11.0 stb.", "versionSpecificity2": "Az `engines.vscode` beállításban megadott érték ({0}) nem elég konkrét. A vscode 1.0.0 utáni verzióihoz legalább a kívánt főverziót meg kell adni. Pl.: ^1.10.0, 1.10.x, 1.x.x, 2.x.x stb.", "versionMismatch": "A kiegészítő nem kompatibilis a Code {0} verziójával. A következő szükséges hozzá: {1}." diff --git a/i18n/hun/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/hun/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index e70aaa6271c..358f998df03 100644 --- a/i18n/hun/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/hun/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "A feltelepített {0} hibásnak tűnik. Telepítse újra!", "integrity.moreInformation": "További információ", - "integrity.dontShowAgain": "Ne jelenítse meg újra", - "integrity.prompt": "A feltelepített {0} hibásnak tűnik. Telepítse újra!" + "integrity.dontShowAgain": "Ne jelenítse meg újra" } \ No newline at end of file diff --git a/i18n/hun/src/vs/platform/issue/electron-main/issueService.i18n.json b/i18n/hun/src/vs/platform/issue/electron-main/issueService.i18n.json index 570645f055d..144cb0419cc 100644 --- a/i18n/hun/src/vs/platform/issue/electron-main/issueService.i18n.json +++ b/i18n/hun/src/vs/platform/issue/electron-main/issueService.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "issueReporter": "Hibajelentő" + "issueReporter": "Hibajelentő", + "processExplorer": "Feladatkezelő" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/hun/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..3046160ac08 --- /dev/null +++ b/i18n/hun/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "a(z) `{0}` tulajdonság kötelező és `string` típusúnak kell lennie", + "showViewlet": "{0} megjelenítése", + "view": "Nézet" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/hun/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 2eee713076e..2c12ec27c2c 100644 --- a/i18n/hun/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/hun/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Nézeteket szolgáltat a szerkesztőhöz", "views.explorer": "Fájlkezelő-nézet", "views.debug": "Hibakeresési nézet", - "locationId.invalid": "A(z) `{0}` nem érvényes nézethelyszín", "duplicateView1": "Nem regisztrálható több nézet `{0}` azonosítóval a következő helyen: `{1}`", "duplicateView2": "Már van `{0}` azonosítójú nézet regisztrálva a következő helyen: `{1}`" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 983527bcdae..92725a915cc 100644 --- a/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/hun/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview-szerkesztő" + "errorMessage": "Hiba történt a nézet visszaállítása közben: {0}" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 768906f89d7..e563dd6f450 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,7 @@ "screenReaderDetectedExtra": "Ha nem használ képernyőolvasót, állítsa az `editor.accessibilitySupport` értékét \"off\"-ra.", "disableTabMode": "Kisegítő mód letiltása", "gotoLine": "Sor megkeresése", - "indentation": "Indentálás", + "selectIndentation": "Indentálás kiválasztása", "selectEncoding": "Kódolás kiválasztása", "selectEOL": "Sorvégjel kiválasztása", "selectLanguageMode": "Nyelvmód kiválasztása", diff --git a/i18n/hun/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 3e1e7156096..4df3b505d36 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,11 @@ "sizeMB": "{0} MB", "sizeGB": "{0} GB", "sizeTB": "{0} TB", - "largeImageError": "A képfájl mérete túl nagy (>1 MB) a szerkesztőben való megjelenítéshez.", + "largeImageError": "A kép nincs megjelenítve, mert túl nagy ({0}).", "resourceOpenExternalButton": "Kép megnyitása külső program használatával?", - "nativeBinaryError": "A fájl nem jeleníthető meg a szerkesztőben, mert bináris adatokat tartalmaz, túl nagy vagy nem támogatott szövegkódolást használ.", + "nativeFileTooLargeError": "A fájl nem jeleníthető meg a szerkesztőben, mert túl nagy ({0}).", + "nativeBinaryError": "A fájl nem jeleníthető meg a szerkesztőben, mert bináris adatokat tartalmaz vagy nem támogatott szövegkódolást használ.", + "openAsText": "Mégis meg szeretné nyitni?", "zoom.action.fit.label": "Teljes kép", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..21a3c1fb10f --- /dev/null +++ b/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInput.countSelected": "{0} kiválasztva", + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..f402e9c2fed --- /dev/null +++ b/i18n/hun/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInputBox.ariaLabel": "Kezdjen el gépelni a találati lista szűkítéséhez!" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/hun/src/vs/workbench/electron-browser/actions.i18n.json index 616bbb21a05..37d0d251906 100644 --- a/i18n/hun/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/hun/src/vs/workbench/electron-browser/actions.i18n.json @@ -32,6 +32,7 @@ "openRecent": "Legutóbbi megnyitása...", "quickOpenRecent": "Legutóbbi gyors megnyitása...", "reportIssueInEnglish": "Probléma jelentése", + "openProcessExplorer": "Feladatkezelő megnyitása", "reportPerformanceIssue": "Teljesítményproblémák jelentése", "keybindingsReference": "Billentyűparancs-referencia", "openDocumentationUrl": "Dokumentáció", diff --git a/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json index 6bbb36e90ae..cc21f47e7a5 100644 --- a/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -80,6 +80,7 @@ "titleBarStyle": "Módosítja az ablak címsorának megjelenését. A változtatás teljes újraindítást igényel.", "window.nativeTabs": "Engedélyezi a macOS Sierra ablakfüleket. Megjegyzés: a változtatás teljes újraindítást igényel, és a natív fülek letiltják az egyedi címsorstílust, ha azok be vannak konfigurálva.", "window.smoothScrollingWorkaround": "Akkor engedélyezze ezt a kerülőmegoldást, ha a görgetés nem egyenletes egy kis méretre rakott VS Code-ablak helyreállítása után. Ez egy kerülőmegoldás arra a problémára (https://github.com/Microsoft/vscode/issues/13612), amely a trackpadokkal rendelkező eszközöket érinti, például a Microsoft Surface készülékeit. A kerülőmegoldás engedélyezése a felület elrendezésének ugrálásával járhat az ablak kis méretből való helyreállítása után, de egyébként nem okoz más problémát.", + "window.clickThroughInactive": "Ha engedélyezve van, akkor egy inaktív ablakra való kattintás aktiválja az ablakot, valamint kattintási esemény keletkezik az egér alatt lévő elemen is, ha az kattintható. Ha le van tiltva, akkor az inaktív ablakra való kattintás csak az ablak aktiválását eredményezi, és egy újabb kattintás szükséges az elemen.", "zenModeConfigurationTitle": "Zen-mód", "zenMode.fullScreen": "Meghatározza, hogy zen-módban a munakterület teljes képernyős módba vált-e.", "zenMode.centerLayout": "Meghatározza, hogy zen-módban középre igazított elrendezés van-e.", diff --git a/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 9682e0aa906..5c3b0b5f63e 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Töréspont szerkesztése...", "functionBreakpointsNotSupported": "Ez a hibakereső nem támogatja a függvénytöréspontokat", "functionBreakpointPlaceholder": "A függvény, amin meg kell állni", "functionBreakPointInputAriaLabel": "Adja meg a függvénytöréspontot", diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 07aae479f50..b6de2b15184 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -6,12 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "breakpointWidgetLogMessagePlaceholder": "A töréspont érintése esetén naplózandó üzenet. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", + "breakpointWidgetLogMessagePlaceholder": "A töréspont érintése esetén naplózandó üzenet. A {} karakterek közötti kifejezések interpolálva lesznek. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", "breakpointWidgetHitCountPlaceholder": "Futás megállítása, ha adott alkalommal érintve lett. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", "breakpointWidgetExpressionPlaceholder": "Futás megállítása, ha a kifejezés értéke igazra értékelődik ki. 'Enter' a megerősítéshez vagy 'Escape' a megszakításhoz.", - "breakpointWidgetLogMessageAriaLabel": "A program ezt üzenetet naplózza a töréspont minden egyes érintése során. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", - "breakpointWidgetHitCountAriaLabel": "A program akkor fog megállni itt, ha adott alkalommal érintette ezt a pontot. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", - "breakpointWidgetAriaLabel": "A program csak akkor áll meg itt, ha a feltétel igaz. A megerősítéshez nyomja meg az Enter billentyűt, a megszakításhoz az Escape-et!", "expression": "Kifejezés", "hitCount": "Érintések száma", "logMessage": "Üzenet naplózása" diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 8f5ebe5ec40..2654914b2b8 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -27,5 +27,6 @@ "onFirstSessionStart": "A hibakeresés csak akkor jelenjen meg az állapotsoron, miután először el lett indítva a hibakeresés", "showInStatusBar": "Meghatározza, hogy megjelenjen-e a hibakeresési állapotsáv", "openDebug": "Meghatározza, hogy megnyíljon-e a hibakeresési modul a hibakeresési munkamenet indulásakor.", - "launch": "Globális hibakeresés indítási konfiguráció. Használható a 'launch.json' alternatívájaként, ami meg van osztva több munkaterület között" + "launch": "Globális hibakeresés indítási konfiguráció. Használható a 'launch.json' alternatívájaként, ami meg van osztva több munkaterület között", + "extensionHostDebugAdapter": "Hibakeresési illesztő futtatása egy kiegészítős gazdafolyamatban" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index b07cb0ef2cd..d038dd9dd4a 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,7 @@ "useUniqueNames": "Használjon egyedi konfigurációs neveket!", "app.launch.json.compound.folder": "A mappa neve, ahol az összetett konfiguráció található.", "app.launch.json.compounds.configurations": "Azon konfigurációk neve, melyek elindulnak ezen kombináció részeként.", - "debugNoType": "A hibakeresési illesztő 'type' tulajdonsága kötelező, és 'string' típusúnak kell lennie.", + "debugNoType": "A hibakereső 'type' tulajdonsága kötelező, és 'string' típusúnak kell lennie.", "selectDebug": "Környezet kiválasztása", "DebugConfig.failed": "Nem sikerült létrehozni a 'launch.json' fájlt a '.vscode' mappánan ({0}).", "workspace": "munkaterület", diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index ee50c51ea05..f8b204c30b7 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Töréspont szerkesztése...", - "disableBreakpoint": "Töréspont letiltása", - "enableBreakpoint": "Töréspont engedélyezése", "removeBreakpoints": "Töréspontok eltávolítása", "removeBreakpointOnColumn": "{0}. oszlopban található töréspont eltávolítása", "removeLineBreakpoint": "Sorra vonatkozó töréspont eltávolítása", @@ -21,7 +18,8 @@ "enableBreakpoints": "{0}. oszlopban található töréspont engedélyezése", "enableBreakpointOnLine": "Sorszintű töréspont engedélyezése", "addBreakpoint": "Töréspont hozzáadása", - "conditionalBreakpoint": "Feltételes töréspont hozzáadása...", + "addConditionalBreakpoint": "Feltételes töréspont hozzáadása...", "addLogPoint": "Naplózási pont hozzáadása...", + "cancel": "Mégse", "addConfiguration": "Konfiguráció hozzáadása..." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 944e14f9107..906f14a1739 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "További információ", - "unableToLaunchDebugAdapter": "Nem sikerült elindítani a hibakeresési illesztőt a következő helyről: '{0}'.", - "unableToLaunchDebugAdapterNoArgs": "Nem sikerült elindítani a hibakeresési illesztőt.", - "stoppingDebugAdapter": "{0}. Hibakeresési illesztő leállítása.", "debugAdapterCrash": "A hibakeresési illesztő folyamata váratlanul leállt" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index f20852131e1..27c4e8cd4a1 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -8,19 +8,6 @@ ], "debugAdapterBinNotFound": "A hibakeresési illesztő futtatható állománya ('{0}') nem létezik.", "debugAdapterCannotDetermineExecutable": "Nem határozható meg a(z) '{0}' hibakeresési illesztő futtatható állománya.", - "launch.config.comment1": "IntelliSense használata a lehetséges attribútumok listázásához", - "launch.config.comment2": "Húzza fölé az egeret a létező attribútumok leírásának megtekintéséhez!", - "launch.config.comment3": "További információért látogassa meg a következőt: {0}", - "debugType": "A konfiguráció típusa.", - "debugTypeNotRecognised": "Ez a hibakeresési típus nem ismert. Bizonyosodjon meg róla, hogy telepítve és engedélyezve van a megfelelő hibakeresési kiegészítő.", - "node2NotSupported": "A \"node2\" már nem támogatott. Használja helyette a \"node\"-ot, és állítsa a \"protocol\" attribútum értékét \"inspector\"-ra.", - "debugName": "A konfiguráció neve. Az indítási konfiguráció lenyíló menüjében jelenik meg.", - "debugRequest": "A konfiguráció kérési típusa. Lehet \"launch\" vagy \"attach\".", - "debugServer": "Csak hibakeresési kiegészítők fejlesztéséhez: ha a port meg van adva, akkor a VS Code egy szerver módban futó hibakeresési illesztőhöz próbál meg csatlakozni.", - "debugPrelaunchTask": "A hibakeresési folyamat előtt futtatandó feladat.", - "debugPostDebugTask": "A hibakeresési folyamat vége után futtatandó feladat.", - "debugWindowsConfiguration": "Windows-specifikus indítási konfigurációs attribútumok.", - "debugOSXConfiguration": "OS X-specifikus indítási konfigurációs attribútumok.", - "debugLinuxConfiguration": "Linux-specifikus indítási konfigurációs attribútumok.", - "deprecatedVariables": "Az 'env.', 'config.' és 'command.' tujdonságok elavultak, használja helyette az 'env:', 'config:' és 'command:' tulajdonságokat." + "unableToLaunchDebugAdapter": "Nem sikerült elindítani a hibakeresési illesztőt a következő helyről: '{0}'.", + "unableToLaunchDebugAdapterNoArgs": "Nem sikerült elindítani a hibakeresési illesztőt." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..b50ef5b76d2 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "IntelliSense használata a lehetséges attribútumok listázásához", + "launch.config.comment2": "Húzza fölé az egeret a létező attribútumok leírásának megtekintéséhez!", + "launch.config.comment3": "További információért látogassa meg a következőt: {0}", + "debugType": "A konfiguráció típusa.", + "debugTypeNotRecognised": "Ez a hibakeresési típus nem ismert. Bizonyosodjon meg róla, hogy telepítve és engedélyezve van a megfelelő hibakeresési kiegészítő.", + "node2NotSupported": "A \"node2\" már nem támogatott. Használja helyette a \"node\"-ot, és állítsa a \"protocol\" attribútum értékét \"inspector\"-ra.", + "debugName": "A konfiguráció neve. Az indítási konfiguráció lenyíló menüjében jelenik meg.", + "debugRequest": "A konfiguráció kérési típusa. Lehet \"launch\" vagy \"attach\".", + "debugServer": "Csak hibakeresési kiegészítők fejlesztéséhez: ha a port meg van adva, akkor a VS Code egy szerver módban futó hibakeresési illesztőhöz próbál meg csatlakozni.", + "debugPrelaunchTask": "A hibakeresési folyamat előtt futtatandó feladat.", + "debugPostDebugTask": "A hibakeresési folyamat vége után futtatandó feladat.", + "debugWindowsConfiguration": "Windows-specifikus indítási konfigurációs attribútumok.", + "debugOSXConfiguration": "OS X-specifikus indítási konfigurációs attribútumok.", + "debugLinuxConfiguration": "Linux-specifikus indítási konfigurációs attribútumok.", + "deprecatedVariables": "Az 'env.', 'config.' és 'command.' tujdonságok elavultak, használja helyette az 'env:', 'config:' és 'command:' tulajdonságokat." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..63c2dd4d544 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code-konzol", + "mac.terminal.script.failed": "A(z) '{0}' parancsfájl a következő hibakóddal lépett ki: {1}", + "mac.terminal.type.not.supported": "A(z) '{0}' nem támogatott", + "press.any.key": "A folytatáshoz nyomjon meg egy billentyűt...", + "linux.term.failed": "A(z) '{0}' a következő hibakóddal lépett ki: {1}" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index f355d1508ab..cc2d7bd950a 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Ez a kiegészítő az aktuális munkaterület felhasználói által ajánlott.", "reallyRecommended2": "Ehhez a fájltípushoz a(z) '{0}' kiegészítő ajánlott.", "reallyRecommendedExtensionPack": "Ehhez a fájltípushoz a(z) '{0}' kiegészítőcsomag ajánlott.", - "showRecommendations": "Ajánlatok megjelenítése", "install": "Telepítés", + "showRecommendations": "Ajánlatok megjelenítése", "showLanguageExtensions": "A piactéren található olyan kiegészítő, ami segíthet a(z) '.{0}' fájloknál", "workspaceRecommended": "A munkaterülethez vannak javasolt kiegészítők", "installAll": "Összes telepítése", diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 25fbc666463..716316b2449 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Letiltja a többi billentyűkonfigurációt ({0}) a billentyűparancsok közötti konfliktusok megelőzése érdekében?", "yes": "Igen", - "no": "Nem", - "betterMergeDisabled": "A Better Merge kiegészítő most már be van építve. A telepített kiegészítő le lett tiltva és eltávolítható.", - "uninstall": "Eltávolítás" + "no": "Nem" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 5ef5e09669c..1c51e825f0a 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -14,7 +14,7 @@ "workspaceRecommendedExtensions": "Ajánlott a munkaterülethez", "builtInExtensions": "Funkciók", "builtInThemesExtensions": "Témák", - "builtInBasicsExtensions": "Nyelvek", + "builtInBasicsExtensions": "Programozási nyelvek", "searchExtensions": "Kiegészítők keresése a piactéren", "sort by installs": "Rendezés a telepítések száma szerint", "sort by rating": "Rendezés értékelés szerint", diff --git a/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 5aaad4bc1e6..4baf355021f 100644 --- a/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,8 +8,8 @@ ], "textFileEditor": "Szövegfájlszerkesztő", "createFile": "Fájl létrehozása", - "relaunchWithIncreasedMemoryLimit": "Újraindítás", - "configureMemoryLimit": "Beállítás", + "relaunchWithIncreasedMemoryLimit": "Újraindítás {0} MB-tal", + "configureMemoryLimit": "Memóriakorlát beállítása", "fileEditorWithInputAriaLabel": "{0}. Szövegfájlszerkesztő.", "fileEditorAriaLabel": "Szövegfájlszerkesztő" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 95afc5f3a16..27080d41e6c 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -38,7 +38,7 @@ "trashFailed": "Nem sikerült törölni a kuka használatával. Szeretné helyette véglegesen törölni?", "deletePermanentlyButtonLabel": "&&Törlés véglegesen", "retryButtonLabel": "Új&&rapróbálkozás", - "importFiles": "Fájlok importálása", + "addFiles": "Fájlok hozzáadása", "confirmOverwrite": "A célmappában már van ilyen nevű mappa vagy fájl. Le szeretné cserélni?", "replaceButtonLabel": "&&Csere", "fileIsAncestor": "A beillesztendő fájl a célmappa szülője", diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 3cbfd1d59d4..edaae86a63a 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,7 +35,7 @@ "hotExit": "Meghatározza, hogy a nem mentett fájlokra emlékezzen-e az alkalmazás a munkamenetek között, így ki lehet hagyni a mentéssel kapcsolatos felugró ablakokat kilépésnél.", "useExperimentalFileWatcher": "Új, kísérleti fájlfigyelő használata.", "defaultLanguage": "Az új fájlokhoz alapértelmezetten hozzárendelt nyelv.", - "maxMemoryForLargeFilesMB": "Az alkalmazás által nagy fájlok megnyitása során használható memória új korlátja megabájtban. Ha nagyobb korláttal szeretné indítani az alkalmazást, használja a --max-memory=ÚJMÉRET kapcsolót a parancssorban.", + "maxMemoryForLargeFilesMB": "Meghatározza a VS Code számára elérhető memória mennyiségét újraindítás után, nagy fájlok megnyitása esetén. Hatása ugyanaz, mint a --max-memory=ÚJMÉRET kapcsoló megadása parancssorból való indítás esetén.", "editorConfigurationTitle": "Szerkesztőablak", "formatOnSave": "Fájlok formázása mentéskor. Az adott nyelvhez rendelkezésre kell állni formázónak, nem lehet beállítva automatikus mentés, és a szerkesztő nem állhat éppen lefelé.", "formatOnSaveTimeout": "Időkorlát mentéskor végzett formázások esetén. Meghatároz egy időkorlátot ezredmásodpercben a formatOnSave-parancsok számára. Az ennél hosszabb ideig tartó parancsok meg lesznek szakítva.", diff --git a/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index dcbc1b87cbf..9db90ff7ab2 100644 --- a/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Adja meg a fájl nevét. Nyomjon 'Enter'-t a megerősítéshez vagy 'Escape'-et a megszakításhoz.", - "constructedPath": "{0} létrehozása a következő helyen: **{1}**", "filesExplorerViewerAriaLabel": "{0}, Fájlkezelő", "dropFolders": "Szeretné hozzáadni a mappákat a munkaterülethez?", "dropFolder": "Szeretné hozzáadni a mappát a munkaterülethez?", diff --git a/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index cb2d1444c69..626849ee9d1 100644 --- a/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -9,7 +9,7 @@ "updateLocale": "Szeretné a VS Code felületét {0} nyelvűre állítani és újraindítani az alkalmazást?", "yes": "Igen", "no": "Nem", - "doNotAskAgain": "Ne kérdezze meg újra", + "neverAgain": "Ne jelenítse meg újra", "JsonSchema.locale": "A felhasználói felületen használt nyelv.", "vscode.extension.contributes.localizations": "Lokalizációkat szolgáltat a szerkesztőhöz", "vscode.extension.contributes.localizations.languageId": "Annak a nyelvnek az azonosítója, amelyre a megjelenített szövegek fordítva vannak.", diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index c1008a9652d..08d7b8601cf 100644 --- a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "Másolás", - "copyMarkerMessage": "Üzenet másolása" + "copyMessage": "Üzenet másolása" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 0eecc9c3575..9cc6717e0d4 100644 --- a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Összesen {0} probléma", - "filteredProblems": "{0} probléma megjelenítve (összesen: {1})" + "totalProblems": "Összesen {0} probléma" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 692df32c15d..04de19e7bab 100644 --- a/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Problémák", "markers.panel.aria.label.problems.tree": "Problémák fájlonként csoportosítva", "markers.panel.no.problems.build": "A munkaterületen eddig egyetlen hiba sem lett érzékelve.", - "markers.panel.no.problems.filters": "A megadott szűrőfeltételnek egyetlen elem sem felel meg.", "markers.panel.action.filter": "Problémák szűrése", - "markers.panel.filter.placeholder": "Szűrés típus vagy szöveg alapján", + "markers.panel.filter.ariaLabel": "Problémák szűrése", "markers.panel.filter.errors": "hibák", "markers.panel.filter.warnings": "figyelmeztetések", "markers.panel.filter.infos": "információk", diff --git a/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 76f9adaac9a..c6560556f50 100644 --- a/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Billentyűparancsok", "showDefaultKeybindings": "Alapértelmezett billentyűparancsok megjelenítése", "showUserKeybindings": "Felhasználói billentyűparancsok megjelenítése", "SearchKeybindings.AriaLabel": "Billentyűparancsok keresése", diff --git a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index eafcce8d969..2a7ffa73a6d 100644 --- a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Nyers alapértelmezett beállítások megnyitása", + "openSettings": "Beállítások megnyitása", "openGlobalSettings": "Felhasználói beállítások megnyitása", "openGlobalKeybindings": "Billentyűparancsok megnyitása", "openGlobalKeybindingsFile": "Billentyűparancsfájl megnyitása", diff --git a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 3f82c002188..b1b8e310251 100644 --- a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Alapértelmezett beállítások", "SearchSettingsWidget.AriaLabel": "Beállítások keresése", "SearchSettingsWidget.Placeholder": "Beállítások keresése", "noSettingsFound": "Nincs eredmény", @@ -16,6 +15,8 @@ "nlpResult": "Természetes nyelvi keresés eredményei", "filterResult": "Szűrt találatok", "defaultSettings": "Alapértelmezett beállítások", + "defaultUserSettings": "Alapértelmezett felhasználói beállítások", + "defaultWorkspaceSettings": "Alapértelmezett munkaterületi beállítások", "defaultFolderSettings": "Alapértelmezett mappabeállítások", "defaultEditorReadonly": "A jobb oldalon lévő szerkesztőablak tartalmának módosításával írhatja felül az alapértelmezett beállításokat.", "preferencesAriaLabel": "Az alapértelmezett beállítások. Írásvédett szerkesztőablak." diff --git a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index bb7763d54a3..7fcd4f374ab 100644 --- a/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "\"{0}\" kiegészítő megjelenítése", "editTtile": "Szerkesztés", "replaceDefaultValue": "Csere a beállításokban", - "copyDefaultValue": "Másolás a beállításokba", - "unsupportedPHPExecutablePathSetting": "Ez a beállítás csak a felhasználói beállításokban szerepelhet. A PHP munkaterülethez történő konfigurálásához nyisson meg egy PHP-fájlt, majd kattintson a PHP-elérési útra az állapotsoron!", - "unsupportedWorkspaceSetting": "Ez a beállítás csak a felhasználói beállításokban szerepelhet.", - "unsupportedWorkbenchSetting": "Ez a beállítás jelenleg nem alkalmazható. Akkor van használatban, ha közvetlenül nyitja meg ezt a mappát.", - "unsupportedWorkbenchSettingDevMode": "Ez a beállítás jelenleg nem alkalmazható. Akkor van használatban, ha a hatóköre 'resource'-ként van megadva a regisztráció során vagy közvetlenül nyitja meg ezt a mappát." + "copyDefaultValue": "Másolás a beállításokba" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/hun/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 62a27fb2806..eed65b480a8 100644 --- a/i18n/hun/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "További verziókezelő rendszerek telepítése...", "no open repo": "Nincs aktív verziókezelő rendszer.", "source control": "Verziókezelő rendszer", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Elrejtés" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 28936cbbe73..ff26fdc4402 100644 --- a/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Következő bele foglalt keresési minta megjelenítése", "previousSearchIncludePattern": "Előző bele foglalt keresési minta megjelenítése", + "nextSearchExcludePattern": "Következő kizáró keresési minta megjelenítése", + "previousSearchExcludePattern": "Előző kizáró keresési minta megjelenítése", "nextSearchTerm": "Következő keresőkifejezés megjelenítése", "previousSearchTerm": "Előző keresőkifejezés megjelenítése", - "showSearchViewlet": "Keresés megjelenítése", "findInFiles": "Keresés a fájlokban", "replaceInFiles": "Csere a fájlokban", "RefreshAction.label": "Frissítés", diff --git a/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json index 5e9fc946994..414222489bd 100644 --- a/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,9 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Keresési részletek be- és kikapcsolása", - "searchIncludeExclude.label": "belefoglalt és kizárt fájlok", - "searchIncludeExclude.ariaLabel": "Keresésbe belefoglalási és kizárási minták", - "searchIncludeExclude.placeholder": "Példa: src,!*.ts, test/**/*.log", + "searchScope.includes": "bele foglalt fájlok", + "label.includes": "Keresésbe bele foglalt fájlok", + "searchScope.excludes": "kizárt fájlok", + "label.excludes": "Keresésből kizárt fájlok", "replaceAll.confirmation.title": "Összes cseréje", "replaceAll.confirm.button": "&&Csere", "replaceAll.occurrence.file.message": "{0} előfordulás cserélve {1} fájlban a következőre: '{2}'.", diff --git a/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index ffaed50c03f..d229aa88582 100644 --- a/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,15 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Keresés", + "copyMatchLabel": "Másolás", + "copyPathLabel": "Elérési út másolása", + "copyAllLabel": "Összes másolása", + "toggleSearchViewPositionLabel": "Keresőnézet helyzetének váltása", "findInFolder": "Keresés mappában...", "findInWorkspace": "Keresés a munkaterületen...", "showTriggerActions": "Szimbólum megkeresése a munkaterületen...", "name": "Keresés", - "search": "Keresés", "showSearchViewl": "Keresés megjelenítése", "view": "Nézet", "findInFiles": "Keresés a fájlokban", @@ -26,5 +30,5 @@ "search.followSymlinks": "Meghatározza, hogy keresés során követve legyenek-e a szimbolikus linkek.", "search.smartCase": "Figyelmen kívül hagyja a kis- és nagybetűket, ha a minta csak kisbetűkből áll, ellenkező esetben kis- és nagybetűérzékenyen keres", "search.globalFindClipboard": "Meghatározza, hogy a keresőmodul olvassa és módosítsa-e a megosztott keresési vágólapot macOS-en.", - "search.location": "Előzetes funkció: meghatározza, hogy a keresés az oldalsávon jelenik meg vagy egy panelként a panelterületen, mely utóbbi esetén több hely van vízszintesen. A következő kiadásban a panel megjelenése optimalizálva lesz a vízszintes megjelenítéshez, és a funkció nem lesz előzetes." + "search.location": "Meghatározza, hogy a keresés az oldalsávon jelenik meg vagy egy panelként a panelterületen, mely utóbbi esetén több hely van vízszintesen. A következő kiadásban a panel megjelenése optimalizálva lesz a vízszintes megjelenítéshez, és a funkció nem lesz előzetes." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 401c2d990b5..77d4506f265 100644 --- a/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Segítsen javítani a {0}-támogatásunkat", "takeShortSurvey": "Rövid felmérés kitöltése", "remindLater": "Emlékeztessen később", - "neverAgain": "Ne jelenítse meg újra", - "helpUs": "Segítsen javítani a {0}-támogatásunkat" + "neverAgain": "Ne jelenítse meg újra" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 045f052b919..114c9ebb551 100644 --- a/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Lenne kedve egy gyors elégedettségi felméréshez?", "takeSurvey": "Felmérés kitöltése", "remindLater": "Emlékeztessen később", - "neverAgain": "Ne jelenítse meg újra", - "surveyQuestion": "Lenne kedve egy gyors elégedettségi felméréshez?" + "neverAgain": "Ne jelenítse meg újra" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index ab9830c1cef..f91b0b4ec32 100644 --- a/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,6 +11,7 @@ "totalErrors": "{0} hiba", "totalWarnings": "{0} figyelmeztetés", "totalInfos": "{0} információ", + "problems": "Problémák", "building": "Buildelés...", "manyProblems": "10k+", "runningTasks": "Futó feladatok megjelenítése", @@ -30,8 +31,10 @@ "selectProblemMatcher": "Válassza ki, milyen típusú hibák és figyelmeztetések legyenek keresve a feladat kimenetében!", "customizeParseErrors": "A jelenlegi feladatkonfigurációban hibák vannak. Feladat egyedivé tétele előtt javítsa a hibákat!", "moreThanOneBuildTask": "Túl sok buildelési feladat van definiálva a tasks.json-ban. Az első lesz végrehajtva.\n", - "TaskSystem.activeSame.background": "A(z) '{0}' feladat már aktív és a háttérben fut. A feladat befejezéséhez használja az 'Feladat megszakítása...' parancsot a Feladatok menüből!", - "TaskSystem.activeSame.noBackground": "A(z) '{0}' feladat már aktív. A feladat befejezéséhez használja 'Feladat megszakítása' parancsot a Feladatok menüből!", + "TaskSystem.activeSame.background": "A(z) '{0}' azonosítójú feladat már aktiválva van és a háttérben fut.", + "TaskSystem.activeSame.noBackground": "A(z) '{0}' azonosítójú feladat már aktiválva van.", + "terminateTask": "Feladat megszakítása", + "restartTask": "Feladat újraindítása", "TaskSystem.active": "Már fut egy feladat. Szakítsa meg, mielőtt egy másik feladatot futtatna.", "TaskSystem.restartFailed": "Nem sikerült a(z) {0} feladat befejezése és újraindítása.", "TaskService.noConfiguration": "Hiba: a(z) {0} feladatok felderítése nem szolgáltatott feladatot a következő konfigurációhoz:\n{1}\nA feladat figyelmen kívül lesz hagyva.\n", @@ -48,8 +51,8 @@ "recentlyUsed": "legutóbb futtatott feladatok", "configured": "konfigurált feladatok", "detected": "talált feladatok", - "TaskService.notAgain": "Ne jelenítse meg újra", "TaskService.ignoredFolder": "A következő munkaterületi mappák figyelmen kívül vannak hagyva, mert 0.1.0-s verziójú feladatkonfigurációt használnak: {0}", + "TaskService.notAgain": "Ne jelenítse meg újra", "TaskService.pickRunTask": "Válassza ki a futtatandó feladatot!", "TaslService.noEntryToRun": "Nincs futtatandó feladat. Feladatok konfigurálása...", "TaskService.fetchingBuildTasks": "Buildelési feladatok lekérése...", diff --git a/i18n/hun/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/hun/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..e68d7791167 --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "A terminál háttérszíne. Ez lehetővé teszi a terminál paneltől eltérő színezését.", + "terminal.foreground": "A terminál előtérszíne.", + "terminalCursor.foreground": "A terminál kurzorának előtérszíne.", + "terminalCursor.background": "A terminál kurzorának háttérszíne. Lehetővé teszik az olyan karakterek színének módosítását, amelyek fölött egy blokk-típusú kurzor áll.", + "terminal.selectionBackground": "A terminálban kijelölt tartalom háttérszíne.", + "terminal.border": "A terminálokat elválasztó keret színe. Alapértelmezett értéke megegyezik a panel.border értékével.", + "terminal.ansiColor": "'{0}' ANSI-szín a terminálban." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index a1e04bdb7c0..bb78a0034db 100644 --- a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -21,6 +21,7 @@ "workbench.action.terminal.newWorkspacePlaceholder": "Az aktuális munkakönyvtár kiválasztása az új terminálhoz", "workbench.action.terminal.newInActiveWorkspace": "Új integrált terminál létrehozása (az aktív munkaterületen)", "workbench.action.terminal.split": "Terminál kettéosztása", + "workbench.action.terminal.splitInActiveWorkspace": "Terminál kettéosztása (az aktív munkaterületen)", "workbench.action.terminal.focusPreviousPane": "Váltás az előző panelra", "workbench.action.terminal.focusNextPane": "Ugrás a következő panelra", "workbench.action.terminal.resizePaneLeft": "Méret növelése balra", @@ -43,6 +44,7 @@ "workbench.action.terminal.scrollUpPage": "G9rgetés felfelé (oldalanként)", "workbench.action.terminal.scrollToTop": "Görgetés a tetejére", "workbench.action.terminal.clear": "Törlés", + "workbench.action.terminal.clearSelection": "Kijelölés megszüntetése", "workbench.action.terminal.allowWorkspaceShell": "Munkaterületspecifikus shellkonfiguráció engedélyezése", "workbench.action.terminal.disallowWorkspaceShell": "Munkaterületspecifikus shellkonfiguráció letiltása", "workbench.action.terminal.rename": "Átnevezés", @@ -52,8 +54,8 @@ "nextTerminalFindTerm": "Következő keresési kifejezés megjelenítése", "previousTerminalFindTerm": "Előző keresési kifejezés megjelenítése", "quickOpenTerm": "Aktív terminál váltása", - "workbench.action.terminal.focusPreviousCommand": "Váltás az előző parancsra", - "workbench.action.terminal.focusNextCommand": "Váltás a következő parancsra", + "workbench.action.terminal.scrollToPreviousCommand": "Görgetés az előző parancshoz", + "workbench.action.terminal.scrollToNextCommand": "Görgetés a következő parancshoz", "workbench.action.terminal.selectToPreviousCommand": "Előző parancs kiválasztása", "workbench.action.terminal.selectToNextCommand": "Következő parancs kiválasztása" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index dc383e1092c..4f60626235a 100644 --- a/i18n/hun/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "A munkaterület olyan beállításokat tartalmaz, amelyeket csak a felhasználói beállításoknál lehet megadni (({0}). További információhoz kattintson [ide]({1})!", "openWorkspaceSettings": "Munkaterület beállításainak megnyitása", - "dontShowAgain": "Ne jelenítse meg újra", - "unsupportedWorkspaceSettings": "A munkaterület olyan beállításokat tartalmaz, amelyeket csak a felhasználói beállításoknál lehet megadni (({0}). További információhoz kattintson [ide]({1})!" + "dontShowAgain": "Ne jelenítse meg újra" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 150b707b38f..ee159633915 100644 --- a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Később", "releaseNotes": "Kiadási jegyzék", "showReleaseNotes": "Kiadási jegyzék megjelenítése", "read the release notes": "Üdvözöljük a {0} v{1} verziójában. Szeretné megtekinteni a kiadási jegyzéket?", @@ -16,13 +15,14 @@ "updateIsReady": "Új {0}-frissítés érhető el.", "noUpdatesAvailable": "Jelenleg nincs elérhető frissítés.", "ok": "OK", - "download now": "Letöltés most", "thereIsUpdateAvailable": "Van elérhető frissítés.", - "installUpdate": "Frissítés telepítése", + "download now": "Letöltés most", + "later": "Később", "updateAvailable": "Frissítés érhető el: {0} {1}", + "installUpdate": "Frissítés telepítése", "updateInstalling": "{0} {1} a háttérben települ. Jelzünk, ha elkészült.", + "updateAvailableAfterRestart": "A {0} újraindításával telepíthető a legújabb frissítés.", "updateNow": "Frissítés most", - "updateAvailableAfterRestart": "A {0} frissül az újraindítás után.", "commandPalette": "Parancskatalógus...", "settings": "Beállítások", "keyboardShortcuts": "Billentyűparancsok", diff --git a/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 983527bcdae..d027e8f4428 100644 --- a/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview-szerkesztő" + "webview.editor.label": "webview-szerkesztő", + "developer": "Fejlesztői" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..89f213109cf --- /dev/null +++ b/i18n/hun/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview-fejlesztőeszközök megnyitása", + "refreshWebviewLabel": "Webview-k újratöltése" +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/hun/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index e2fd2549371..8e4e5a7201f 100644 --- a/i18n/hun/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Eszközök és nyelvek", "welcomePage.installExtensionPacksDescription": "{0} és {1} fejlesztőkörnyezetek telepítése ", "welcomePage.moreExtensions": "további", - "welcomePage.installKeymapDescription": "Billentyűparancsok telepítése", - "welcomePage.installKeymapExtension": "{0} és {1} billentyűparancsok telepítése ", "welcomePage.others": "további", "welcomePage.colorTheme": "Színtéma", "welcomePage.colorThemeDescription": "Alakítsa át szeretett szerkesztőjét úgy, ahogyan szeretné!", diff --git a/i18n/hun/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json b/i18n/hun/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json index dc9b5a6e5f0..2d49c8ecc4a 100644 --- a/i18n/hun/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json +++ b/i18n/hun/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json @@ -8,6 +8,7 @@ ], "vscode.extension.contributes.configuration.title": "A beállítások összefoglaló leírása. Ez a címke jelenik meg a beállítások fájlban egy különálló megjegyzésként.", "vscode.extension.contributes.configuration.properties": "A konfigurációs tulajdonságok leírása.", + "scope.application.description": "Alkalmazásspecifikus beállítás, ami csak a felhasználói beállításokban konfigurálható.", "scope.window.description": "Ablakspecifikus beállítás, ami konfigurálható a felhasználói vagy munkaterületi beállításokban.", "scope.resource.description": "Erőforrásspecifikus beállítás, ami beállítható a felhasználói, munkaterületi és mappaszintű beállításokban.", "scope.description": "A hatókör, amire a beállítás vonatkozik. Az elérhető hatókörök: `window` és `resource`.", diff --git a/i18n/hun/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/hun/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..e25641ff799 --- /dev/null +++ b/i18n/hun/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedApplicationSetting": "Ez a beállítás csak a felhasználói beállításokban szerepelhet.", + "unsupportedWindowSetting": "Ez a beállítás jelenleg nem alkalmazható. Akkor van használatban, ha közvetlenül nyitja meg ezt a mappát." +} \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index 4dd179c8823..4eade970e45 100644 --- a/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -6,16 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "canNotResolveWorkspaceFolderMultiRoot": "A ${workspaceFolder} értékét nem lehet feloldani egy többmappás munkaterületen. Pontosítsa a változó hatókörét a : karakterrel és a mappa nevének megadásával.", - "canNotResolveWorkspaceFolder": "A ${workspaceFolder} értékét nem lehet feloldani. Nyisson meg egy mappát!", - "canNotResolveFolderBasenameMultiRoot": "A ${workspaceFolderBasename} értékét nem lehet feloldani egy többmappás munkaterületen. Pontosítsa a változó hatókörét a : karakterrel és a mappa nevének megadásával.", - "canNotResolveFolderBasename": "A ${workspaceFolderBasename} értékét nem lehet feloldani. Nyisson meg egy mappát!", - "canNotResolveLineNumber": "A ${lineNumber} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveSelectedText": "A ${selectedText} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveFile": "A ${file} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveRelativeFile": "A ${relativeFile} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveFileDirname": "A ${fileDirname} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveFileExtname": "A ${fileExtname} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveFileBasename": "A ${fileBasename} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!", - "canNotResolveFileBasenameNoExtension": "A ${fileBasenameNoExtension} értékét nem lehet feloldani. Nyisson meg egy szerkesztőablakot!" + "canNotResolveWorkspaceFolder": "A '${workspaceFolder}' értékét nem lehet feloldani. Nyisson meg egy mappát!", + "canNotResolveFolderBasename": "A '${workspaceFolderBasename}' értékét nem lehet feloldani. Nyisson meg egy mappát!" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/hun/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index e23237d0ba2..87c6a22e435 100644 --- a/i18n/hun/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "A kiegészítő gazdafolyamata váratlanul leállt.", "extensionHostProcess.unresponsiveCrash": "A kiegészítő gazdafolyamata le lett állítva, mert nem válaszolt.", - "devTools": "Fejlesztői eszközök", "restart": "Kiegészítő gazdafolyamatának újraindítása", "overwritingExtension": "A(z) {0} kiegészítő felülírása a következővel: {1}.", "extensionUnderDevelopment": "A(z) {0} elérési úton található fejlesztői kiegészítő betöltése", diff --git a/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 3008795a9ef..6db59384b1a 100644 --- a/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,11 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "A működéshez Microsoft .NET-keretrendszer 4.5 szükséges. A telepítéshez kövesse az alábbi hivatkozást!", "installNet": ".NET Framework 4.5 letöltése", "neverShowAgain": "Ne jelenítse meg újra", - "netVersionError": "A működéshez Microsoft .NET-keretrendszer 4.5 szükséges. A telepítéshez kövesse az alábbi hivatkozást!", - "learnMore": "Utasítások", "enospcError": "A {0} nem tudja figyelni a fájlváltozásokat egy ilyen nagy munkaterületen. Kövesse az utasításokat az alábbi hivatkozáson a probléma megoldásához!", + "learnMore": "Utasítások", + "fileInvalidPath": "Érvénytelen fájlerőforrás ({0})", + "fileIsDirectoryError": "A fájl egy könyvtár", + "fileNotModifiedError": "A fájl azóta nem módosult", + "fileTooLargeError": "A fájl túl nagy a megnyitáshoz", + "fileNotFoundError": "Fájl nem található ({0})", + "fileBinaryError": "A fájl binárisnak tűnik és nem nyitható meg szövegként", + "filePermission": "Engedély megtagadva a fájl írására ({0})", + "fileExists": "A létrehozandó fájl már létezik ({0})", + "fileModifiedError": "A fájl azóta módosult", + "fileReadOnlyError": "A fájl csak olvasható", + "fileMoveConflict": "Nem lehet áthelyezni vagy másolni. A fájl már létezik a célhelyen.", + "unableToMoveCopyError": "Nem lehet áthelyezni vagy másolni. A fájl felülírná a mappát, amiben található.", "binFailed": "A következő fájlt nem sikerült a lomtárba helyezni: '{0}'", "trashFailed": "A(z) {0} kukába helyezése nem sikerült" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/hun/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index cbbafb80120..91e90e2f957 100644 --- a/i18n/hun/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/hun/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Fájl nem található ({0})", "fileIsDirectoryError": "A fájl egy könyvtár", "fileNotModifiedError": "A fájl azóta nem módosult", "fileBinaryError": "A fájl binárisnak tűnik és nem nyitható meg szövegként" diff --git a/i18n/ita/extensions/css/package.i18n.json b/i18n/ita/extensions/css/package.i18n.json index 35229bd6699..5f1a325b6da 100644 --- a/i18n/ita/extensions/css/package.i18n.json +++ b/i18n/ita/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio CSS", + "description": "Offre l'evidenziazione della sintassi e la corrispondenza delle parentesi nei file CSS, LESS e SCSS." } \ No newline at end of file diff --git a/i18n/ita/extensions/emmet/package.i18n.json b/i18n/ita/extensions/emmet/package.i18n.json index 4b669f7fc49..ed7d2e37205 100644 --- a/i18n/ita/extensions/emmet/package.i18n.json +++ b/i18n/ita/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Percorso di una cartella contenente profili e snippet Emmet.'", "emmetShowExpandedAbbreviation": "Mostra le abbreviazioni Emmet espanse come suggerimenti.\nL'opzione \"inMarkupAndStylesheetFilesOnly\" si applica a html, haml, jade, slim, xml, xsl, css, scss, sass, less e stylus.\nL'opzione \"sempre\" (always) si applica a tutte le parti del file indipendentemente dal markup/css.", "emmetShowAbbreviationSuggestions": "Mostra possibili abbreviazioni Emmet come suggerimenti. Non si applica a fogli di stile o quando emmet.showExpandedAbbreviation è impostata a \"mai\" (never).", - "emmetIncludeLanguages": "Abilita le abbreviazioni Emmet in linguaggi che non sono normalmente supportati. Qui si può aggiungere un mapping tra il linguaggio ed il linguaggio supportato da Emmet.\n Ad esempio: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "Variabili da utilizzare negli snippet Emmet", "emmetTriggerExpansionOnTab": "Se abilitate, le abbreviazioni Emmet vengono espanse quando si preme TAB.", "emmetPreferences": "Preferenze usate per modificare il comportamento di alcune azioni e i resolver di Emmet.", @@ -59,5 +58,6 @@ "emmetPreferencesCssWebkitProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'webkit' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'webkit' impostare stringa vuota.", "emmetPreferencesCssMozProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'moz' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'moz' impostare stringa vuota.", "emmetPreferencesCssOProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'o' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'o' impostare stringa vuota.", - "emmetPreferencesCssMsProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'ms' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'ms' impostare stringa vuota." + "emmetPreferencesCssMsProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'ms' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'ms' impostare stringa vuota.", + "emmetPreferencesCssFuzzySearchMinScore": "Il valore minimo (da 0 a 1) che dovrebbe raggiungere un'abbreviazione di fuzzy-match. I valori più bassi possono produrre molti falsi positivi, i valori più alti possono ridurre le possibili corrispondenze." } \ No newline at end of file diff --git a/i18n/ita/extensions/git/out/commands.i18n.json b/i18n/ita/extensions/git/out/commands.i18n.json index 13f1df3d818..792f4a2d3dd 100644 --- a/i18n/ita/extensions/git/out/commands.i18n.json +++ b/i18n/ita/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "OK", "push with tags success": "Il push con tag è riuscito.", "pick remote": "Selezionare un repository remoto in cui pubblicare il ramo '{0}':", + "sync is unpredictable": "Questa azione consentirà di effettuare il push e il pull di commit da e verso '{0}/[1]'.", "never again": "OK, non visualizzare più", "no remotes to publish": "Il repository non contiene elementi remoti configurati come destinazione della pubblicazione.", "no changes stash": "Non ci sono modifiche da accantonare.", diff --git a/i18n/ita/extensions/git/package.i18n.json b/i18n/ita/extensions/git/package.i18n.json index 24f0b387a00..3e99eceff18 100644 --- a/i18n/ita/extensions/git/package.i18n.json +++ b/i18n/ita/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Controlla se visualizzare un'azione Apri file inline nella visualizzazione modifiche GIT.", "config.inputValidation": "Controlla quando visualizzare la convalida sull'input del messaggio di commit.", "config.detectSubmodules": "Controlla se rilevare automaticamente i moduli secondari GIT.", + "config.detectSubmodulesLimit": "Controlla il limite dei sottomoduli git rilevati.", "colors.modified": "Colore delle risorse modificate.", "colors.deleted": "Colore delle risorse eliminate.", "colors.untracked": "Colore delle risorse non tracciate.", diff --git a/i18n/ita/extensions/html/package.i18n.json b/i18n/ita/extensions/html/package.i18n.json index 35229bd6699..9015f75af4c 100644 --- a/i18n/ita/extensions/html/package.i18n.json +++ b/i18n/ita/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio HTML", + "description": "Fornisce l'evidenziazione della sintassi, la corrispondenza delle parentesi & frammenti nei file HTML." } \ No newline at end of file diff --git a/i18n/ita/extensions/json-language-features/package.i18n.json b/i18n/ita/extensions/json-language-features/package.i18n.json index 6ae49c6efe4..2b426a9eac1 100644 --- a/i18n/ita/extensions/json-language-features/package.i18n.json +++ b/i18n/ita/extensions/json-language-features/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Funzionalità del linguaggio JSON", "description": "Fornisce supporto avanzato del linguaggio per i file JSON.", "json.schemas.desc": "Associa schemi a file JSON nel progetto corrente", "json.schemas.url.desc": "URL di uno schema o percorso relativo di uno schema nella directory corrente", diff --git a/i18n/ita/extensions/json/package.i18n.json b/i18n/ita/extensions/json/package.i18n.json index 35229bd6699..d1cf4899cfa 100644 --- a/i18n/ita/extensions/json/package.i18n.json +++ b/i18n/ita/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio JSON", + "description": "Offre l'evidenziazione della sintassi e la corrispondenza delle parentesi nei file JSON." } \ No newline at end of file diff --git a/i18n/ita/extensions/php-language-features/package.i18n.json b/i18n/ita/extensions/php-language-features/package.i18n.json index ea44ea91d9f..b68565b4e5b 100644 --- a/i18n/ita/extensions/php-language-features/package.i18n.json +++ b/i18n/ita/extensions/php-language-features/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Indica se il linter viene eseguito durante il salvataggio o la digitazione.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)" + "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)", + "displayName": "Funzionalità del linguaggio PHP", + "description": "Fornisce supporto avanzato del linguaggio per i file PHP." } \ No newline at end of file diff --git a/i18n/ita/extensions/php/package.i18n.json b/i18n/ita/extensions/php/package.i18n.json index 59850c0a057..6e9f75db20f 100644 --- a/i18n/ita/extensions/php/package.i18n.json +++ b/i18n/ita/extensions/php/package.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Funzionalità del linguaggio PHP" + "description": "Offre l'evidenziazione della sintassi e la corrispondenza delle parentesi nei file PHP." } \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/commands.i18n.json b/i18n/ita/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..ffa2bc44d1e --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Aprire una cartella in Visual Studio Code per usare un progetto TypeScript o JavaScript", + "typescript.projectConfigUnsupportedFile": "Non è stato possibile determinare il progetto TypeScript o JavaScript. Il tipo di file non è supportato", + "typescript.projectConfigCouldNotGetInfo": "Non è stato possibile determinare il progetto TypeScript o JavaScript", + "typescript.noTypeScriptProjectConfig": "Il file non fa parte di un progetto TypeScript. Clicca [qui]({0}) per saperne di più.", + "typescript.noJavaScriptProjectConfig": "Il file non fa parte di un progetto JavaScript. Clicca [qui]({0}) per saperne di più.", + "typescript.configureTsconfigQuickPick": "Configura tsconfig.json", + "typescript.configureJsconfigQuickPick": "Configura jsconfig.json" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..86de96163a7 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Selezionare l'azione codice da applicare", + "acquiringTypingsLabel": "Acquisizione dei file typings...", + "acquiringTypingsDetail": "Acquisizione delle definizioni dei file typings per IntelliSense.", + "autoImportLabel": "Importazione automatica da {0}" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..98bb57ed994 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Attiva il controllo semantico in un file JavaScript. Deve essere all'inizio del file.", + "ts-nocheck": "Disattiva il controllo semantico in un file JavaScript. Deve essere all'inizio del file.", + "ts-ignore": "Elimina errori di @ts-check sulla riga successiva di un file." +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..cd8cac2d81a --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 implementazione", + "manyImplementationLabel": "{0} implementazioni", + "implementationsErrorLabel": "Non è stato possibile determinare le implementazioni" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..2e98125f88d --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "Commento JSDoc" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..40c311f3382 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Organizza gli Imports" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..9bccba0f7a0 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Correggi tutti nel file)" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..4c74ac0e94a --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 riferimento", + "manyReferenceLabel": "{0} riferimenti", + "referenceErrorLabel": "Non è stato possibile determinare i riferimenti" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..a5aca9552f5 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "Compila - {0}", + "buildAndWatchTscLabel": "Osserva - {0}" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/ita/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..78e5e160a62 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "Il percorso {0} non punta a un'installazione valida di tsserver. Verrà eseguito il fallback alla versione in bundle di TypeScript.", + "serverCouldNotBeStarted": "Non è stato possibile avviare il server di linguaggio TypeScript. Messaggio di errore: {0}", + "typescript.openTsServerLog.notSupported": "Per la registrazione del server TypeScript è necessario almeno TypeScript 2.2.2", + "typescript.openTsServerLog.loggingNotEnabled": "La registrazione del server TypeScript è disattivata. Per abilitarla, impostare `typescript.tsserver.log` e riavviare il server TypeScript", + "typescript.openTsServerLog.enableAndReloadOption": "Abilita la registrazione e riavvia il server TypeScript", + "typescript.openTsServerLog.noLogFile": "Il server TypeScript non ha avviato la registrazione.", + "openTsServerLog.openFileFailedFailed": "Non è stato possibile aprire il file di log del server TypeScript", + "serverDiedAfterStart": "Il servizio di linguaggio TypeScript è stato arrestato in modo imprevisto per cinque volte dopo che è stato avviato e non verrà riavviato.", + "serverDiedReportIssue": "Segnala problema", + "serverDied": "Il servizio di linguaggio Typescript è stato arrestato in modo imprevisto per cinque volte negli ultimi cinque minuti." +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..75f0f394012 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "versione non valida" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..ad1ac2efcc7 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Per abilitare le funzionalità del linguaggio JavaScript/TypeScript a livello di progetto, escludere le cartelle che contengono molti file, come {0}", + "hintExclude.generic": "Per abilitare le funzionalità del linguaggio JavaScript/TypeScript a livello di progetto, escludere le cartelle di grandi dimensioni che contengono file di origine su cui non si lavora.", + "large.label": "Configura esclusioni", + "hintExclude.tooltip": "Per abilitare le funzionalità del linguaggio JavaScript/TypeScript a livello di progetto, escludere le cartelle di grandi dimensioni che contengono file di origine su cui non si lavora." +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..78cf90b25ab --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Recupero dei dati per ottimizzare IntelliSense in TypeScript", + "typesInstallerInitializationFailed.title": "Non è stato possibile installare i file di definizione tipi per le funzionalità del linguaggio JavaScript. Verificare che NPM sia installato e o configurare 'typescript.npm' nelle impostazioni utente. Clicca [qui]({0}) per saperne di più.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Non visualizzare più questo messaggio" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..c0e18983544 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Usa versione di VS Code", + "useWorkspaceVersionOption": "Usa versione dell'area di lavoro", + "learnMore": "Altre informazioni", + "selectTsVersion": "Selezionare la versione di TypeScript usata per le funzionalità del linguaggio JavaScript e TypeScript" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/ita/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..385cbc61377 --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Non è stato possibile caricare la versione di TypeScript in questo percorso", + "noBundledServerFound": "Il file tsserver di VS Code è stato eliminato da un'altra applicazione, ad esempio uno strumento di rilevamento virus che non funziona correttamente. Reinstallare VS Code." +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-language-features/package.i18n.json b/i18n/ita/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..9329475d6ab --- /dev/null +++ b/i18n/ita/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,57 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Funzionalità dei linguaggi TypeScript e JavaScript", + "description": "Fornisce un supporto avanzato per JavaScript e TypeScript", + "typescript.reloadProjects.title": "Ricarica progetto", + "javascript.reloadProjects.title": "Ricarica progetto", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Completare le funzioni con la relativa firma del parametro.", + "typescript.tsdk.desc": "Specifica il percorso della cartella che contiene i file tsserver e lib*.d.ts da usare.", + "typescript.disableAutomaticTypeAcquisition": "Disabilita l'acquisizione automatica del tipo. Richiede TypeScript >= 2.0.6.", + "typescript.tsserver.log": "Abilita la registrazione del server TypeScript in un file. Questo registro può essere utilizzato per diagnosticare problemi del server TypeScript. Il registro può contenere percorsi di file, codice sorgente e altre informazioni del progetto potenzialmente riservate. ", + "typescript.tsserver.trace": "Abilita la traccia dei messaggi inviati al server TypeScript. Questa traccia può essere utilizzata per diagnosticare problemi del server TypeScript. La traccia può contenere percorsi di file, codice sorgente e altre informazioni del progetto potenzialmente riservate.", + "typescript.validate.enable": "Abilita/Disabilita la convalida TypeScript.", + "typescript.format.enable": "Abilita/Disabilita il formattatore TypeScript predefinito.", + "javascript.format.enable": "Abilita/Disabilita il formattatore JavaScript predefinito.", + "format.insertSpaceAfterCommaDelimiter": "Consente di definire la gestione dello spazio dopo una virgola di delimitazione6", + "format.insertSpaceAfterConstructor": "Definisce la gestione dello spazio dopo la parola chiave constructor. Richiede TypeScript >= 2.3.0.", + "format.insertSpaceAfterSemicolonInForStatements": " Consente di definire la gestione dello spazio dopo un punto e virgola in un'istruzione for.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Consente di definire la gestione dello spazio dopo un operatore binario.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Consente di definire la gestione dello spazio dopo le parole chiave in un'istruzione del flusso di controllo.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Consente di definire la gestione dello spazio dopo la parola chiave function per funzioni anonime.", + "format.insertSpaceBeforeFunctionParenthesis": "Consente di definire la gestione dello spazio prima delle parentesi dell'argomento della funzione. Richiede TypeScript >= 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Consente di definire la gestione dello spazio dopo la parentesi graffa iniziale e prima della parentesi graffa finale della stringa del modello. Richiede TypeScript >= 2.0.6", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Consente di definire la gestione dello spazio dopo la parentesi graffa iniziale e prima della parentesi graffa finale dell'espressione JSX. Richiede TypeScript >= 2.0.6", + "format.insertSpaceAfterTypeAssertion": "Definisce la gestione dello spazio dopo le asserzioni di tipo in TypeScript. Richiede TypeScript >= 2.4.", + "format.placeOpenBraceOnNewLineForFunctions": "Consente di definire se una parentesi graffa di apertura viene o meno inserita su una riga per le funzioni.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Consente di definire se una parentesi graffa di apertura viene o meno inserita su una riga per i blocchi di controllo.", + "javascript.validate.enable": "Abilita/Disabilita la convalida JavaScript.", + "typescript.goToProjectConfig.title": "Passa a Configurazione progetto", + "javascript.goToProjectConfig.title": "Passa a Configurazione progetto", + "javascript.referencesCodeLens.enabled": "Abilita/disabilita riferimenti CodeLens nei file JavaScript.", + "typescript.referencesCodeLens.enabled": "Abilita/disabilita riferimenti CodeLens nei file TypeScript. Richiede TypeScript >= 2.0.6.", + "typescript.implementationsCodeLens.enabled": "Abilita/Disabilita le finestre CodeLens per le implementazioni. Richiede una versione di TypeScript uguale o successiva alla 2.2.0.", + "typescript.openTsServerLog.title": "Apri il log del server TypeScript", + "typescript.restartTsServer": "Riavvia server TS", + "typescript.selectTypeScriptVersion.title": "Seleziona la versione di TypeScript", + "typescript.reportStyleChecksAsWarnings": "Evidenzia i controlli di stile come warning", + "jsDocCompletion.enabled": "Abilita/Disabilita commenti automatici JSDoc", + "javascript.implicitProjectConfig.checkJs": "Abilita/disabilita il controllo semantico di file JavaScript. File jsconfig.json o tsconfig.json esistenti sovrascrivono su questa impostazione. Richiede TypeScript >= 2.3.1.", + "typescript.npm": "Specifica il percorso dell'eseguibile NPM utilizzato per l'acquisizione automatica delle definizioni di tipi. Richiede TypeScript >= 2.3.4.", + "typescript.check.npmIsInstalled": "Controlla se NPM è installato per l'acquisizione automatica delle definizioni di tipi", + "javascript.nameSuggestions": "Abilita/disabilita l'inclusione di nomi univoci dal file negli elenchi di suggerimento di JavaScript.", + "typescript.tsc.autoDetect": "Controlla l'auto-rilevazione di attività di tsc. 'off' disabilita questa funzionalità. 'build' crea solo attività di singola compilazione esecuzione. 'watch' crea solo attività di compilazione e controllo. 'on' crea attività sia di tipo 'build' che 'watch'. Il valore predefinito è 'on'.", + "typescript.problemMatchers.tsc.label": "Problemi TypeScript", + "typescript.problemMatchers.tscWatch.label": "Problemi TypeScript (modalità espressione di controllo)", + "typescript.locale": "Assegna le impostazioni internazionali utilizzate per riportare errori TypeScript. Richiede TypeScript > = 2.6.0. Il valore predefinito 'null' utilizza le impostazioni internazionali di VS Code.", + "javascript.implicitProjectConfig.experimentalDecorators": "Abilita/disabilita 'experimentalDecorators' per i file JavaScript che non fanno parte di un progetto. File jsconfig.json o tsconfig.json esistenti ignorano questa impostazione. Richiede TypeScript >= 2.3.1.", + "typescript.autoImportSuggestions.enabled": "Abilita/Disabilita suggerimenti importazione automatica. Richiede una versione di TypeScript >= 2.6.1", + "typescript.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi.", + "taskDefinition.tsconfig.description": "File tsconfig che definisce la compilazione TS." +} \ No newline at end of file diff --git a/i18n/ita/src/vs/base/node/processes.i18n.json b/i18n/ita/src/vs/base/node/processes.i18n.json index 15d77305511..35229bd6699 100644 --- a/i18n/ita/src/vs/base/node/processes.i18n.json +++ b/i18n/ita/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Non è possibile eseguire un comando della shell su un'unità UNC." + ] } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 2b9d73ba3f9..0cbefebbb8f 100644 --- a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -11,7 +11,6 @@ "similarIssues": "Problemi simili", "open": "Apri", "closed": "Chiuso", - "noResults": "Non sono stati trovati risultati", "settingsSearchIssue": "Problema di ricerca impostazioni", "bugReporter": "Segnalazione bug", "featureRequest": "Richiesta di funzionalità", diff --git a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index bd90ead3d7e..d087b3cb7c7 100644 --- a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "Completare il modulo in lingua inglese.", "issueTypeLabel": "Questo è un", + "vscode": "Visual Studio Code", + "disableExtensions": "disabilitando tutte le estensioni e ricaricando la finestra", + "chooseExtension": "Estensione", "issueTitleLabel": "Titolo", "issueTitleRequired": "Immettere un titolo.", "titleLengthValidation": "Il titolo è troppo lungo.", @@ -18,13 +21,6 @@ "extensions": "Estensioni personali", "searchedExtensions": "Estensioni cercate", "settingsSearchDetails": "Dettagli ricerca impostazioni", - "tryDisablingExtensions": "Il problema è riproducibile quando le estensioni sono disabilitate?", - "yes": "Sì", - "no": "No", - "disableExtensionsLabelText": "Provare a riprodurre il problema dopo {0}.", - "disableExtensions": "disabilitando tutte le estensioni e ricaricando la finestra", - "showRunningExtensionsLabelText": "Se si sospetta che il problema sia relativo all'estensione, {0} per segnalare il problema.", - "showRunningExtensions": "visualizzare tutte le estensioni in esecuzione", "details": "Immettere i dettagli.", "loadingData": "Caricamento dei dati..." } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/ita/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..d72487d0df2 --- /dev/null +++ b/i18n/ita/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Nome" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/ita/src/vs/editor/browser/widget/diffReview.i18n.json index 33f8c847059..f77cf818806 100644 --- a/i18n/ita/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/ita/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Chiudi", - "header": "Differenza {0} di {1}: originali {2}, {3} righe, modificate {4}, righe {5}", "blankLine": "vuota", "equalLine": "originali {0}, modificate {1}: {2}", "insertLine": "+ modificate {0}: {1}", diff --git a/i18n/ita/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/ita/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/ita/src/vs/editor/common/config/commonEditorConfig.i18n.json index e88f3f97e71..214bd3b8cab 100644 --- a/i18n/ita/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/ita/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Rappresenta il tasto 'Control' (ctrl) su Windows e Linux e il tasto 'Comando' (cmd) su OSX.", "multiCursorModifier.alt": "Rappresenta il tasto 'Alt' su Windows e Linux e il tasto 'Opzione' su OSX.", "multiCursorModifier": "Il modificatore da utilizzare per aggiungere molteplici cursori con il mouse. 'ctrlCmd' rappresenta il tasto 'Control' su Windows e Linux e il tasto 'Comando' su OSX. I gesti del mouse Vai a definizione e Apri il Link si adatteranno in modo da non entrare in conflitto con il modificatore multi-cursore.", + "multiCursorMergeOverlapping": "Unire i cursori multipli se sovrapposti.", "quickSuggestions.strings": "Abilita i suggerimenti rapidi all'interno di stringhe.", "quickSuggestions.comments": "Abilita i suggerimenti rapidi all'interno di commenti.", "quickSuggestions.other": "Abilita i suggerimenti rapidi all'esterno di stringhe e commenti.", diff --git a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json index 75512d966b7..8456c0eb96c 100644 --- a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "Colore delle guide per i rientri dell'editor.", "editorLineNumbers": "Colore dei numeri di riga dell'editor.", "editorActiveLineNumber": "Colore dei numeri per la riga attiva dell'editor", + "deprecatedEditorActiveLineNumber": "Id è deprecato. In alternativa utilizzare 'editorLineNumber.activeForeground'.", "editorRuler": "Colore dei righelli dell'editor.", "editorCodeLensForeground": "Colore primo piano delle finestre di CodeLens dell'editor", "editorBracketMatchBackground": "Colore di sfondo delle parentesi corrispondenti", @@ -28,6 +29,9 @@ "warningBorder": "Colore del bordo degli squggle di avviso nell'editor.", "infoForeground": "Colore primo piano degli squiggle di informazione nell'editor", "infoBorder": "Colore del bordo degli squiggle di informazione nell'editor", + "hintForeground": "Colore primo piano degli squiggle di suggerimento nell'editor.", + "hintBorder": "Colore del bordo degli squiggle di suggerimento nell'editor.", + "overviewRulerRangeHighlight": "Colore del marcatore righello panoramica per evidenziazione intervalli. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.", "overviewRuleError": "Colore del marcatore del righello delle annotazioni per gli errori.", "overviewRuleWarning": "Colore del marcatore del righello delle annotazioni per gli avvisi.", "overviewRuleInfo": "Colore del marcatore del righello delle annotazioni per i messaggi di tipo informativo." diff --git a/i18n/ita/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/ita/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..d3f4c9834ab --- /dev/null +++ b/i18n/ita/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Mostra correzioni ({0})", + "quickFix": "Mostra correzioni", + "organizeImports.label": "Organizza gli Imports" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/ita/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 35229bd6699..af44bbbb9ea 100644 --- a/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -5,5 +5,43 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "Sunday": "Domenica", + "Monday": "Lunedì", + "Tuesday": "Martedì", + "Wednesday": "Mercoledì", + "Thursday": "Giovedì", + "Friday": "Venerdì", + "Saturday": "Sabato", + "SundayShort": "Dom", + "MondayShort": "Lun", + "TuesdayShort": "Mar", + "WednesdayShort": "Mer", + "ThursdayShort": "Gio", + "FridayShort": "Ven", + "SaturdayShort": "Sab", + "January": "Gennaio", + "February": "Febbraio", + "March": "Marzo", + "April": "Aprile", + "May": "Maggio", + "June": "Giugno", + "July": "Luglio", + "August": "Agosto", + "September": "Settembre", + "October": "Ottobre", + "November": "Novembre", + "December": "Dicembre", + "JanuaryShort": "Gen", + "FebruaryShort": "Feb", + "MarchShort": "Mar", + "AprilShort": "Apr", + "MayShort": "Mag", + "JuneShort": "Giu", + "JulyShort": "Lug", + "AugustShort": "Ago", + "SeptemberShort": "Set", + "OctoberShort": "Ott", + "NovemberShort": "Nov", + "DecemberShort": "Dic" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 1ce97a983c4..e0d29249698 100644 --- a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "Colore di sfondo di un simbolo durante l'accesso in scrittura, per esempio durante la scrittura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "wordHighlightBorder": "Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.", "wordHighlightStrongBorder": "Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.", + "overviewRulerWordHighlightForeground": "Colore del marcatore righello panoramica per evidenziazione simboli. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.", + "overviewRulerWordHighlightStrongForeground": "Colore del marcatore righello panoramica per evidenziazione simboli con accesso in scrittura. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.", "wordHighlight.next.label": "Vai al prossimo simbolo evidenziato", "wordHighlight.previous.label": "Vai al precedente simbolo evidenziato" } \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/environment/node/argv.i18n.json b/i18n/ita/src/vs/platform/environment/node/argv.i18n.json index e75bcb71ed2..320bbcac4d1 100644 --- a/i18n/ita/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/ita/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Eseguire l'avvio con il comando 'Developer: Startup Performance' abilitato.", "prof-startup": "Esegui il profiler della CPU durante l'avvio", "disableExtensions": "Disabilita tutte le estensioni installate.", - "inspect-extensions": "Consentire il debug e profiling delle estensioni. Controllare gli strumenti di sviluppo per l'uri di connessione.", - "inspect-brk-extensions": "Consentire il debug e profiling delle estensioni con l'host di estensione in pausa dopo inizio. Controllare gli strumenti di sviluppo per l'uri di connessione.", "disableGPU": "Disabilita l'accelerazione hardware della GPU.", "uploadLogs": "Caricamento dei log della sessione corrente verso un punto di comunicazione sicuro.", "maxMemory": "Dimensione massima della memoria per una finestra (in Mbytes).", diff --git a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 91d39114cd9..87d656a3dd0 100644 --- a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,12 +14,15 @@ "errorInstallingDependencies": "Errore durante l'installazione delle dipendenze. {0}", "MarketPlaceDisabled": "Il Marketplace non è abilitato", "removeError": "Errore durante la rimozione dell'estensione: {0}. Chiudere e riavviare VS Code prima di riprovare.", + "Not a Marketplace extension": "Solo le Estensioni del Marketplace possono essere reinstallate", "notFoundCompatible": "Impossibile installare '{0}'; non è presente alcuna versione compatibile con VS Code '{1}'.", "malicious extension": "Non è possibile installare l'estensione poiché è stata segnalata come problematica.", "notFoundCompatibleDependency": "Impossibile installare perché non è stata trovata l'estensione dipendente '{0}' compatibile con la versione corrente '{1}' di VS Code.", "quitCode": "Impossibile installare l'estensione. Riavviare VS Code prima di procedere ad un nuovo setup.", "exitCode": "Impossibile installare l'estensione. Riavviare VS Code prima di procedere ad un nuovo setup.", "uninstallDependeciesConfirmation": "Disinstallare solo '{0}' o anche le relative dipendenze?", + "uninstallOnly": "Solo Estensioni", + "uninstallAll": "Disinstalla tutti", "uninstallConfirmation": "Disinstallare '{0}'?", "ok": "OK", "singleDependentError": "Non è possibile disinstallare l'estensione '{0}'. L'estensione '{1}' dipende da tale estensione.", diff --git a/i18n/ita/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/ita/src/vs/platform/extensions/node/extensionValidator.i18n.json index dc710b846d6..1a38b9222de 100644 --- a/i18n/ita/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/ita/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Non è stato possibile analizzare il valore {0} di `engines.vscode`. Usare ad esempio: ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x e così via.", "versionSpecificity1": "La versione specificata in `engines.vscode` ({0}) non è abbastanza specifica. Per le versioni di vscode precedenti alla 1.0.0, definire almeno le versioni principale e secondaria desiderate, ad esempio ^0.10.0, 0.10.x, 0.11.0 e così via.", "versionSpecificity2": "La versione specificata in `engines.vscode` ({0}) non è abbastanza specifica. Per le versioni di vscode successive alla 1.0.0, definire almeno la versione principale desiderata, ad esempio ^1.10.0, 1.10.x, 1.x.x, 2.x.x e così via.", "versionMismatch": "L'estensione non è compatibile con Visual Studio Code {0}. Per l'estensione è richiesto: {1}." diff --git a/i18n/ita/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/ita/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 60001870a37..7abef1dc4df 100644 --- a/i18n/ita/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/ita/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "L'installazione di {0} sembra danneggiata. Reinstallare.", "integrity.moreInformation": "Altre informazioni", - "integrity.dontShowAgain": "Non visualizzare più questo messaggio", - "integrity.prompt": "L'installazione di {0} sembra danneggiata. Reinstallare." + "integrity.dontShowAgain": "Non visualizzare più questo messaggio" } \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/list/browser/listService.i18n.json b/i18n/ita/src/vs/platform/list/browser/listService.i18n.json index adf48cd06e8..8a43e89f813 100644 --- a/i18n/ita/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/ita/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Modificatore da usare per aggiungere un elemento in alberi ed elenchi a una selezione multipla con il mouse (ad esempio editor aperti e visualizzazione Gestione controllo servizi in Esplora risorse). 'ctrlCmd' rappresenta il tasto 'CTRL' in Windows e Linux e il tasto 'Cmd' in OSX. I gesti del mouse Apri lateralmente, se supportati, si adatteranno in modo da non entrare in conflitto con il modificatore di selezione multipla.", "openMode.singleClick": "Apre elementi facendo un singolo clic col mouse.", "openMode.doubleClick": "Apre elementi facendo doppio clic col mouse.", - "openModeModifier": "Controlla la modalità di apertura degli elementi in alberi ed elenchi con il mouse, se supportata. Impostare su `singleClick` per aprire gli elementi con un unico clic del mouse e `doubleClick` per aprirli solo se viene fatto doppio clic. Per gli elementi padre con elementi figlio negli alberi, questa impostazione controllerà se per espandere l'elemento padre è necessario fare clic una sola volta o fare doppio clic. Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non è applicabile. " + "openModeModifier": "Controlla la modalità di apertura degli elementi in alberi ed elenchi con il mouse, se supportata. Impostare su `singleClick` per aprire gli elementi con un unico clic del mouse e `doubleClick` per aprirli solo se viene fatto doppio clic. Per gli elementi padre con elementi figlio negli alberi, questa impostazione controllerà se per espandere l'elemento padre è necessario fare clic una sola volta o fare doppio clic. Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non è applicabile. ", + "horizontalScrolling setting": "Controlla se gli alberi supportano lo scorrimento orizzontale in workbench." } \ No newline at end of file diff --git a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json index 2e5c4543ebf..ff2aecc6fe1 100644 --- a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "Colore bordo su intestazioni e sulla barra di divisione di conflitti di merge in linea.", "overviewRulerCurrentContentForeground": "Colore primo piano righello panoramica attuale per i conflitti di merge in linea.", "overviewRulerIncomingContentForeground": "Colore primo piano del righello panoramica modifiche in arrivo per i conflitti di merge in linea.", - "overviewRulerCommonContentForeground": "Colore primo piano righello panoramica dell'antenato comune per i conflitti di merge in linea." + "overviewRulerCommonContentForeground": "Colore primo piano righello panoramica dell'antenato comune per i conflitti di merge in linea.", + "overviewRulerFindMatchForeground": "Colore del marcatore righello panoramica per trovare corrispondenze. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.", + "overviewRulerSelectionHighlightForeground": "Colore del marcatore righello panoramica per evidenziazione selezioni. Il colore non deve essere opaco per non nascondere decorazioni sottostanti." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/ita/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..490942db41e --- /dev/null +++ b/i18n/ita/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "la proprietà `{0}` è obbligatoria e deve essere di tipo `string`", + "showViewlet": "Mostra {0}", + "view": "Visualizza" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/ita/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index e630b27b6a6..bad682f1630 100644 --- a/i18n/ita/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/ita/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Contribuisce visualizzazioni all'editor", "views.explorer": "Visualizzazione di esplorazione", "views.debug": "Visualizzazione Debug", - "locationId.invalid": "'{0}' non è una posizione valida per la visualizzazione", "duplicateView1": "Non è possibile registrare più visualizzazioni con stesso ID `{0}` nel percorso `{1}`", "duplicateView2": "Nel percorso `{1}` è già registrata una visualizzazione con ID `{0}` " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 8488ca775b8..ac0f699ab1e 100644 --- a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Comando Formatta dopo salvataggio interrotto dopo {0} ms", + "timeout.onWillSave": "Evento onWillSaveTextDocument interrotto dopo 1750 ms", "saveParticipants": "Esecuzione del salvataggio partecipanti..." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 6162c44dea8..35229bd6699 100644 --- a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "editor Webview" + ] } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json index 35229bd6699..04c3870e62b 100644 --- a/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json +++ b/i18n/ita/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "extensionSource": "{0} (estensione)" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 6469f13b9ec..00854b582f8 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "Se non si utilizza un'utilità per la lettura dello schermo, si prega di impostare 'editor.accessibilitySupport' a \"off\".", "disableTabMode": "Disabilita modalità accessibilità", "gotoLine": "Vai alla riga", - "indentation": "Rientro", "selectEncoding": "Seleziona codifica", "selectEOL": "Seleziona sequenza di fine riga", "selectLanguageMode": "Seleziona modalità linguaggio", diff --git a/i18n/ita/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 46399326736..7d190d76980 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0} MB", "sizeGB": "{0} GB", "sizeTB": "{0} TB", - "largeImageError": "Le dimensioni del file dell'immagine sono eccessive (maggiori di 1 MB) per la visualizzazione nell'editor. ", "resourceOpenExternalButton": "Aprire l'immagine utilizzando un programma esterno?", - "nativeBinaryError": "Il file non verrà visualizzato nell'editor perché è binario, è molto grande o usa una codifica testo non supportata.", "zoom.action.fit.label": "Immagine intera", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 40f3e83a7db..a203ffaf2a0 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Nessuna nuova notifica", "notifications": "Notifiche", "notificationsToolbar": "Azioni del centro notifiche", "notificationsList": "Elenco notifiche" diff --git a/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..bcdf56e4849 --- /dev/null +++ b/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json index e548589e82c..b0716c351ce 100644 --- a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "Finestra", "window.openFilesInNewWindow.on": "I file verranno aperti in una nuova finestra", "window.openFilesInNewWindow.off": "I file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva", + "window.openFilesInNewWindow.defaultMac": "I file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva a meno che non vengano aperti tramite il pannello Dock o da Finder", + "window.openFilesInNewWindow.default": "I file verranno aperti in una nuova finestra a meno che non vengano selezionati all'interno dell'applicazione, ad esempio tramite il menu File", + "openFilesInNewWindowMac": "Controlla se i file devono essere aperti in una nuova finestra.\n- default: i file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva a meno che non vengano aperti tramite il pannello Dock o da Finder\n- on: i file verranno aperti in una nuova finestra\n- off: i file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva\nNota: possono comunque verificarsi casi in cui questa impostazione viene ignorata, ad esempio quando si usa l'opzione della riga di comando -new-window o -reuse-window.", + "openFilesInNewWindow": "Controlla se i file devono essere aperti in una nuova finestra.\n- default: i file verranno aperti in una nuova finestra a meno che non vengano selezionati all'interno dell'applicazione, ad esempio tramite il menu File\n- on: i file verranno aperti in una nuova finestra\n- off: i file verranno aperti nella finestra con la cartella dei file aperta o nell'ultima finestra attiva\nNota: possono comunque verificarsi casi in cui questa impostazione viene ignorata, ad esempio quando si usa l'opzione della riga di comando -new-window o -reuse-window.", "window.openFoldersInNewWindow.on": "Le cartelle verranno aperte in una nuova finestra", "window.openFoldersInNewWindow.off": "Le cartelle sostituiranno l'ultima finestra attiva", "window.openFoldersInNewWindow.default": "Le cartelle verranno aperte in una nuova finestra a meno che non si selezioni una cartella dall'interno dell'applicazione, ad esempio tramite il menu File", "openFoldersInNewWindow": "Controlla se le cartelle devono essere aperte in una nuova finestra o sostituire l'ultima finestra attiva.\n- default: le cartelle verranno aperte in una nuova finestra a meno che non si selezioni una cartella dall'interno dell'applicazione, ad esempio tramite il menu File\n- on: le cartelle verranno aperte in una nuova finestra\n- off: le cartelle sostituiranno l'ultima finestra attiva\nNota: possono comunque verificarsi casi in cui questa impostazione viene ignorata, ad esempio quando si usa l'opzione della riga di comando -new-window o -reuse-window.", + "window.openWithoutArgumentsInNewWindow.on": "Apri una nuova finestra vuota", + "window.openWithoutArgumentsInNewWindow.off": "Imposta lo stato attivo sull'ultima istanza in esecuzione attiva", + "openWithoutArgumentsInNewWindow": "Controlla se deve essere aperta una nuova finestra vuota quando si avvia una seconda istanza senza argomento o se è necessario impostare lo stato attivo sull'ultima istanza in esecuzione.\n- on: apre una nuova finestra vuota\n- off: imposta lo stato attivo sull'ultima istanza in esecuzione attiva\nNota: possono comunque verificarsi casi in cui questa impostazione viene ignorata, ad esempio quando si usa l'opzione della riga di comando -new-window o -reuse-window.", "window.reopenFolders.all": "Riapre tutte le finestre.", "window.reopenFolders.folders": "Riapre tutte le cartelle. Le aree di lavoro vuote non verranno ripristinate.", "window.reopenFolders.one": "Riapre l'ultima finestra attiva.", @@ -56,6 +63,7 @@ "restoreWindows": "Controlla la modalità di riapertura delle finestre dopo un riavvio. Selezionare 'none' per iniziare sempre con un'area di lavoro vuota, 'one' per riaprire l'ultima finestra usata, 'folders' per riaprire tutte le finestre con cartelle aperte oppure 'all' per riaprire tutte le finestre dell'ultima sessione.", "restoreFullscreen": "Controlla se una finestra deve essere ripristinata a schermo intero se è stata chiusa in questa modalità.", "zoomLevel": "Consente di modificare il livello di zoom della finestra. Il valore originale è 0 e ogni incremento superiore (ad esempio 1) o inferiore (ad esempio -1) rappresenta un aumento o una diminuzione del 20% della percentuale di zoom. È anche possibile immettere valori decimali per modificare il livello di zoom con maggiore granularità.", + "title": "Controlla il titolo della finestra in base all'editor attivo. Le variabili vengono sostituite in base al contesto:\n${activeEditorShort}: nome del file (ad es. MyFile.txt)\n${activeEditorMedium}: percorso del file relativo alla cartella dell'area di lavoro (ad es. myFolder/myFile.txt)\n${activeEditorLong}: percorso completo del file (ad es. / Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: nome della cartella dell'area di lavoro in cui è contenuto il file (ad es. myFolder)\n${folderPath}: percorso della cartella dell'area di lavoro in cui è contenuto il file (ad es. /Users/Development/myFolder)\n${rootName}: nome dell'area di lavoro (ad es. myFolder o myWorkspace)\n${rootPath}: percorso dell'area di lavoro (ad es. /Users/Development/myWorkspace)\n$(appName): ad esempio VS Code\n${dirty}: indica se l'editor attivo è in fase di modifica\n${separator}: separatore condizionale (\" - \") che viene visualizzato solo quando circondato da variabili con valori o testo statico", "window.newWindowDimensions.default": "Apre nuove finestre al centro della schermata.", "window.newWindowDimensions.inherit": "Apre nuove finestre le cui dimensioni sono uguali a quelle dell'ultima finestra attiva.", "window.newWindowDimensions.maximized": "Apre nuove finestre ingrandite a schermo intero.", @@ -71,6 +79,7 @@ "autoDetectHighContrast": "Se è abilitata, passa automaticamente a un tema a contrasto elevato se Windows usa un tema di questo tipo e al tipo scuro quando non si usa più un tema a contrasto elevato Windows.", "titleBarStyle": "Consente di modificare l'aspetto della barra del titolo della finestra. Per applicare le modifiche, è necessario un riavvio completo.", "window.nativeTabs": "Abilita le finestre di tab per macOS Sierra. La modifica richiede un riavvio. Eventuali personalizzazioni della barra del titolo verranno disabilitate", + "window.smoothScrollingWorkaround": "Abilitare questa soluzione alternativa se lo scorrimento non è più fluido dopo il ripristino di una finestra di VS Code ridotta a icona. Si tratta di una soluzione alternativa per un problema (https://github.com/Microsoft/vscode/issues/13612) in cui si verificano ritardi nello scorrimento in dispositivi con trackpad di precisione, come quelli Surface di Microsoft. Se si abilita questa soluzione alternativa, si potrebbe riscontrare un certo sfarfallio del layout dopo aver ripristinato la finestra ridotta a icona alle dimensioni normali, ma in altre situazioni non produce alcun effetto negativo.", "zenModeConfigurationTitle": "Modalità Zen", "zenMode.fullScreen": "Consente di controllare se attivando la modalità Zen anche l'area di lavoro passa alla modalità schermo intero.", "zenMode.centerLayout": "Controlla se attivando la modalità Zen viene centrato anche il layout.", diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 5e7acab8dbe..e07e9f6101f 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Modifica punto di interruzione...", + "breakpoint": "Punto di interruzione", "functionBreakpointsNotSupported": "Punti di interruzione delle funzioni non sono supportati da questo tipo di debug", "functionBreakpointPlaceholder": "Funzione per cui inserire il punto di interruzione", "functionBreakPointInputAriaLabel": "Digitare il punto di interruzione della funzione", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Punto di interruzione non verificato", "functionBreakpointUnsupported": "Punti di interruzione di funzione non supportati da questo tipo di debug", "breakpointDirtydHover": "Punto di interruzione non verificato. Il file è stato modificato. Riavviare la sessione di debug.", + "logBreakpointUnsupported": "Punti di registrazione non supportati da questo tipo di debug", "conditionalBreakpointUnsupported": "Punti di interruzione condizionali non supportati da questo tipo di debug", "hitBreakpointUnsupported": "Sono stati raggiunti punti di interruzione condizionali non supportati da questo tipo di debug" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index f7b3467296b..d7d5ae4ad86 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Debug: Attiva/Disattiva punto di interruzione", "conditionalBreakpointEditorAction": "Debug: Aggiungi Punto di interruzione condizionale...", + "logPointEditorAction": "Debug: Aggiungi punto di registrazione...", "runToCursor": "Esegui fino al cursore", "debugEvaluate": "Debug: Valuta", "debugAddToWatch": "Debug: Aggiungi a espressione di controllo", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 885d74b575b..330aaf0d3a7 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "Interrompe quando viene soddisfatta la condizione del numero di passaggi. Premere 'INVIO' per accettare oppure 'ESC' per annullare.", "breakpointWidgetExpressionPlaceholder": "Interrompe quando l'espressione restituisce true. Premere 'INVIO' per accettare oppure 'ESC' per annullare.", - "breakpointWidgetHitCountAriaLabel": "Il programma si arresterà in questo punto solo se viene raggiunto il numero di passaggi. Premere INVIO per accettare oppure ESC per annullare.", - "breakpointWidgetAriaLabel": "Il programma si arresterà in questo punto solo se la condizione è vera. Premere INVIO per accettare oppure ESC per annullare.", "expression": "Espressione", - "hitCount": "Numero di passaggi" + "hitCount": "Numero di passaggi", + "logMessage": "Messaggio di log" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 74e055397e3..1655f90169c 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Usare nomi di configurazione univoci.", "app.launch.json.compound.folder": "Nome della cartella in cui si trova l'elemento compounds.", "app.launch.json.compounds.configurations": "Nomi delle configurazioni che verranno avviate per questo elemento compounds.", - "debugNoType": "L'adattatore di debug 'type' non può essere omesso e deve essere di tipo 'string'.", "selectDebug": "Seleziona ambiente", "DebugConfig.failed": "Non è possibile creare il file 'launch.json' all'interno della cartella '.vscode' ({0}).", "workspace": "area di lavoro", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 171d99b96d1..423e65922d9 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Modifica punto di interruzione...", - "disableBreakpoint": "Disabilita punto di interruzione", - "enableBreakpoint": "Abilita punto di interruzione", + "breakpoint": "Punto di interruzione", "removeBreakpoints": "Rimuovi punti di interruzione", "removeBreakpointOnColumn": "Rimuovi punto di interruzione a colonna {0}", "removeLineBreakpoint": "Rimuovi punto di interruzione riga", @@ -21,6 +19,8 @@ "enableBreakpoints": "Abilita punto di interruzione a colonna {0}", "enableBreakpointOnLine": "Abilita punto di interruzione riga", "addBreakpoint": "Aggiungi punto di interruzione", - "conditionalBreakpoint": "Aggiungi punto di interruzione condizionale...", + "addConditionalBreakpoint": "Aggiungi punto di interruzione condizionale...", + "addLogPoint": "Aggiungi punto di registrazione...", + "cancel": "Annulla", "addConfiguration": "Aggiungi configurazione..." } \ No newline at end of file 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 05a9304ef54..c085858a8c6 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 @@ -28,5 +28,7 @@ "preLaunchTaskExitCode": "L'attività di preavvio '{0}' è stata terminata ed è stato restituito il codice di uscita {1}.", "showErrors": "Mostra errori", "noFolderWorkspaceDebugError": "Non è possibile eseguire il debug del file attivo. Assicurarsi che sia salvato su disco e che sia installata un'estensione di debug per tale tipo di file.", - "cancel": "Annulla" + "cancel": "Annulla", + "DebugTaskNotFound": "Impossibile trovare l'attività '{0}'.", + "taskNotTracked": "L'attività '{0}' non può essere rintracciata." } \ No newline at end of file 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 7334c58bd49..a77a1e4728d 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Altre info", - "unableToLaunchDebugAdapter": "Non è possibile avviare l'adattatore di debug da '{0}'.", - "unableToLaunchDebugAdapterNoArgs": "Non è possibile avviare l'adattatore di debug.", - "stoppingDebugAdapter": "{0}. L'adattatore di debug verrà arrestato.", "debugAdapterCrash": "Il processo dell'adattatore di debug è stato terminato in modo imprevisto" } \ No newline at end of file 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 98695801004..3a9023e4662 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "Il file eseguibile '{0}' dell'adattatore di debug non esiste.", "debugAdapterCannotDetermineExecutable": "Non è possibile determinare il file eseguibile per l'adattatore di debug '{0}'.", - "launch.config.comment1": "Usare IntelliSense per informazioni sui possibili attributi.", - "launch.config.comment2": "Al passaggio del mouse vengono visualizzate le descrizioni degli attributi esistenti.", - "launch.config.comment3": "Per ulteriori informazioni, visitare: {0}", - "debugType": "Tipo di configurazione.", - "debugTypeNotRecognised": "Il tipo di debug non è riconosciuto. Assicurarsi di avere un'estensione appropriata per il debug installata e che sia abilitata.", - "node2NotSupported": "\"node2\" non è più supportato. In alternativa, usare \"node\" e impostare l'attributo \"protocol\" su \"inspector\".", - "debugName": "Nome della configurazione. Viene visualizzato nel menu a discesa della configurazione di avvio.", - "debugRequest": "Tipo della richiesta di configurazione. Può essere \"launch\" o \"attach\".", - "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", - "debugPrelaunchTask": "Attività da eseguire prima dell'avvio della sessione di debug.", - "debugWindowsConfiguration": "Attributi della configurazione di avvio specifici di Windows.", - "debugOSXConfiguration": "Attributi della configurazione di avvio specifici di OS X.", - "debugLinuxConfiguration": "Attributi della configurazione di avvio specifici di Linux.", - "deprecatedVariables": "'env.', 'config.' e 'command.' sono deprecati. In alternativa, usare 'env:', 'config:' e 'command:'." + "unableToLaunchDebugAdapter": "Non è possibile avviare l'adattatore di debug da '{0}'.", + "unableToLaunchDebugAdapterNoArgs": "Non è possibile avviare l'adattatore di debug." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..c5d731b3ec8 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,23 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Usare IntelliSense per informazioni sui possibili attributi.", + "launch.config.comment2": "Al passaggio del mouse vengono visualizzate le descrizioni degli attributi esistenti.", + "launch.config.comment3": "Per ulteriori informazioni, visitare: {0}", + "debugType": "Tipo di configurazione.", + "debugTypeNotRecognised": "Il tipo di debug non è riconosciuto. Assicurarsi di avere un'estensione appropriata per il debug installata e che sia abilitata.", + "node2NotSupported": "\"node2\" non è più supportato. In alternativa, usare \"node\" e impostare l'attributo \"protocol\" su \"inspector\".", + "debugName": "Nome della configurazione. Viene visualizzato nel menu a discesa della configurazione di avvio.", + "debugRequest": "Tipo della richiesta di configurazione. Può essere \"launch\" o \"attach\".", + "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", + "debugPrelaunchTask": "Attività da eseguire prima dell'avvio della sessione di debug.", + "debugWindowsConfiguration": "Attributi della configurazione di avvio specifici di Windows.", + "debugOSXConfiguration": "Attributi della configurazione di avvio specifici di OS X.", + "debugLinuxConfiguration": "Attributi della configurazione di avvio specifici di Linux.", + "deprecatedVariables": "'env.', 'config.' e 'command.' sono deprecati. In alternativa, usare 'env:', 'config:' e 'command:'." +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..b2beae5d759 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "Console di Visual Studio Code", + "mac.terminal.script.failed": "Lo script '{0}' non è riuscito. Codice di uscita: {1}", + "mac.terminal.type.not.supported": "'{0}' non supportato", + "press.any.key": "Premere un tasto qualsiasi per continuare...", + "linux.term.failed": "'{0}' non riuscito. Codice di uscita: {1}" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 79c3b874203..8a9cb12815f 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "Configura estensioni consigliate (cartella dell'area di lavoro)", "malicious tooltip": "Questa estensione è stata segnalata come problematica.", "malicious": "Dannosa", + "disabled": "Disabilitata", + "disabled globally": "Disabilitata", + "disabled workspace": "Disabilitata per questa area di lavoro", "disableAll": "Disabilita tutte le estensioni installate", "disableAllWorkspace": "Disabilita tutte le estensioni installate per questa area di lavoro", "enableAll": "Abilita tutte le estensioni", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index bf455524ce9..b89388c1e2b 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -8,10 +8,12 @@ ], "name": "Nome dell'estensione", "extension id": "Identificatore dell'estensione", + "preview": "Anteprima", "builtin": "Predefinita", "publisher": "Nome dell'editore", "install count": "Conteggio delle installazioni", "rating": "Valutazione", + "repository": "Repository", "license": "Licenza", "details": "Dettagli", "contributions": "Contributi", @@ -32,11 +34,11 @@ "view id": "ID", "view name": "Nome", "view location": "Dove", + "localizations": "Localizzazioni ({0})", "localizations language id": "ID lingua", - "localizations language name": "Nome lingua", - "localizations localized language name": "Nome lingua (localizzato)", "colorThemes": "Temi colore ({0})", "iconThemes": "Temi icona ({0})", + "colors": "Colori ({0})", "colorId": "ID", "defaultDark": "Predefinito scuro", "defaultLight": "Predefinito chiaro", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index aeb7cee0d71..93bd9376516 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Questa estensione è consigliata dagli utenti dell'area di lavoro corrente.", "reallyRecommended2": "Per questo tipo di file è consigliabile utilizzare l'estensione '{0}'.", "reallyRecommendedExtensionPack": "Per questo tipo di file è consigliabile usare il pacchetto di estensione '{0}'.", - "showRecommendations": "Mostra gli elementi consigliati", "install": "Installa", + "showRecommendations": "Mostra gli elementi consigliati", "showLanguageExtensions": "Il Marketplace ha estensioni per i file '.{0}'", "workspaceRecommended": "Per questa area di lavoro sono disponibili estensioni consigliate.", "installAll": "Installa tutto", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index afa57c88868..b78ce5a7c83 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Disabilitare altre mappature tastiera ({0}) per evitare conflitti tra tasti di scelta rapida?", "yes": "Sì", - "no": "No", - "betterMergeDisabled": "L'estensione Better Merge (miglior merge) è ora incorporata: l'estensione installata è stata disattivata e può essere disinstallata.", - "uninstall": "Disinstalla" + "no": "No" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index d9192794c71..bb58789eedb 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "Consigliate", "otherRecommendedExtensions": "Altri consigli", "workspaceRecommendedExtensions": "Consigli per l'area di lavoro", + "builtInExtensions": "Funzionalità", + "builtInThemesExtensions": "Temi", "searchExtensions": "Cerca le estensioni nel Marketplace", "sort by installs": "Ordina per: conteggio installazioni", "sort by rating": "Ordina per: classificazione", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 3939225c04f..70fd8e87f6c 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,17 @@ "confirmMoveTrashMessageMultiple": "Sei sicuro di voler eliminarei seguenti {0} file?", "confirmMoveTrashMessageFolder": "Eliminare '{0}' e il relativo contenuto?", "confirmMoveTrashMessageFile": "Eliminare '{0}'?", + "undoBin": "È possibile ripristinare dal Cestino.", + "undoTrash": "È possibile ripristinare dal Cestino.", "doNotAskAgain": "Non chiedermelo di nuovo", "confirmDeleteMessageMultiple": "Sei sicuro di voler eliminare permanentemente i seguenti {0} file?", "confirmDeleteMessageFolder": "Eliminare definitivamente '{0}' e il relativo contenuto?", "confirmDeleteMessageFile": "Eliminare definitivamente '{0}'?", "irreversible": "Questa azione è irreversibile.", - "importFiles": "Importa file", + "binFailed": "Impossibile eliminare utilizzando il Cestino. Si desidera eliminare definitivamente invece?", + "trashFailed": "Impossibile eliminare utilizzando il Cestino. Si desidera eliminare definitivamente invece?", + "deletePermanentlyButtonLabel": "&& Eliminare in modo permanente", + "retryButtonLabel": "&& Riprova", "confirmOverwrite": "Nella cartella di destinazione esiste già un file o una cartella con lo stesso nome. Sovrascrivere?", "replaceButtonLabel": "&&Sostituisci", "fileIsAncestor": "Il file da incollare è un predecessore della cartella di destinazione", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 33e0072ede8..27f682715d4 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "Modalità linguaggio predefinita assegnata ai nuovi file.", "editorConfigurationTitle": "Editor", "formatOnSave": "Formatta un file durante il salvataggio. Deve essere disponibile un formattatore, il file non deve essere salvato automaticamente e l'editor non deve essere in fase di chiusura.", + "formatOnSaveTimeout": "Timeout per Formatta dopo il salvataggio. Specifica un limite di tempo in millisecondi per i comandi formatOnSave. I comandi che richiedono più tempo del timeout specificato verranno annullati.", "explorerConfigurationTitle": "Esplora file", "openEditorsVisible": "Numero di editor visualizzati nel riquadro degli editor aperti.", "autoReveal": "Controlla se Esplora risorse deve rivelare automaticamente e selezionare i file durante l'apertura.", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index fffcdf8e562..43b7d826b9f 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Digitare il nome file. Premere INVIO per confermare oppure ESC per annullare.", - "constructedPath": "Crea {0} in **{1}**", "filesExplorerViewerAriaLabel": "{0}, Esplora file", "dropFolders": "Aggiungere le cartelle all'area di lavoro?", "dropFolder": "Aggiungere la cartella all'area di lavoro?", "addFolders": "&& Aggiungi cartelle", "addFolder": "&&Aggiungi cartella", + "confirmRootsMove": "Sei sicuro che si desidera modificare l'ordine di più cartelle root nell'area di lavoro?", "confirmMultiMove": "Sei sicuro di voler spostare i seguenti {0} file?", + "confirmRootMove": "Sei sicuro che si desidera modificare l'ordine delle cartella principale '{0}' nell'area di lavoro?", "confirmMove": "Sei sicuro di voler spostare '{0}'?", "doNotAskAgain": "Non chiedermelo di nuovo", "moveButtonLabel": "&&Sposta", diff --git a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 1677c2679d4..d821a4ec5e0 100644 --- a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Cambiare la lingua dell'interfaccia utente di VS Code in {0} e riavviare?", "yes": "Sì", "no": "No", - "doNotAskAgain": "Non chiedermelo di nuovo", + "neverAgain": "Non visualizzare più questo messaggio", "JsonSchema.locale": "Linguaggio dell'interfaccia utente da usare.", "vscode.extension.contributes.localizations": "Contribuisce traduzioni all'editor", "vscode.extension.contributes.localizations.languageId": "Id della lingua in cui sono tradotte le stringhe visualizzate.", diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index cd233dbc352..c8c335d94e4 100644 --- a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "copyMarker": "Copia" + "copyMarker": "Copia", + "copyMessage": "Copia messaggio " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 8c26d708058..f743668975c 100644 --- a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Totale {0} problemi", - "filteredProblems": "Mostrando {0} di {1} problemi" + "totalProblems": "Totale {0} problemi" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json index 54af867231c..2fafad9b706 100644 --- a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.i18n.json @@ -7,5 +7,7 @@ "Do not edit this file. It is machine generated." ], "label": "Problemi", - "tooltip.N": "{0} problemi in questo file" + "tooltip.1": "1 problema in questo file ", + "tooltip.N": "{0} problemi in questo file", + "markers.showOnFile": "Mostra errori e avvisi relativi a file e cartella. " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 8425fd2a247..5a6174bd99e 100644 --- a/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Problemi", "markers.panel.aria.label.problems.tree": "Problemi raggruppati per file", "markers.panel.no.problems.build": "Finora non sono stati rilevati problemi nell'area di lavoro.", - "markers.panel.no.problems.filters": "Non sono stati trovati risultati corrispondenti ai criteri di filtro specificati", "markers.panel.action.filter": "Filtra problemi", - "markers.panel.filter.placeholder": "Filtra per tipo o testo", + "markers.panel.filter.ariaLabel": "Filtra problemi", "markers.panel.filter.errors": "errori", "markers.panel.filter.warnings": "avvisi", "markers.panel.filter.infos": "messaggi informativi", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "{0} sconosciuti", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} con {1} problemi", + "problems.tree.aria.label.marker.relatedInformation": " Questo problema include riferimenti a {0} percorsi.", + "problems.tree.aria.label.error.marker": "Errore generato da {0}: {1} a riga {2} e carattere {3}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Errore: {0} a riga {1} e carattere {2}.{3}", + "problems.tree.aria.label.warning.marker": "Avviso generato da {0}: {1} a riga {2} e carattere {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Avviso: {0} a riga {1} e carattere {2}.{3}", + "problems.tree.aria.label.info.marker": "Messaggio informativo generato da {0}: {1} a riga {2} e carattere {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Messaggio informativo: {0} a riga {1} e carattere {2}.{3}", + "problems.tree.aria.label.marker": "Problema generato da {0}: {1} a riga {2} e carattere {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Problema: {0} a riga {1} e carattere {2}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{0} a riga {1} e carattere {2} in {3}", "errors.warnings.show.label": "Mostra errori e avvisi" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/ita/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 3ab66459385..1aaa39797ad 100644 --- a/i18n/ita/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Attiva/Disattiva output", "clearOutput": "Cancella output", "toggleOutputScrollLock": "Attiva/Disattiva blocco scorrimento per output", - "switchToOutput.label": "Passa all'output" + "switchToOutput.label": "Passa all'output", + "openInLogViewer": "Apri file di log" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index d18b35762b8..9800b7b0870 100644 --- a/i18n/ita/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Output", "logViewer": "Visualizzatore Log", "viewCategory": "Visualizza", - "clearOutput.label": "Cancella output" + "clearOutput.label": "Cancella output", + "openActiveLogOutputFile": "Visualizza: Apri file di output del log attivo" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 915767115f7..ab7704c8c47 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Scelte rapide da tastiera", + "showDefaultKeybindings": "Mostra tasti di scelta rapida predefiniti", + "showUserKeybindings": "Mostra tasti di scelta rapida utente", "SearchKeybindings.AriaLabel": "Cerca tasti di scelta rapida", "SearchKeybindings.Placeholder": "Cerca tasti di scelta rapida", "sortByPrecedene": "Ordina per Precedenza", diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index b1521d61b1f..695670cf87c 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Apri impostazioni predefinite non elaborate", + "openSettings": "Apri impostazioni", "openGlobalSettings": "Apri impostazioni utente", "openGlobalKeybindings": "Apri tasti di scelta rapida", "openGlobalKeybindingsFile": "Apri file dei tasti di scelta rapida", 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 01dd3d9cc62..05ccccf41ee 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,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Impostazioni predefinite", "SearchSettingsWidget.AriaLabel": "Cerca impostazioni", "SearchSettingsWidget.Placeholder": "Cerca impostazioni", "noSettingsFound": "Nessun risultato", diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index a4608aa9da5..acbb94499dd 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Mostra l'estensione \"{0}\"", "editTtile": "Modifica", "replaceDefaultValue": "Sostituisci nelle impostazioni", - "copyDefaultValue": "Copia nelle impostazioni", - "unsupportedPHPExecutablePathSetting": "Questa deve essere un'impostazione utente. Per configurare PHP per l'area di lavoro, aprire un file PHP e fare clic su 'Percorso PHP' nella barra di stato.", - "unsupportedWorkspaceSetting": "Questa deve essere un'impostazione utente.", - "unsupportedWorkbenchSetting": "Non è possibile applicare ora questa impostazione. Verrà applicata direttamente all'apertura della cartella.", - "unsupportedWorkbenchSettingDevMode": "L'impostazione non può essere applicata in questo momento. Essa verrà applicata se il suo ambito sarà definito come 'risorsa' durante la registrazione, o quando si aprirà questa cartella direttamente." + "copyDefaultValue": "Copia nelle impostazioni" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index b11614a0056..781c9834bae 100644 --- a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "Installa ulteriori provider SCM ...", "no open repo": "Non esistono provider di controllo codice sorgente attivi.", "source control": "Controllo del codice sorgente", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Nascondi" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 4fdc0d624d6..2e43beadd2d 100644 --- a/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Mostra i criteri di inclusione per la ricerca successivi", "previousSearchIncludePattern": "Mostra i criteri di inclusione per la ricerca precedenti", + "nextSearchExcludePattern": "Mostra i criteri di esclusione per la ricerca successivi", + "previousSearchExcludePattern": "Mostra i criteri di esclusione per la ricerca precedenti", "nextSearchTerm": "Mostra il termine di ricerca successivo", "previousSearchTerm": "Mostra il termine di ricerca precedente", - "showSearchViewlet": "Mostra Cerca", "findInFiles": "Cerca nei file", "replaceInFiles": "Sostituisci nei file", "RefreshAction.label": "Aggiorna", diff --git a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json index a0d921fec70..e2aee106234 100644 --- a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Attiva/Disattiva dettagli ricerca", + "searchScope.includes": "file da includere", + "label.includes": "Criteri di inclusione per la ricerca", + "searchScope.excludes": "file da escludere", + "label.excludes": "Criteri di esclusione per la ricerca", "replaceAll.confirmation.title": "Sostituisci tutto", "replaceAll.confirm.button": "&&Sostituisci", "replaceAll.occurrence.file.message": "{0} occorrenza in {1} file è stata sostituita con '{2}'.", diff --git a/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 2990ba49e00..3f0b88cd28f 100644 --- a/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Cerca", + "copyMatchLabel": "Copia", + "copyPathLabel": "Copia percorso", + "copyAllLabel": "Copia tutti", "findInFolder": "Trova nella cartella...", "findInWorkspace": "Trova nell'area di lavoro...", "showTriggerActions": "Vai al simbolo nell'area di lavoro...", "name": "Cerca", - "search": "Cerca", "showSearchViewl": "Mostra Cerca", "view": "Visualizza", "findInFiles": "Cerca nei file", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Configurare questa opzione per includere i risultati di una ricerca di simboli globale nei risultati dei file per Quick Open.", "search.followSymlinks": "Controlla se seguire i collegamenti simbolici durante la ricerca.", "search.smartCase": "Cerca in modo insensibile alle maiuscole/minuscole se il criterio è tutto minuscolo, altrimenti cerca in modalità sensibile a maiuscole/minuscole", - "search.globalFindClipboard": "Controlla se il viewlet di ricerca deve leggere o modificare gli appunti di ricerca condivisi in macOS", - "search.location": "Anteprima: controlla se la ricerca verrà mostrata in una visualizzazione della barra laterale o in un pannello nell'area pannelli in modo da disporre di maggiore spazio in orizzontale. Nella versione successiva la ricerca nel pannello sarà caratterizzata da un layout orizzontale ottimizzato e questa funzione non sarà più un'anteprima." + "search.globalFindClipboard": "Controlla se il viewlet di ricerca deve leggere o modificare gli appunti di ricerca condivisi in macOS" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index aa1a8710d4d..c0eba234792 100644 --- a/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Aiutaci a migliorare il nostro supporto all'{0}", "takeShortSurvey": "Partecipa a un breve sondaggio", "remindLater": "Visualizza più tardi", - "neverAgain": "Non visualizzare più questo messaggio", - "helpUs": "Aiutaci a migliorare il nostro supporto all'{0}" + "neverAgain": "Non visualizzare più questo messaggio" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index a2e9e03a390..613cfcb5fd1 100644 --- a/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Partecipare a un breve sondaggio?", "takeSurvey": "Partecipa a sondaggio", "remindLater": "Visualizza più tardi", - "neverAgain": "Non visualizzare più questo messaggio", - "surveyQuestion": "Partecipare a un breve sondaggio?" + "neverAgain": "Non visualizzare più questo messaggio" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 65ecc6909d4..f2036927853 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Criterio di problema o nome di un criterio di problema predefinito o aggiunto come contributo. Può essere omesso se si specifica base.", "ProblemMatcherSchema.base": "Nome di un matcher problemi di base da usare.", "ProblemMatcherSchema.owner": "Proprietario del problema in Visual Studio Code. Può essere omesso se si specifica base. Se è omesso e non si specifica base, viene usato il valore predefinito 'external'.", + "ProblemMatcherSchema.source": "Stringa in formato leggibile che descrive l'origine di questa diagnostica, ad esempio 'typescript' o 'super lint'.", "ProblemMatcherSchema.severity": "Gravità predefinita per i problemi di acquisizione. Viene usato se il criterio non definisce un gruppo di corrispondenze per la gravità.", "ProblemMatcherSchema.applyTo": "Controlla se un problema segnalato in un documento di testo è valido solo per i documenti aperti o chiusi oppure per tutti i documenti.", "ProblemMatcherSchema.fileLocation": "Consente di definire come interpretare i nomi file indicati in un criterio di problema.", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index d2e532ded80..a83add2496b 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "Non assegna l'attività ad alcun gruppo", "JsonSchema.tasks.group": "Definisce il gruppo di esecuzione a cui appartiene questa attività. Supporta \"build\" per aggiungerlo al gruppo di compilazione e \"test\" per aggiungerlo al gruppo di test.", "JsonSchema.tasks.type": "Definisce se l'attività viene eseguita come un processo o come un comando all'interno di una shell.", + "JsonSchema.command.quotedString.value": "Valore effettivo del comando", + "JsonSchema.tasks.quoting.escape": "Evita i caratteri utilizzando il carattere di escape della shell (per esempio ` sotto PowerShell e \\ sotto bash).", + "JsonSchema.tasks.quoting.strong": "Virgoletta l'argomento utilizzando il carattere di doppio apice della shell (per esempio \" sotto PowerShell e bash).", + "JsonSchema.tasks.quoting.weak": "Virgoletta l'argomento utilizzando il carattere di singolo apice della shell (per esempio ' sotto PowerShell e bash).", + "JsonSchema.command.quotesString.quote": "Come il valore del comando dovrebbe essere virgolettato", "JsonSchema.command": "Comando da eseguire. Può essere un programma esterno o un comando della shell.", + "JsonSchema.args.quotedString.value": "Valore effettivo del comando", + "JsonSchema.args.quotesString.quote": "Come il valore dell'argomento dovrebbe essere virgolettato", "JsonSchema.tasks.args": "Argomenti passati al comando quando viene richiamata questa attività.", "JsonSchema.tasks.label": "Etichetta dell'attività per l'interfaccia utente ", "JsonSchema.version": "Numero di versione della configurazione", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 72ae41d5c50..f4b25f34a5c 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,7 +11,9 @@ "totalErrors": "{0} errori", "totalWarnings": "{0} avvisi", "totalInfos": "{0} messaggi informativi", + "problems": "Problemi", "building": "Compilazione in corso...", + "manyProblems": "Più di 10.000", "runningTasks": "Visualizza attività in esecuzione", "tasks": "Attività", "TaskSystem.noHotSwap": "Se si cambia il motore di esecuzione delle attività con un'attività attiva in esecuzione, è necessario ricaricare la finestra", @@ -29,8 +31,8 @@ "selectProblemMatcher": "Selezionare il tipo di errori e di avvisi per cui analizzare l'output dell'attività", "customizeParseErrors": "La configurazione dell'attività corrente presenta errori. Per favore correggere gli errori prima di personalizzazione un'attività.", "moreThanOneBuildTask": "tasks.json contiene molte attività di compilazione. È in corso l'esecuzione della prima.\n", - "TaskSystem.activeSame.background": "L'attività '{0}' è già attiva ed in modalità background. Per terminarla, usare 'Termina attività' dal menu Attività.", - "TaskSystem.activeSame.noBackground": "L'attività '{0}' è già attiva. Per terminarla, usare 'Termina attività' dal menu Attività.", + "terminateTask": "Termina attività", + "restartTask": "Riavvia attività", "TaskSystem.active": "Al momento c'è già un'attività in esecuzione. Terminarla prima di eseguirne un'altra.", "TaskSystem.restartFailed": "Non è stato possibile terminare e riavviare l'attività {0}", "TaskService.noConfiguration": "Errore: Il rilevamento di attività {0} non ha contribuito un'attività nella seguente configurazione: \n{1} \nL'attività verrà ignorata.\n", @@ -47,8 +49,8 @@ "recentlyUsed": "attività usate di recente", "configured": "attività configurate", "detected": "attività rilevate", - "TaskService.notAgain": "Non visualizzare più questo messaggio", "TaskService.ignoredFolder": "Le cartelle dell'area di lavoro seguenti verranno ignorate perché usano la versione 0.1.0 delle attività: {0}", + "TaskService.notAgain": "Non visualizzare più questo messaggio", "TaskService.pickRunTask": "Selezionare l'attività da eseguire", "TaslService.noEntryToRun": "Non è stata trovata alcuna attività da eseguire. Configurare le attività...", "TaskService.fetchingBuildTasks": "Recupero delle attività di compilazione...", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 5cf7f264969..b89a9a5d2c8 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Avviso: options.cwd deve essere di tipo string. Il valore {0} verrà ignorato.\n", + "ConfigurationParser.inValidArg": "Errore: l'argomento del comando deve essere una stringa o una stringa virgolettata. Il valore specificato è:\n{0}", "ConfigurationParser.noargs": "Errore: gli argomenti del comando devono essere un array di stringhe. Il valore specificato è:\n{0}", "ConfigurationParser.noShell": "Avviso: la configurazione della shell è supportata solo quando si eseguono attività nel terminale.", "ConfigurationParser.noName": "Errore: è necessario specificare un nome per il matcher problemi nell'ambito di dichiarazione:\n{0}\n", diff --git a/i18n/ita/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..7ae3aac58f6 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "Il colore di sfondo del terminale, questo consente di colorare il terminale in modo diverso dal pannello.", + "terminal.foreground": "Il colore di primo piano del terminale.", + "terminalCursor.foreground": "Colore di primo piano del cursore del terminale.", + "terminalCursor.background": "Colore di sfondo del cursore del terminale. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.", + "terminal.selectionBackground": "Colore di sfondo di selezione del terminale.", + "terminal.border": "Colore del bordo che separa i riquadri divisi all'interno del terminale. L'impostazione predefinita è panel.border.", + "terminal.ansiColor": "'{0}' colori ANSI nel terminale. " +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 183e933c6e1..d18ee9b5c9c 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,7 @@ "workbench.action.terminal.hideFindWidget": "Nascondi widget Trova", "nextTerminalFindTerm": "Mostra il termine di ricerca successivo", "previousTerminalFindTerm": "Mostra il termine di ricerca precedente", - "quickOpenTerm": "Cambia terminale attivo" + "quickOpenTerm": "Cambia terminale attivo", + "workbench.action.terminal.selectToPreviousCommand": "Aggiungi selezione a comando precedente", + "workbench.action.terminal.selectToNextCommand": "Aggiungi selezione a comando successivo" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index a2ee6206bbf..deb5b14b127 100644 --- a/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Quest'area di lavoro contiene impostazioni che è possibile specificare solo nelle impostazioni utente ({0}). Per maggiori informazioni, fare clic [qui]({1}).", "openWorkspaceSettings": "Apri impostazioni area di lavoro", - "dontShowAgain": "Non visualizzare più questo messaggio", - "unsupportedWorkspaceSettings": "Quest'area di lavoro contiene impostazioni che è possibile specificare solo nelle impostazioni utente ({0}). Per maggiori informazioni, fare clic [qui]({1})." + "dontShowAgain": "Non visualizzare più questo messaggio" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json index f16acee2d3f..c1d4fe9a7f2 100644 --- a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "In seguito", "releaseNotes": "Note sulla versione", "showReleaseNotes": "Mostra note sulla versione", "read the release notes": "Benvenuti in {0} versione {1}. Leggere le note sulla versione?", @@ -16,13 +15,12 @@ "updateIsReady": "Nuovo aggiornamento di {0} disponibile.", "noUpdatesAvailable": "Al momento non sono disponibili aggiornamenti.", "ok": "OK", - "download now": "Scarica ora", "thereIsUpdateAvailable": "È disponibile un aggiornamento.", + "download now": "Scarica ora", + "later": "In seguito", "installUpdate": "Installa aggiornamento", - "updateAvailable": "È disponibile un aggiornamento: {0} {1}", "updateInstalling": "{0} {1} verrà installato in background. Al termine, verrà visualizzato un messaggio.", "updateNow": "Aggiorna adesso", - "updateAvailableAfterRestart": "{0} verrà aggiornato dopo il riavvio.", "commandPalette": "Riquadro comandi...", "settings": "Impostazioni", "keyboardShortcuts": "Scelte rapide da tastiera", diff --git a/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 6162c44dea8..09c98a26547 100644 --- a/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "editor Webview" + "webview.editor.label": "editor Webview", + "developer": "Sviluppatore" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..ee36d0bcec9 --- /dev/null +++ b/i18n/ita/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Apri strumenti di sviluppo Webview", + "refreshWebviewLabel": "Ricarica Webview" +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index 184feafb8ac..647449f9420 100644 --- a/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Per contribuire al miglioramento di VS Code, è possibile consentire a Microsoft di raccogliere i dati di utilizzo. Leggere l'[informativa sulla privacy]({0}) per informazioni su come [rifiutare esplicitamente]({1}).", + "telemetryOptOut.optInNotice": "Per contribuire al miglioramento di VS Code, è possibile consentire a Microsoft di raccogliere i dati di utilizzo. Leggere l'[informativa sulla privacy]({0}) per informazioni su come [acconsentire esplicitamente]({1}).", "telemetryOptOut.readMore": "Altre informazioni" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/ita/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 98e9bb87b0d..7d4936d889c 100644 --- a/i18n/ita/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Strumenti e linguaggi", "welcomePage.installExtensionPacksDescription": "Installare il supporto per {0} e {1}", "welcomePage.moreExtensions": "altro", - "welcomePage.installKeymapDescription": "Installa i tasti di scelta rapida", - "welcomePage.installKeymapExtension": "Installa i tasti di scelta rapida di {0} e {1}", "welcomePage.others": "altri", "welcomePage.colorTheme": "Tema colori", "welcomePage.colorThemeDescription": "Tutto quel che serve per configurare editor e codice nel modo desiderato", diff --git a/i18n/ita/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/ita/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..96561150bb5 --- /dev/null +++ b/i18n/ita/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "Non è possibile applicare ora questa impostazione. Verrà applicata direttamente all'apertura della cartella." +} \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/ita/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 08ddb51d21f..05e96e21215 100644 --- a/i18n/ita/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "L'host dell'estensione è stato terminato in modo imprevisto.", "extensionHostProcess.unresponsiveCrash": "L'host dell'estensione è stato terminato perché non rispondeva.", - "devTools": "Strumenti di sviluppo", "restart": "Riavvia host dell'estensione", "overwritingExtension": "Sovrascrittura dell'estensione {0} con {1}.", "extensionUnderDevelopment": "Caricamento dell'estensione di sviluppo in {0}", diff --git a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 50a2d3795ee..5b7706bdc38 100644 --- a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5 è obbligatorio. Selezionare il collegamento per installarlo.", "installNet": "Scarica .NET Framework 4.5", "neverShowAgain": "Non visualizzare più questo messaggio", - "netVersionError": "Microsoft .NET Framework 4.5 è obbligatorio. Selezionare il collegamento per installarlo.", + "enospcError": "{0} non è in grado di controllare le modifiche di una grande area di lavoro. Per risolvere questo problema, seguire il collegamento alle istruzioni. ", "learnMore": "Istruzioni", + "fileInvalidPath": "Risorsa del file non valida ({0})", + "fileIsDirectoryError": "Il File è una Directory", + "fileNotModifiedError": "File non modificato dal giorno", + "fileTooLargeError": "File troppo grande per essere aperto", + "fileNotFoundError": "Il file non è stato trovato ({0})", + "fileBinaryError": "Il file sembra essere binario e non può essere aperto come file di testo", + "filePermission": "Autorizzazione di scrittura sul file negata ({0}) ", + "fileExists": "Il file da creare esiste già ({0})", + "fileModifiedError": "File modificato da", + "fileReadOnlyError": "Il file è di sola lettura", + "fileMoveConflict": "Non è possibile eseguire operazioni di spostamento/copia. Il file esiste già nella destinazione.", + "unableToMoveCopyError": "Non è possibile eseguire operazioni di spostamento/copia. Il file sostituirebbe la cartella in cui è contenuto.", "binFailed": "Non è stato possibile spostare '{0}' nel Cestino", "trashFailed": "Non è stato possibile spostare '{0}' nel Cestino" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index d95f7f919aa..0679938a47a 100644 --- a/i18n/ita/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Il file non è stato trovato ({0})", "fileIsDirectoryError": "Il File è una Directory", "fileNotModifiedError": "File non modificato dal giorno", "fileBinaryError": "Il file sembra essere binario e non può essere aperto come file di testo" diff --git a/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 10246e41a96..d8c6c0c8a17 100644 --- a/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "Nome dell'ambito TextMate usato dal file tmLanguage.", "vscode.extension.contributes.grammars.path": "Percorso del file tmLanguage. È relativo alla cartella delle estensioni e in genere inizia con './syntaxes/'.", "vscode.extension.contributes.grammars.embeddedLanguages": "Mapping tra nome ambito e ID linguaggio se questa grammatica contiene linguaggi incorporati.", + "vscode.extension.contributes.grammars.tokenTypes": "Mapping tra nome di ambito e tipi di token.", "vscode.extension.contributes.grammars.injectTo": "Elenco di nomi di ambito del linguaggio in cui viene inserita questa grammatica." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 5fb7d00f03d..1c4e6bd4f78 100644 --- a/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/ita/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "È previsto un valore stringa in `contributes.{0}.path`. Valore specificato: {1}", "invalid.injectTo": "Il valore in `contributes.{0}.injectTo` non è valido. Deve essere una matrice di nomi di ambito del linguaggio. Valore specificato: {1}", "invalid.embeddedLanguages": "Il valore in `contributes.{0}.embeddedLanguages` non è valido. Deve essere un mapping di oggetti tra nome ambito e linguaggio. Valore specificato: {1}", + "invalid.tokenTypes": "Il valore in `contributes.{0}.tokenTypes` non è valido. Deve essere un mapping di oggetti tra nome ambito e tipo di token. Valore specificato: {1}", "invalid.path.1": "Valore previsto di `contributes.{0}.path` ({1}) da includere nella cartella dell'estensione ({2}). L'estensione potrebbe non essere più portatile.", "no-tm-grammar": "Non è stata registrata alcuna grammatica TM per questo linguaggio." } \ No newline at end of file diff --git a/i18n/jpn/extensions/emmet/package.i18n.json b/i18n/jpn/extensions/emmet/package.i18n.json index 6989669cdcb..2ea428b8ba7 100644 --- a/i18n/jpn/extensions/emmet/package.i18n.json +++ b/i18n/jpn/extensions/emmet/package.i18n.json @@ -35,7 +35,7 @@ "emmetExtensionsPath": "Emmet のプロファイルとスニペットを含むフォルダーへのパス。", "emmetShowExpandedAbbreviation": "展開された Emmet 省略記法を候補として表示します。\n\"inMarkupAndStylesheetFilesOnly\" オプションは、html、haml、jade、slim、xml、xsl、css、scss、sass、less、stylus に適用されます。\n\"always\" オプションは markup/css に関係なくファイルのすべての部分に適用されます。", "emmetShowAbbreviationSuggestions": "利用できる Emmet 省略記法を候補として表示します。スタイルシートや emmet.showExpandedAbbreviation を \"never\" に設定していると適用されません。", - "emmetIncludeLanguages": "既定でサポートされていない言語で Emmet 省略記法を有効にします。 言語と Emmet がサポートする言語の間にマッピングを追加します。\n例: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", + "emmetIncludeLanguages": "既定でサポートされていない言語で Emmet 略語を有効にします。ここに、その言語と Emmet でサポートされる言語のマッピングを追加します。\n 例: {\"vue-html\":\"html\"、\"javascript\":\"javascriptreact\"}", "emmetVariables": "Emmet のスニペットで使用される変数", "emmetTriggerExpansionOnTab": "有効にすると、TAB キーを押したときに Eemmet 省略記法が展開されます。", "emmetPreferences": "Emmet の一部のアクションやリゾルバーの動作の変更に使用される基本設定。", @@ -60,5 +60,6 @@ "emmetPreferencesCssMozProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'moz' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'moz' プレフィックスを避ける場合は空の文字列に設定します。", "emmetPreferencesCssOProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'o' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'o' プレフィックスを避ける場合は空の文字列に設定します。", "emmetPreferencesCssMsProperties": "Emmet 省略記法で使用される場合に `-` で始まる 'ms' ベンダー プレフィックスを取得するカンマ区切りの CSS プロパティ。常に 'ms' プレフィックスを避ける場合は空の文字列に設定します。", - "emmetPreferencesCssFuzzySearchMinScore": "あいまい検索の省略形が達成すべき (0 から 1 の) 最小スコア。値が低ければ多くの誤検出が発生する可能性があります。値が高ければ一致する見込みが減る可能性があります。" + "emmetPreferencesCssFuzzySearchMinScore": "あいまい検索の省略形が達成すべき (0 から 1 の) 最小スコア。値が低ければ多くの誤検出が発生する可能性があります。値が高ければ一致する見込みが減る可能性があります。", + "emmetOptimizeStylesheetParsing": "false に設定すると、現在位置が Emmet 略語の展開位置として有効かどうかを判定するためにファイル全体を解析します。true に設定すると、css/scss/less ファイルの現在位置周辺のコンテンツのみを解析します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json b/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json index 22ad7c7170c..4e88fd4f8be 100644 --- a/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/jpn/extensions/markdown-language-features/out/security.i18n.json @@ -8,6 +8,8 @@ ], "strict.title": "高レベル", "strict.description": "セキュリティで保護されたコンテンツのみを読み込む", + "insecureLocalContent.title": "安全でないローカル コンテンツを許可する", + "insecureLocalContent.description": "localhost から http で提供されるコンテンツの読み込みを有効にします", "insecureContent.title": "セキュリティで保護されていないコンテンツを許可する", "insecureContent.description": "HTTP を介したコンテンツの読み込みを有効にする", "disable.title": "無効にする", diff --git a/i18n/jpn/extensions/php/package.i18n.json b/i18n/jpn/extensions/php/package.i18n.json index 5989177b903..16bb0ef7ca1 100644 --- a/i18n/jpn/extensions/php/package.i18n.json +++ b/i18n/jpn/extensions/php/package.i18n.json @@ -6,6 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP 言語機能", + "displayName": "PHP の基本言語サポート", "description": "PHP ファイル内に構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/commands.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..e69dc45423d --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "TypeScript または JavaScript プロジェクトを使用するには、VS Code でフォルダーを開いてください", + "typescript.projectConfigUnsupportedFile": "TypeScript または JavaScript のプロジェクトを判別できませんでした。サポートされていないファイルの種類です", + "typescript.projectConfigCouldNotGetInfo": "TypeScript または JavaScript のプロジェクトを判別できませんでした", + "typescript.noTypeScriptProjectConfig": "ファイルは TypeScript プロジェクトの一部ではありません。詳細情報は [こちら]({1}) をクリックしてください。", + "typescript.noJavaScriptProjectConfig": "ファイルは JavaScript プロジェクトの一部ではありません。詳細情報は [こちら]({1}) をクリックしてください。", + "typescript.configureTsconfigQuickPick": "tsconfig.json を構成する", + "typescript.configureJsconfigQuickPick": "jsconfig.json を構成する" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..adb307b9768 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "適用するコード アクションを選択", + "acquiringTypingsLabel": "Typings の定義ファイルを取得中...", + "acquiringTypingsDetail": "IntelliSense の Typings の定義ファイルを取得しています。", + "autoImportLabel": "{0} から自動インポート" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..19d9bea48dd --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "JavaScript ファイルのセマンティック チェックを有効にします。 ファイルの先頭にある必要があります。", + "ts-nocheck": "JavaScript ファイルのセマンティック チェックを無効にします。 ファイルの先頭にある必要があります。", + "ts-ignore": "ファイルの次の行で @ts-check エラーを抑制します。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..64c5084a0d1 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 個の実装", + "manyImplementationLabel": "{0} 個の実装", + "implementationsErrorLabel": "実装を特定できませんでした" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..26a29c2851a --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc コメント" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..7882c9fa95f --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "インポートを整理" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..453c92d6195 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (ファイルの中のすべてを修正する)" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..71699891f3b --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 個の参照", + "manyReferenceLabel": "{0} 個の参照", + "referenceErrorLabel": "参照を判別できませんでした" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..bb8e166d153 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "ビルド - {0}", + "buildAndWatchTscLabel": "ウォッチ - {0}" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..904634944f4 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "パス {0} は、有効な tsserver インストールを指していません。バンドルされている TypeScript バージョンにフォールバックしています。", + "serverCouldNotBeStarted": "TypeScript 言語サーバーを起動できません。エラー メッセージ: {0}", + "typescript.openTsServerLog.notSupported": "TS サーバーのログには TS 2.2.2 以降が必要です", + "typescript.openTsServerLog.loggingNotEnabled": "TS サーバーのログがオフになっています。ログを有効にするには、`typescript.tsserver.log` を設定して TS サーバーを再起動してください", + "typescript.openTsServerLog.enableAndReloadOption": "ログを有効にして、TS サーバーを再起動する", + "typescript.openTsServerLog.noLogFile": "TS サーバーはログを開始していません。", + "openTsServerLog.openFileFailedFailed": "TS サーバーのログ ファイルを開くことができませんでした", + "serverDiedAfterStart": "TypeScript 言語サービスは、開始直後に 5 回停止しました。サービスは再開されません。", + "serverDiedReportIssue": "問題の報告", + "serverDied": "TypeScript 言語サービスは、直前の 5 分間に 5 回、予期せずに停止しました。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..4b09d67cea3 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "バージョンが無効です" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..d4f07accea4 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "プロジェクト全体の JavaScript/TypeScript 言語機能を有効にするには、多数のファイルが含まれるフォルダーを除外します。例: {0}", + "hintExclude.generic": "プロジェクト全体の JavaScript/TypeScript 言語機能を有効にするには、作業していないソース ファイルが含まれるサイズの大きなフォルダーを除外します。", + "large.label": "除外の構成", + "hintExclude.tooltip": "プロジェクト全体の JavaScript/TypeScript 言語機能を有効にするには、作業していないソース ファイルが含まれるサイズの大きなフォルダーを除外します。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..416302dc017 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "より適した TypeScript IntelliSense に関するデータをフェッチしています", + "typesInstallerInitializationFailed.title": "JavaScript 言語機能のための型定義ファイルをインストールできませんでした。NPM のインストールを確認するか、ユーザー設定で 'typescript.npm' を構成してください。詳細は [こちら]({0}) をクリックしてください。", + "typesInstallerInitializationFailed.doNotCheckAgain": "今後は表示しない" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..e9aaf978151 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "VS Code のバージョンを使用", + "useWorkspaceVersionOption": "ワークスペースのバージョンを使用", + "learnMore": "詳細情報", + "selectTsVersion": "JavaScript および TypeScript 言語の機能に使用する TypeScript バージョンを選択します" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/jpn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..bb98209ca70 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "このパスでは TypeScript のバージョンを読み込むことができません", + "noBundledServerFound": "VS Code の tsserver が適切に動作しないウイルス検出ツールなどの他アプリケーションにより削除されました。VS Code を再インストールしてください。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-language-features/package.i18n.json b/i18n/jpn/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..9cfdd473386 --- /dev/null +++ b/i18n/jpn/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,65 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript と JavaScript の言語機能", + "description": "JavaScript と TypeScript ファイルに豊富な言語サポートを提供。", + "typescript.reloadProjects.title": "プロジェクトの再読み込み", + "javascript.reloadProjects.title": "プロジェクトの再読み込み", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "パラメーター シグネチャを含む完全な関数。", + "typescript.tsdk.desc": "使用する tsserver と lib*.d.ts ファイルが含まれているフォルダーのパスを指定します。", + "typescript.disableAutomaticTypeAcquisition": "型定義の自動取得を無効にします。TypeScript 2.0.6 以上が必要です。", + "typescript.tsserver.log": "ファイルへの TS サーバーのログを有効にします。このログは TS サーバーの問題を診断するために使用できます。ログには、プロジェクトのファイルパス、ソースコード、その他の潜在的に機密性の高い情報が含まれている場合があります。", + "typescript.tsserver.pluginPaths": "Typescript 言語サービス プラグインを検出する追加のパス。TypeScript 2.3.0以上が必要。", + "typescript.tsserver.pluginPaths.item": "絶対または相対パスのいずれか。相対パスはワークスペース フォルダーに対して解決されます。", + "typescript.tsserver.trace": "TS サーバーに送信されるメッセージのトレースを有効にします。このトレースは TS サーバーの問題を診断するために使用できます。トレースには、プロジェクトのファイルパス、ソースコード、その他の潜在的に機密性の高い情報が含まれている場合があります。", + "typescript.validate.enable": "TypeScript の検証を有効/無効にします。", + "typescript.format.enable": "既定の TypeScript フォーマッタを有効/無効にします。", + "javascript.format.enable": "既定の JavaScript フォーマッタを有効/無効にします。", + "format.insertSpaceAfterCommaDelimiter": "コンマ区切り記号の後のスペース処理を定義します。", + "format.insertSpaceAfterConstructor": "コンストラクター キーワードの後にスペース処理を定義します。TypeScript が 2.3.0 以上である必要があります。", + "format.insertSpaceAfterSemicolonInForStatements": " for ステートメント内のセミコロンの後のスペース処理を定義します。", + "format.insertSpaceBeforeAndAfterBinaryOperators": "2 項演算子の後のスペース処理を定義します。", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "制御フロー ステートメント内のキーワードの後のスペース処理を定義します。", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "匿名関数の関数キーワードの後のスペース処理を定義します。", + "format.insertSpaceBeforeFunctionParenthesis": "関数の引数のかっこの前にあるスペース処理を定義します。TypeScript が 2.1.5. 以上である必要があります。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": "左右の空でないかっこの間のスペース処理を定義します。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": "左右の空でない角かっこの間のスペース処理を定義します。", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": "左右の空でないかっこの間のスペース処理を定義します。TypeScript が 2.3.0 以上である必要があります。", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "テンプレート文字列の始め波かっこの後と終わり波かっこの前のスペース処理を定義します。TypeScript が 2.0.6 以上である必要があります。", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "JSX 式の始め波かっこの後と終わり波かっこの前のスペース処理を定義します。TypeScript が 2.0.6 以上である必要があります。", + "format.insertSpaceAfterTypeAssertion": "TypeScript の型アサーションの後のスペース処理を定義します。TypeScript が 2.4 以上である必要があります。", + "format.placeOpenBraceOnNewLineForFunctions": "新しい行に関数の始め波かっこを配置するかどうかを定義します。", + "format.placeOpenBraceOnNewLineForControlBlocks": "新しい行にコントロール ブロックの始め波かっこを配置するかどうかを定義します。", + "javascript.validate.enable": "JavaScript の検証を有効/無効にします。", + "typescript.goToProjectConfig.title": "プロジェクト構成に移動", + "javascript.goToProjectConfig.title": "プロジェクト構成に移動", + "javascript.referencesCodeLens.enabled": "JavaScript ファイル内で CodeLens の参照を有効/無効にします。", + "typescript.referencesCodeLens.enabled": "TypeScript ファイル内で CodeLens の参照を有効/無効にします。TypeScript 2.0.6 以上が必要です。", + "typescript.implementationsCodeLens.enabled": "CodeLens の実装を有効/無効にします。TypeScript 2.2.0 以上が必要です。", + "typescript.openTsServerLog.title": "TS サーバーのログを開く", + "typescript.restartTsServer": "TS サーバーを再起動", + "typescript.selectTypeScriptVersion.title": "TypeScript のバージョンの選択", + "typescript.reportStyleChecksAsWarnings": "スタイルチェックレポートを警告扱いとする", + "jsDocCompletion.enabled": " 自動 JSDoc コメントを有効/無効にします", + "javascript.implicitProjectConfig.checkJs": "JavaScript ファイルのセマンティック チェックを有効/無効にします。既存の jsconfi.json や tsconfi.json ファイルの設定はこれより優先されます。TypeScript は 2.3.1 以上である必要があります。", + "typescript.npm": "型定義の自動取得に使用される NPM 実行可能ファイルへのパスを指定します。TypeScript 2.3.4 以上が必要です。", + "typescript.check.npmIsInstalled": "型定義の自動取得に NPM がインストールされているかどうかを確認します。", + "javascript.nameSuggestions": "JavaScript の候補リスト内でファイルから一意の名前を含むかどうかを有効/無効にします。", + "typescript.tsc.autoDetect": "tsc タスクの自動検出を制御します。'off' はこの機能を無効にします。'build' は 1 つのコンパイル実行タスクのみを表示します。'watch' はコンパイルとウォッチ タスクのみを表示します。'on' はビルド タスクとウォッチ タスクの両方を表示します。既定値は 'on' です。", + "typescript.problemMatchers.tsc.label": "TypeScript の問題", + "typescript.problemMatchers.tscWatch.label": "TypeScript の問題 (ウォッチ モード)", + "typescript.quickSuggestionsForPaths": "Import パスを入力するときのクイック候補を有効/無効にします。", + "typescript.locale": "TypeScript のエラーを報告するために使用するロケールを設定します。TypeScript 2.6.0 以上が必要です。'null' の規定値は TypeScript のエラーに VS Code のロケールを使用します。", + "javascript.implicitProjectConfig.experimentalDecorators": "プロジェクト外の JavaScript ファイルの 'experimentalDecorators' を有効/無効にします。既存の jsconfi.json や tsconfi.json ファイルの設定はこれより優先されます。TypeScript は 2.3.1 以上である必要があります。", + "typescript.autoImportSuggestions.enabled": "自動 import 提案を有効/無効にします。TypeScript 2.6.1 以上が必要です", + "typescript.experimental.syntaxFolding": "構文の折りたたみマーカー認識を有効/無効にします。", + "taskDefinition.tsconfig.description": "TS ビルドを定義する tsconfig ファイル。", + "javascript.suggestionActions.enabled": "エディター内で JavaScript ファイルの診断の提案を有効または無効にします。TypeScript 2.8 以上である必要があります。", + "typescript.suggestionActions.enabled": "エディター内で TypeScript ファイルの診断の提案を有効または無効にします。TypeScript 2.8 以上である必要があります。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/base/node/processes.i18n.json b/i18n/jpn/src/vs/base/node/processes.i18n.json index 1a69c4ed49d..35229bd6699 100644 --- a/i18n/jpn/src/vs/base/node/processes.i18n.json +++ b/i18n/jpn/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "UNC ドライブでシェル コマンドを実行できません。" + ] } \ No newline at end of file diff --git a/i18n/jpn/src/vs/base/parts/quickopen/browser/quickOpenModel.i18n.json b/i18n/jpn/src/vs/base/parts/quickopen/browser/quickOpenModel.i18n.json index ce4101ffa70..bb65d0f69b0 100644 --- a/i18n/jpn/src/vs/base/parts/quickopen/browser/quickOpenModel.i18n.json +++ b/i18n/jpn/src/vs/base/parts/quickopen/browser/quickOpenModel.i18n.json @@ -6,6 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "quickOpenAriaLabelEntry": "{0}、選択", + "quickOpenAriaLabelEntry": "{0}, ピッカー", "quickOpenAriaLabel": "選択" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 17b19815820..e06ec774240 100644 --- a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "GitHub 上でプレビュー", "loadingData": "データを読み込んでいます...", + "rateLimited": "GitHub クエリの制限を超えました。お待ちください。", "similarIssues": "類似の問題", "open": "Open", "closed": "Closed", - "noResults": "一致する項目はありません", + "noSimilarIssues": "類似の問題は見つかりませんでした", "settingsSearchIssue": "設定検索の問題", "bugReporter": "バグ レポート", "featureRequest": "機能欲求", diff --git a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 4222ad5ea5d..06d09e1c611 100644 --- a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,12 @@ ], "completeInEnglish": "英語で記入して下さい。", "issueTypeLabel": "種類", + "issueSourceLabel": "記録", + "vscode": "Visual Studio Code", + "extension": "拡張機能", + "disableExtensionsLabelText": "{0} を実行後に問題を再現してみてください。拡張機能がアクティブな場合にのみ問題が再現する場合は、拡張機能の問題である可能性があります。", + "disableExtensions": "すべての拡張機能を無効にしてウィンドウを再読みする", + "chooseExtension": "拡張機能", "issueTitleLabel": "題名", "issueTitleRequired": "題名を入力してください", "titleLengthValidation": "タイトルが長すぎます。", @@ -18,13 +24,6 @@ "extensions": "私の拡張機能", "searchedExtensions": "見つかった拡張機能", "settingsSearchDetails": "設定検索の詳細", - "tryDisablingExtensions": "拡張機能が無効な場合に問題は再現可能ですか?", - "yes": "はい", - "no": "いいえ", - "disableExtensionsLabelText": "{0} を実行後に問題を再現してみてください。", - "disableExtensions": "すべての拡張機能を無効にしてウィンドウを再読みする", - "showRunningExtensionsLabelText": "拡張機能の問題と疑われる場合、拡張機能の問題を報告するために {0} を実行してください。", - "showRunningExtensions": "すべての実行中の拡張機能を表示する", "details": "詳細を入力してください。", "loadingData": "データを読み込んでいます..." } \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/jpn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..fb628eb4d5d --- /dev/null +++ b/i18n/jpn/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "CPU %", + "memory": "メモリ (MB)", + "pid": "pid", + "name": "名前", + "killProcess": "プロセスの終了", + "forceKillProcess": "プロセスの強制終了" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-main/menus.i18n.json b/i18n/jpn/src/vs/code/electron-main/menus.i18n.json index 764bb3ddb5f..64e268008b7 100644 --- a/i18n/jpn/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/jpn/src/vs/code/electron-main/menus.i18n.json @@ -161,6 +161,7 @@ "mMergeAllWindows": "すべてのウィンドウを統合", "miToggleDevTools": "開発者ツールの切り替え(&&T)", "miAccessibilityOptions": "ユーザー補助オプション(&&O)", + "miOpenProcessExplorerer": "プロセス エクスプローラーを開く(&&P)", "miReportIssue": "問題の報告(&&I)", "miWelcome": "ようこそ(&&W)", "miInteractivePlayground": "対話型プレイグラウンド(&&I)", diff --git a/i18n/jpn/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/jpn/src/vs/editor/browser/widget/diffReview.i18n.json index 427defd525a..fde5f743633 100644 --- a/i18n/jpn/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/jpn/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "閉じる", - "header": "{1} の差分 {0}: 変更前の {2}、{3} 行、変更後の {4}、{5} 行", "blankLine": "空白", "equalLine": "変更前の {0}、変更後の {1}: {2}", "insertLine": "+ 変更後の {0}: {1}", diff --git a/i18n/jpn/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/jpn/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/jpn/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/jpn/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/jpn/src/vs/editor/common/config/commonEditorConfig.i18n.json index 1024574c477..f0fdce2980a 100644 --- a/i18n/jpn/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/jpn/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Windows および Linux 上の `Control` キーと macOS 上の `Command` キーに割り当てます。", "multiCursorModifier.alt": "Windows および Linux 上の `Alt` キーと macOS 上の `Option` キーに割り当てます。", "multiCursorModifier": "マウスを使用して複数のカーソルを追加するときに使用する修飾キーです。`ctrlCmd` は Windows および Linux 上の `Control` キーと macOS 上の `Command` キーに割り当てます。「定義に移動」や「リンクを開く」のマウス操作は、マルチカーソルの修飾キーと競合しないように適用されます。", + "multiCursorMergeOverlapping": "複数のカーソルが重なっているときは、マージします。", "quickSuggestions.strings": "文字列内でクイック候補を有効にします。", "quickSuggestions.comments": "コメント内でクイック候補を有効にします。", "quickSuggestions.other": "文字列およびコメント外でクイック候補を有効にします。", @@ -88,6 +89,9 @@ "renderLineHighlight": "エディターが現在の行をどのように強調表示するかを制御します。考えられる値は 'none'、'gutter'、'line'、'all' です。", "codeLens": "エディターで CodeLens を表示するかどうかを制御する", "folding": "エディターでコードの折りたたみを有効にするかどうかを制御します", + "foldingStrategyAuto": "利用可能であれば、言語に特有の折りたたみ方式を使用して、そうでない場合はインデント方式に戻ります。", + "foldingStrategyIndentation": "常にインデントに基づく折りたたみ方式を使用します", + "foldingStrategy": "折りたたみ範囲の計算方法を制御します。'auto' は利用可能であれば言語固有の折りたたみ方式を使用します。'indentation' は常にインデントに基づく折りたたみ方式を使用します。", "showFoldingControls": "余白上の折りたたみコントロールを自動的に非表示にするかどうかを制御します 。", "matchBrackets": "かっこを選択すると、対応するかっこを強調表示します。", "glyphMargin": "エディターで縦のグリフ余白が表示されるかどうかを制御します。ほとんどの場合、グリフ余白はデバッグに使用されます。", @@ -105,5 +109,7 @@ "selectionClipboard": "Linux の PRIMARY クリップボードをサポートするかどうかを制御します。", "sideBySide": "差分エディターが差分を横に並べて表示するか、行内に表示するかを制御します", "ignoreTrimWhitespace": "差分エディターが、先頭または末尾の空白の変更を差分として表示するかどうかを制御します。", + "largeFileSize": "特別な最適化ルールが適用されるバイト単位でファイルサイズのしきい値を制御します", + "largeFileLineCount": "特別な最適化ルールが適用される行数の観点からファイルサイズのしきい値を制御します", "renderIndicators": "差分エディターが追加/削除された変更に +/- インジケーターを示すかどうかを制御します" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json index d5e55bf5dc9..3edd17c221f 100644 --- a/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/jpn/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "エディター インデント ガイドの色。", "editorLineNumbers": "エディターの行番号の色。", "editorActiveLineNumber": "エディターのアクティブ行番号の色", + "deprecatedEditorActiveLineNumber": "id は使用しないでください。代わりに 'EditorLineNumber.activeForeground' を使用してください。", "editorRuler": "エディター ルーラーの色。", "editorCodeLensForeground": "CodeLens エディターの前景色。", "editorBracketMatchBackground": "一致するかっこの背景色", diff --git a/i18n/jpn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/jpn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..8afb4eaf750 --- /dev/null +++ b/i18n/jpn/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,18 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "修正プログラム ({0}) を表示する", + "quickFix": "修正プログラムを表示する", + "quickfix.trigger.label": "クイック フィックス...", + "editor.action.quickFix.noneMessage": "利用可能なコード アクションはありません", + "refactor.label": "リファクター...", + "editor.action.refactor.noneMessage": "利用可能なリファクタリングはありません", + "source.label": "ソース アクション...", + "editor.action.source.noneMessage": "利用可能なソース アクションはありません", + "organizeImports.label": "インポートを整理" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/format/formatActions.i18n.json b/i18n/jpn/src/vs/editor/contrib/format/formatActions.i18n.json index 2f1848eb3b1..a95eddbcb87 100644 --- a/i18n/jpn/src/vs/editor/contrib/format/formatActions.i18n.json +++ b/i18n/jpn/src/vs/editor/contrib/format/formatActions.i18n.json @@ -12,5 +12,6 @@ "hintnn": "行 {1} と {2} の間で {0} 個の書式設定を編集", "no.provider": "インストールされた '{0}'ファイル用のフォーマッターが存在しません。", "formatDocument.label": "ドキュメントのフォーマット", + "no.documentprovider": "インストールされた '{0}'ファイル用のドキュメント フォーマッターが存在しません。", "formatSelection.label": "選択範囲のフォーマット" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/links/links.i18n.json b/i18n/jpn/src/vs/editor/contrib/links/links.i18n.json index 0b3715fb4e0..5bdb5b2382d 100644 --- a/i18n/jpn/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/jpn/src/vs/editor/contrib/links/links.i18n.json @@ -10,7 +10,9 @@ "links.navigate": "Ctrl キーを押しながらクリックしてリンク先を表示", "links.command.mac": "command キーを押しながらクリックしてコマンドを実行", "links.command": "Ctrl キーを押しながらクリックしてコマンドを実行", + "links.navigate.al.mac": "Option キーを押しながらクリックしてリンク先を表示", "links.navigate.al": "Altl キーを押しながらクリックしてリンク先を表示", + "links.command.al.mac": "Option キーを押しながらクリックしてコマンドを実行", "links.command.al": "Alt キーを押しながらクリックしてコマンドを実行", "invalid.url": "このリンクは形式が正しくないため開くことができませんでした: {0}", "missing.url": "このリンクはターゲットが存在しないため開くことができませんでした。", diff --git a/i18n/jpn/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/jpn/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/jpn/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/jpn/src/vs/platform/environment/node/argv.i18n.json b/i18n/jpn/src/vs/platform/environment/node/argv.i18n.json index ac1989254f6..80c47f9bca0 100644 --- a/i18n/jpn/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/jpn/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "'Developer: Startup Performance' コマンドを有効にして開始します。", "prof-startup": "起動中に CPU プロファイラーを実行する", "disableExtensions": "インストールされたすべての拡張機能を無効にします。", - "inspect-extensions": "拡張機能のデバッグとプロファイリングを許可します。接続 URI を開発者ツールでチェックします。", - "inspect-brk-extensions": "起動後に一時停止されている拡張ホストとの拡張機能のデバッグとプロファイリングを許可します。接続 URI を開発者ツールでチェックします。", "disableGPU": "GPU ハードウェア アクセラレータを無効にします。", "uploadLogs": "現在のセッションから安全なエンドポイントにログをアップロードします。", "maxMemory": "ウィンドウの最大メモリ サイズ (バイト単位)。", diff --git a/i18n/jpn/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/jpn/src/vs/platform/extensions/node/extensionValidator.i18n.json index 4b14b839908..96e0f8571e1 100644 --- a/i18n/jpn/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/jpn/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "`engines.vscode` 値 {0} を解析できませんでした。使用可能な値の例: ^0.10.0、^1.2.3、^0.11.0、^0.10.x など。", + "versionSyntax": "`engines.vscode` の値 {0} を解析できませんでした。使用可能な値の例: ^1.22.0、^1.22.x など。", "versionSpecificity1": "`engines.vscode` ({0}) で指定されたバージョンが十分に特定されていません。1.0.0 より前の vscode バージョンの場合は、少なくとも想定されているメジャー バージョンとマイナー バージョンを定義してください。例 ^0.10.0、0.10.x、0.11.0 など。", "versionSpecificity2": "`engines.vscode` ({0}) で指定されたバージョンが明確ではありません。1.0.0 より後のバージョンの vscode の場合は、少なくとも、想定されているメジャー バージョンを定義してください。例 ^1.10.0、1.10.x、1.x.x、2.x.x など。", "versionMismatch": "拡張機能が Code {0} と互換性がありません。拡張機能に必要なバージョン: {1}。" diff --git a/i18n/jpn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/jpn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 020c403fa83..fca35bd3e43 100644 --- a/i18n/jpn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/jpn/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "{0} インストールが壊れている可能性があります。再インストールしてください。", "integrity.moreInformation": "詳細情報", - "integrity.dontShowAgain": "今後は表示しない", - "integrity.prompt": "{0} インストールが壊れている可能性があります。再インストールしてください。" + "integrity.dontShowAgain": "今後は表示しない" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/platform/issue/electron-main/issueService.i18n.json b/i18n/jpn/src/vs/platform/issue/electron-main/issueService.i18n.json index 40973f69053..3e52b3813de 100644 --- a/i18n/jpn/src/vs/platform/issue/electron-main/issueService.i18n.json +++ b/i18n/jpn/src/vs/platform/issue/electron-main/issueService.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "issueReporter": "問題のレポーター" + "issueReporter": "問題のレポーター", + "processExplorer": "プロセス エクスプローラー" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/jpn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..badee921d01 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": " `{0}` プロパティは必須で、`string` 型でなければなりません", + "showViewlet": "{0} を表示", + "view": "表示" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/jpn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 34c3b6de4d3..d69af0170e1 100644 --- a/i18n/jpn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/jpn/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "ビューをエディターに提供します", "views.explorer": "エクスプローラー ビュー", "views.debug": "デバッグ ビュー", - "locationId.invalid": "`{0}` は有効なビューの場所ではありません", "duplicateView1": "location `{1}` で同じ id `{0}` を使用する複数のビューを登録できません", "duplicateView2": "location `{1}` で id `{0}` のビューが既に登録されています" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 01bd67d78ca..b0aba9ae620 100644 --- a/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/jpn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview エディター" + "errorMessage": "view:{0} を復元中にエラーが発生しました" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 7c41e9e639c..e7c0107e6c1 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,7 @@ "screenReaderDetectedExtra": "スクリーン リーダーを使用しない場合、`editor.accessibilitySupport` を \"off\" にしてください。", "disableTabMode": "アクセシビリティ モードを無効にする", "gotoLine": "行へ移動", - "indentation": "インデント", + "selectIndentation": "インデントを選択", "selectEncoding": "エンコードの選択", "selectEOL": "改行コードの選択", "selectLanguageMode": "言語モードの選択", diff --git a/i18n/jpn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 93c2b61746d..9be51e2dac8 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,11 @@ "sizeMB": "{0}MB", "sizeGB": "{0}GB", "sizeTB": "{0}TB", - "largeImageError": "画像のファイル サイズが非常に大きい (>1MB) ため、エディターに表示されません。 ", + "largeImageError": "画像が大きすぎるため、エディターに表示されません ({0})。", "resourceOpenExternalButton": "外部のプログラムを使用して画像を開きますか?", - "nativeBinaryError": "このファイルはバイナリか、非常に大きいか、またはサポートされていないテキスト エンコードを使用しているため、エディターに表示されません。", + "nativeFileTooLargeError": "ファイルが大きすぎるため、エディターに表示されません ({0})。", + "nativeBinaryError": "このファイルはバイナリか、サポートされていないテキスト エンコードを使用しているため、エディターに表示されません。", + "openAsText": "このまま開きますか?", "zoom.action.fit.label": "画像全体", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..82b9f0d836c --- /dev/null +++ b/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInput.countSelected": "{0} 個選択済み", + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..f4c7eecf0db --- /dev/null +++ b/i18n/jpn/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickInputBox.ariaLabel": "入力すると結果が絞り込まれます。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/jpn/src/vs/workbench/electron-browser/actions.i18n.json index e28495c07d9..bb47142b456 100644 --- a/i18n/jpn/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/jpn/src/vs/workbench/electron-browser/actions.i18n.json @@ -32,6 +32,7 @@ "openRecent": "最近開いた項目…", "quickOpenRecent": "最近使用したものを開く...", "reportIssueInEnglish": "問題の報告", + "openProcessExplorer": "プロセス エクスプローラーを開く", "reportPerformanceIssue": "パフォーマンスの問題のレポート", "keybindingsReference": "キーボード ショートカットの参照", "openDocumentationUrl": "ドキュメント", diff --git a/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json index 78f2e08e8dc..3b03f305576 100644 --- a/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -80,6 +80,7 @@ "titleBarStyle": "ウィンドウのタイトル バーの外観を調整します。変更を適用するには、完全に再起動する必要があります。", "window.nativeTabs": "macOS Sierra ウィンドウ タブを有効にします。この変更を適用するには完全な再起動が必要であり、ネイティブ タブでカスタムのタイトル バー スタイルが構成されていた場合はそれが無効になることに注意してください。", "window.smoothScrollingWorkaround": "最小化した VS Code ウィンドウを元のサイズに戻したあと、スクロールが滑らかにならない場合はこの回避策を有効にしてください。これは Microsoft Surface のような高精度タッチパッドを備えたデバイスで、スクロールの開始が遅れる問題 (https://github.com/Microsoft/vscode/issues/13612) の回避策です。有効にすると、最小化の状態からウィンドウを元に戻したあとに少しレイアウトがちらつきますが、そうでなければ無害です。", + "window.clickThroughInactive": "有効な場合、非アクティブなウィンドウをクリックするとウィンドウがアクティブになり、クリック可能な場合はマウスの下の要素がトリガーされます。無効にすると、非アクティブなウィンドウの任意の場所をクリックするとそのウィンドウがアクティブになり、要素には 2 回目のクリックが必要になります。", "zenModeConfigurationTitle": "Zen Mode", "zenMode.fullScreen": "Zen Mode をオンにするとワークベンチを自動的に全画面モードに切り替えるかどうかを制御します。", "zenMode.centerLayout": "Zen Mode をオンにしたときにレイアウトを中央揃えにするかどうかを制御します。", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 2f23d0808e7..0338237fdd3 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "ブレークポイントの編集...", + "breakpoint": "ブレークポイント", "functionBreakpointsNotSupported": "このデバッグの種類では関数ブレークポイントはサポートされていません", "functionBreakpointPlaceholder": "中断対象の関数", "functionBreakPointInputAriaLabel": "関数ブレークポイントを入力します", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index e5f19bbddb1..46a0d6b70e2 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -6,12 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "breakpointWidgetLogMessagePlaceholder": "ブレークポイントにヒットしたときにログに記録するメッセージ。'Enter' で決定、 'esc' でキャンセルします。", + "breakpointWidgetLogMessagePlaceholder": "ブレークポイントにヒットしたときにログに記録するメッセージ。{} 内の式は補間されます。受け入れるには 'Enter' を、キャンセルするには 'esc' を押します。", "breakpointWidgetHitCountPlaceholder": "ヒット カウント条件が満たされる場合に中断します。'Enter' を押して受け入れるか 'Esc' を押して取り消します。", "breakpointWidgetExpressionPlaceholder": "式が true と評価される場合に中断します。'Enter' を押して受け入れるか 'Esc' を押して取り消します。", - "breakpointWidgetLogMessageAriaLabel": "このブレークポイントがヒットするたびにプログラムはこのメッセージを記録します。Enter を押して受け入れるか、Esc を押して取り消します。", - "breakpointWidgetHitCountAriaLabel": "ヒット カウントが満たされる場合にのみプログラムはこの位置で停止します。Enter を押して受け入れるか、Esc を押して取り消します。", - "breakpointWidgetAriaLabel": "この条件が true の場合にのみプログラムはこの位置で停止します。Enter を押して受け入れるか、Esc を押して取り消します。", "expression": "式", "hitCount": "ヒット カウント", "logMessage": "ログ メッセージ" diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 54068276642..87ac8b86e6a 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -27,5 +27,6 @@ "onFirstSessionStart": "初めてデバッグが開始されたときのみステータス バーにデバッグを表示する", "showInStatusBar": "デバッグのステータス バーが表示されるタイミングを制御", "openDebug": "デバッグ ビューを開くか、デバッグ セッションを開始するかを制御します。", - "launch": "グローバル デバッグ起動構成。ワークスペース間で共有される 'launch.json' の代わりとして使用する必要があります" + "launch": "グローバル デバッグ起動構成。ワークスペース間で共有される 'launch.json' の代わりとして使用する必要があります", + "extensionHostDebugAdapter": "拡張機能ホストのデバッグ アダプターを実行します" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 4964b4c61de..8d180e08a3d 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,7 @@ "useUniqueNames": "一意の構成名を使用してください。", "app.launch.json.compound.folder": "複合があるフォルダーの名前。", "app.launch.json.compounds.configurations": "この複合の一部として開始される構成の名前。", - "debugNoType": "デバッグ アダプター 'type' は省略不可で、'string' 型でなければなりません。", + "debugNoType": "デバッガー 'type' は省略不可で、'string' 型でなければなりません。", "selectDebug": "環境の選択", "DebugConfig.failed": "'launch.json' ファイルを '.vscode' フォルダー ({0}) 内に作成できません。", "workspace": "ワークスペース", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index ab14921810e..8856e9d9942 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "ブレークポイントの編集...", - "disableBreakpoint": "ブレークポイントの無効化", - "enableBreakpoint": "ブレークポイントの有効化", + "breakpoint": "ブレークポイント", "removeBreakpoints": "ブレークポイントの削除", "removeBreakpointOnColumn": "列 {0} のブレークポイントの削除", "removeLineBreakpoint": "行のブレークポイントの削除", @@ -21,7 +19,8 @@ "enableBreakpoints": "列 {0} のブレークポイントの有効化", "enableBreakpointOnLine": "行のブレークポイントの有効化", "addBreakpoint": "ブレークポイントの追加", - "conditionalBreakpoint": "条件付きブレークポイントの追加...", + "addConditionalBreakpoint": "条件付きブレークポイントの追加...", "addLogPoint": "ログ ポイントを追加...", + "cancel": "キャンセル", "addConfiguration": "構成の追加..." } \ No newline at end of file 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 fa6decef9ba..262d8dacd54 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "詳細情報", - "unableToLaunchDebugAdapter": "デバッグ アダプターを {0} から起動できません。", - "unableToLaunchDebugAdapterNoArgs": "デバッグ アダプターを起動できません。", - "stoppingDebugAdapter": "{0}。デバッグ アダプターを停止しています。", "debugAdapterCrash": "デバッグ アダプター プロセスが予期せず終了しました" } \ No newline at end of file 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 d8917f641c3..152d9f1c423 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 @@ -8,19 +8,6 @@ ], "debugAdapterBinNotFound": "デバッグ アダプターの実行可能ファイル '{0}' がありません。", "debugAdapterCannotDetermineExecutable": "デバッグ アダプター '{0}' の実行可能ファイルを判別できません。", - "launch.config.comment1": "IntelliSense を使用して利用可能な属性を学べます。", - "launch.config.comment2": "既存の属性の説明をホバーして表示します。", - "launch.config.comment3": "詳細情報は次を確認してください: {0}", - "debugType": "構成の種類。", - "debugTypeNotRecognised": "デバッグの種類は認識されませんでした。対応するデバッグの拡張機能がインストールされており、有効になっていることを確認してください。", - "node2NotSupported": "\"node2\" はサポートされていません。代わりに \"node\" を使用し、\"protocol\" 属性を \"inspector\" に設定してください。", - "debugName": "構成の名前。起動構成のドロップダウン メニューに表示されます。", - "debugRequest": "構成の要求の種類。\"launch\" または \"attach\" です。", - "debugServer": "デバッグ拡張機能の開発のみ。ポートが指定の VS Code の場合、サーバー モードで実行中のデバッグ アダプターへの接続が試行されます。", - "debugPrelaunchTask": "デバッグ セッションの開始前に実行するタスク。", - "debugPostDebugTask": "デバッグ セッションの終了後に実行するタスク。", - "debugWindowsConfiguration": "Windows 固有の起動構成の属性。", - "debugOSXConfiguration": "OS X 固有の起動構成の属性。", - "debugLinuxConfiguration": "Linux 固有の起動構成の属性。", - "deprecatedVariables": "'env.'、'config.'、'command.' は使用されていません。代わりに、'env:'、'config:'、'command:' を使用してください。" + "unableToLaunchDebugAdapter": "デバッグ アダプターを {0} から起動できません。", + "unableToLaunchDebugAdapterNoArgs": "デバッグ アダプターを起動できません。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..af1ed513222 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "IntelliSense を使用して利用可能な属性を学べます。", + "launch.config.comment2": "既存の属性の説明をホバーして表示します。", + "launch.config.comment3": "詳細情報は次を確認してください: {0}", + "debugType": "構成の種類。", + "debugTypeNotRecognised": "デバッグの種類は認識されませんでした。対応するデバッグの拡張機能がインストールされており、有効になっていることを確認してください。", + "node2NotSupported": "\"node2\" はサポートされていません。代わりに \"node\" を使用し、\"protocol\" 属性を \"inspector\" に設定してください。", + "debugName": "構成の名前。起動構成のドロップダウン メニューに表示されます。", + "debugRequest": "構成の要求の種類。\"launch\" または \"attach\" です。", + "debugServer": "デバッグ拡張機能の開発のみ。ポートが指定の VS Code の場合、サーバー モードで実行中のデバッグ アダプターへの接続が試行されます。", + "debugPrelaunchTask": "デバッグ セッションの開始前に実行するタスク。", + "debugPostDebugTask": "デバッグ セッションの終了前に実行するタスク。", + "debugWindowsConfiguration": "Windows 固有の起動構成の属性。", + "debugOSXConfiguration": "OS X 固有の起動構成の属性。", + "debugLinuxConfiguration": "Linux 固有の起動構成の属性。", + "deprecatedVariables": "'env.'、'config.'、'command.' は使用されていません。代わりに、'env:'、'config:'、'command:' を使用してください。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..3b21863f9bf --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code コンソール", + "mac.terminal.script.failed": "スクリプト '{0}' が終了コード {1} で失敗しました", + "mac.terminal.type.not.supported": "'{0}' はサポートされていません", + "press.any.key": "続行するには、任意のキーを押してください...", + "linux.term.failed": "'{0}' が終了コード {1} で失敗しました" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 039a3a0e4af..6012be2dbf3 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -37,7 +37,7 @@ "localizations": "ローカライズ ({0})", "localizations language id": "言語 ID", "localizations language name": "言語名", - "localizations localized language name": "言語名 (ローカライズ済み)", + "localizations localized language name": "言語名 (ローカライズ)", "colorThemes": "配色テーマ ({0})", "iconThemes": "アイコン テーマ ({0})", "colors": "配色 ({0})", diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 23443bd8220..cea0c685ac7 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "現在のワークスペースのユーザーによってこの拡張機能が推奨されています。", "reallyRecommended2": "このファイルの種類には拡張機能 '{0}' が推奨されます。", "reallyRecommendedExtensionPack": "このファイルの種類には拡張機能パック '{0}' が推奨されます。", - "showRecommendations": "推奨事項を表示", "install": "インストール", + "showRecommendations": "推奨事項を表示", "showLanguageExtensions": "'.{0}' ファイルに役立つ拡張機能が Marketplace にあります", "workspaceRecommended": "このワークスペースには拡張機能の推奨事項があります。", "installAll": "すべてインストール", diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 75dbb45c728..22837a8d961 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "キーバインド間の競合を回避するために、他のキーマップ ({0}) を無効にしますか?", "yes": "はい", - "no": "いいえ", - "betterMergeDisabled": "拡張機能 Better Merge は現在ビルトインです。インストール済みの拡張機能は無効化され、アンインストールできます。", - "uninstall": "アンインストール" + "no": "いいえ" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index bab69eb2957..5d9d43e41b5 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -14,7 +14,7 @@ "workspaceRecommendedExtensions": "ワークスペースの推奨事項", "builtInExtensions": "機能", "builtInThemesExtensions": "テーマ", - "builtInBasicsExtensions": "言語", + "builtInBasicsExtensions": "プログラミング言語", "searchExtensions": "Marketplace で拡張機能を検索する", "sort by installs": "並べ替え: インストール数", "sort by rating": "並べ替え: 評価", diff --git a/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json index 75b84f17fd8..0c2ececf19e 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/browser/editors/textFileEditor.i18n.json @@ -8,8 +8,8 @@ ], "textFileEditor": "テキスト ファイル エディター", "createFile": "ファイルの作成", - "relaunchWithIncreasedMemoryLimit": "再起動", - "configureMemoryLimit": "構成", + "relaunchWithIncreasedMemoryLimit": "{0} MB で再起動", + "configureMemoryLimit": "メモリ制限を構成する", "fileEditorWithInputAriaLabel": "{0}。テキスト ファイル エディター。", "fileEditorAriaLabel": "テキスト ファイル エディター。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 128e5ec3d69..9887d214dcb 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -38,7 +38,7 @@ "trashFailed": "ごみ箱を使用した削除に失敗しました。代わりに完全に削除しますか?", "deletePermanentlyButtonLabel": "完全に削除(&&D)", "retryButtonLabel": "再試行(&&R)", - "importFiles": "ファイルのインポート", + "addFiles": "ファイルを追加", "confirmOverwrite": "保存先のフォルダーに同じ名前のファイルまたはフォルダーが既に存在します。置き換えてもよろしいですか?", "replaceButtonLabel": "置換(&&R)", "fileIsAncestor": "ペーストするファイルは送り先フォルダの上位にいます", diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 0f218645e33..fa96297a410 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -35,7 +35,7 @@ "hotExit": "エディターを終了するときに保存を確認するダイアログを省略し、保存されていないファイルをセッション後も保持するかどうかを制御します。", "useExperimentalFileWatcher": "新しい試験的な File Watcher を使用します。", "defaultLanguage": "新しいファイルに割り当てられる既定の言語モード。", - "maxMemoryForLargeFilesMB": "大きなファイルを開くために再起動するときに、アプリケーションが使用する新しい MB 単位のメモリ制限。上限を再設定して起動する場合、 --max-memory=NEWSIZE をコマンド ラインで指定してアプリケーションを起動することもできます。", + "maxMemoryForLargeFilesMB": "大きなファイルを開こうとしたとき、VS Code の再起動後に使用できるメモリを制御します。コマンド ラインで --max-memory=NEWSIZE を指定するのと同じ効果があります。", "editorConfigurationTitle": "エディター", "formatOnSave": "ファイルを保存するときにフォーマットしてください。フォーマッタを使用可能にして、ファイルを自動保存せず、エディターをシャットダウンしないでください。", "formatOnSaveTimeout": "保存時フォーマットのタイムアウトを制御します。formatOnSave-コマンドの時間制限をミリ秒単位で指定してください。指定したタイムアウトよりも時間がかかるコマンドはキャンセルされます。", diff --git a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index bc26deafdbb..49eca2ec9c5 100644 --- a/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "ファイル名を入力します。Enter キーを押して確認するか、Esc キーを押して取り消します。", - "constructedPath": "**{1}** に {0} を作成", "filesExplorerViewerAriaLabel": "{0}、ファイル エクスプローラー", "dropFolders": "ワークスペースにフォルダーを追加しますか?", "dropFolder": "ワークスペースにフォルダーを追加しますか?", diff --git a/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index a9659f21937..19b3916384b 100644 --- a/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -9,7 +9,7 @@ "updateLocale": "VS Code の UI 言語を {0} にして再起動しますか?", "yes": "はい", "no": "いいえ", - "doNotAskAgain": "再度表示しない", + "neverAgain": "今後は表示しない", "JsonSchema.locale": "使用する UI 言語。", "vscode.extension.contributes.localizations": "ローカリゼーションをエディターに提供します", "vscode.extension.contributes.localizations.languageId": "表示文字列が翻訳される言語の id。", diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index d2939459ebd..c26e068a735 100644 --- a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "コピー", - "copyMarkerMessage": "メッセージのコピー" + "copyMessage": "メッセージのコピー" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 4d411c1a062..182631b8761 100644 --- a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "合計 {0} 個の問題", - "filteredProblems": "{1} 個中 {0} 個の問題を表示しています" + "totalProblems": "合計 {0} 個の問題" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..d91b356dc32 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "disableFilesExclude": "ファイルの除外を無効。", + "clearFilter": "フィルターの解除。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..568a2eaf8e4 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "showing filtered problems": "{0} / {1} を表示しています" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 67dcb1da19f..58202066e48 100644 --- a/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,13 @@ "markers.panel.title.problems": "問題", "markers.panel.aria.label.problems.tree": "ファイル別にグループ化した問題", "markers.panel.no.problems.build": "現時点でワークスペースの問題は検出されていません。", - "markers.panel.no.problems.filters": "指定されたフィルター条件による結果はありません", + "markers.panel.no.problems.filters": "指定されたフィルター条件による結果はありません。", + "markers.panel.no.problems.file.exclusions": "ファイルの除外設定が有効なため、すべての問題が非表示になっています。", + "markers.panel.action.useFilesExclude": "ファイルの除外設定を使用してフィルター処理", + "markers.panel.action.donotUseFilesExclude": "ファイルの除外設定を使用しない", "markers.panel.action.filter": "問題のフィルター処理", - "markers.panel.filter.placeholder": "種類またはテキストでフィルター処理", + "markers.panel.filter.ariaLabel": "問題のフィルター処理", + "markers.panel.filter.placeholder": "フィルター。例: text, **/*.ts, !**/node_modules/**", "markers.panel.filter.errors": "エラー", "markers.panel.filter.warnings": "警告", "markers.panel.filter.infos": "情報", diff --git a/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 15fc42aa021..efda21bd767 100644 --- a/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "キーボード ショートカット", "showDefaultKeybindings": "既定のキーバインドを表示", "showUserKeybindings": "ユーザーのキーバインドを表示", "SearchKeybindings.AriaLabel": "キー バインドの検索", diff --git a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index dd841c1f6e7..4cea9d36a1a 100644 --- a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "既定の設定を Raw で開く", + "openSettings": "設定を開く", "openGlobalSettings": "ユーザー設定を開く", "openGlobalKeybindings": "キーボード ショートカットを開く", "openGlobalKeybindingsFile": "キーボード ショートカット ファイルを開く", diff --git a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index b7e7f03ad0d..e3cca40ad76 100644 --- a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "既定の設定", "SearchSettingsWidget.AriaLabel": "設定の検索", "SearchSettingsWidget.Placeholder": "設定の検索", "noSettingsFound": "結果なし", @@ -16,6 +15,8 @@ "nlpResult": "自然文 (natural language) の結果", "filterResult": "フィルター後の結果", "defaultSettings": "既定の設定", + "defaultUserSettings": "既定のユーザー設定", + "defaultWorkspaceSettings": "既定のワークスペース設定", "defaultFolderSettings": "既定のフォルダー設定", "defaultEditorReadonly": "既定値を上書きするには、右側のエディターを編集します。", "preferencesAriaLabel": "既定の基本設定。読み取り専用のテキスト エディター。" diff --git a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 4a81bb3201b..c8dc571e62a 100644 --- a/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "拡張機能 \"{0}\" を表示", "editTtile": "編集", "replaceDefaultValue": "設定を置換", - "copyDefaultValue": "設定にコピー", - "unsupportedPHPExecutablePathSetting": "この設定はユーザー設定でなければなりません。ワークスペースのために PHP を構成するには、PHP ファイルを開き、ステータス バーの [PHP パス] をクリックします。", - "unsupportedWorkspaceSetting": "この設定はユーザー設定でなければなりません。", - "unsupportedWorkbenchSetting": "この設定は現在適用できません。このフォルダーを直接開いたときに適用されます。", - "unsupportedWorkbenchSettingDevMode": "この設定は現在適用できません。登録時にスコープを 'resource' と定義している場合かこのフォルダーを直接開いたときに適用されます。" + "copyDefaultValue": "設定にコピー" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/jpn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index cb6f2096d64..fadead296a9 100644 --- a/i18n/jpn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "その他の SCM プロバイダーをインストール...", "no open repo": "有効なソース管理プロバイダーがありません。", "source control": "ソース管理", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "非表示" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json index 2f468e9bae1..3e97075b786 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "次の検索包含パターンを表示", "previousSearchIncludePattern": "前の検索包含パターンを表示", + "nextSearchExcludePattern": "次の検索除外パターンを表示", + "previousSearchExcludePattern": "前の検索除外パターンを表示", "nextSearchTerm": "次の検索語句を表示", "previousSearchTerm": "前の検索語句を表示", - "showSearchViewlet": "検索の表示", "findInFiles": "フォルダーを指定して検索", "replaceInFiles": "複数のファイルで置換", "RefreshAction.label": "最新の情報に更新", diff --git a/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json index 641a488aa05..e3bc313f762 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,9 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "詳細検索の切り替え", - "searchIncludeExclude.label": "包含/除外するファイル", - "searchIncludeExclude.ariaLabel": "検索の包含/除外パターン", - "searchIncludeExclude.placeholder": "例: src, !*.ts, test/**/*.log", + "searchScope.includes": "含めるファイル", + "label.includes": "検索包含パターン", + "searchScope.excludes": "除外するファイル", + "label.excludes": "検索除外パターン", "replaceAll.confirmation.title": "すべて置換", "replaceAll.confirm.button": "置換(&&R)", "replaceAll.occurrence.file.message": "{1} 個のファイルで {0} 件の出現箇所を '{2}' に置換しました。", diff --git a/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 2fde4d268c7..f6fb99713ec 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,15 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "検索", + "copyMatchLabel": "コピー", + "copyPathLabel": "パスのコピー", + "copyAllLabel": "すべてコピー", + "toggleSearchViewPositionLabel": "検索ビュー位置の切り替え", "findInFolder": "フォルダー内を検索...", "findInWorkspace": "ワークスペース内を検索...", "showTriggerActions": "ワークスペース内のシンボルへ移動...", "name": "検索", - "search": "検索", "showSearchViewl": "検索の表示", "view": "表示", "findInFiles": "フォルダーを指定して検索", @@ -26,5 +30,5 @@ "search.followSymlinks": "検索中にシンボリック リンクをたどるかどうかを制御します。", "search.smartCase": "すべて小文字のパターンの場合、大文字と小文字を区別しないで検索し、そうでない場合は大文字と小文字を区別して検索する", "search.globalFindClipboard": "macOS で検索ビューが共有の検索クリップボードを読み取りまたは変更するかどうかを制御します", - "search.location": "プレビュー: 検索をサイドバーのビューとして表示するか、より水平方向の空間をとるためにパネル領域のパネルとして表示するかを制御します。次のリリースのパネル内の検索で水平レイアウトが改善され、プレビューではなくなります。" + "search.location": "検索をサイドバーのビューとして、または、より水平的なパネルとして表示するかを制御します。次期リリースではパネル内検索の水平レイアウトが改善され、プレビューではなくなります。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/snippets/electron-browser/snippetsService.i18n.json b/i18n/jpn/src/vs/workbench/parts/snippets/electron-browser/snippetsService.i18n.json index 2b6db6f461c..21441eaa272 100644 --- a/i18n/jpn/src/vs/workbench/parts/snippets/electron-browser/snippetsService.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/snippets/electron-browser/snippetsService.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "invalid.path.0": "`contributes.{0}.path` に文字列が必要です。提供された値: {1}", - "invalid.language.0": "言語を省略するとき、`contributes.{0}.path` の値は `.code-snippets`-file にする必要があります。提供された値: {1}", + "invalid.language.0": "言語を省略するとき、`contributes.{0}.path` の値は `.code-snippets`-file にする必要があります。提供された値: {1}", "invalid.language": "`contributes.{0}.language` で不明な言語です。提供された値: {1}", "invalid.path.1": "拡張機能のフォルダー ({2}) の中に `contributes.{0}.path` ({1}) が含まれている必要があります。これにより拡張を移植できなくなる可能性があります。", "vscode.extension.contributes.snippets": "スニペットを提供します。", diff --git a/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 1219aeec2ac..a1569ecbff5 100644 --- a/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "{0} のサポートの改善にご協力ください", "takeShortSurvey": "簡単なアンケートの実施", "remindLater": "後で通知する", - "neverAgain": "今後は表示しない", - "helpUs": "{0} のサポートの改善にご協力ください" + "neverAgain": "今後は表示しない" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 0592d0f299f..8a3c261d16c 100644 --- a/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "短いフィードバック アンケートにご協力をお願いできますか?", "takeSurvey": "アンケートの実施", "remindLater": "後で通知する", - "neverAgain": "今後は表示しない", - "surveyQuestion": "短いフィードバック アンケートにご協力をお願いできますか?" + "neverAgain": "今後は表示しない" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index df1f241a2c9..8021ef7847f 100644 --- a/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,6 +11,7 @@ "totalErrors": "エラー {0}", "totalWarnings": "警告 {0}", "totalInfos": "情報 {0}", + "problems": "問題", "building": "ビルド中...", "manyProblems": "10K+", "runningTasks": "実行中のタスクを表示", @@ -30,8 +31,10 @@ "selectProblemMatcher": "スキャンするタスク出力のエラーと警告の種類を選択", "customizeParseErrors": "現在のタスクの構成にはエラーがあります。タスクをカスタマイズする前にエラーを修正してください。", "moreThanOneBuildTask": "tasks.json で複数のビルド タスクが定義されています。最初のタスクのみを実行します。\\n", - "TaskSystem.activeSame.background": "'{0}' タスクは既にバックグラウンド モードでアクティブです。タスクを終了するにはタスク メニューから `タスクの終了...` を使用します。", - "TaskSystem.activeSame.noBackground": "{0}' タスクは既にアクティブです。タスクを終了するにはタスク メニューから `タスクの終了...` を使用します。", + "TaskSystem.activeSame.background": "タスク '{0}' は既にバックグラウンド モードでアクティブです。", + "TaskSystem.activeSame.noBackground": "タスク '{0}' は既にアクティブです。", + "terminateTask": "タスクの終了", + "restartTask": "タスクの再開", "TaskSystem.active": "既に実行中のタスクがあります。まずこのタスクを終了してから、別のタスクを実行してください。", "TaskSystem.restartFailed": "タスク {0} を終了して再開できませんでした", "TaskService.noConfiguration": "エラー: {0} タスク検出は次の構成に対してタスクを提供していません:\n{1}\nこのタスクは無視されます。\n", @@ -48,8 +51,8 @@ "recentlyUsed": "最近使用したタスク", "configured": "構成済みのタスク", "detected": "検出されたタスク", - "TaskService.notAgain": "今後は表示しない", "TaskService.ignoredFolder": "次のワークスペース フォルダーはタスク バージョン 0.1.0 を使用しているため無視されます: {0}", + "TaskService.notAgain": "今後は表示しない", "TaskService.pickRunTask": "実行するタスクを選択してください", "TaslService.noEntryToRun": "実行するタスクがありません。タスクを構成する...", "TaskService.fetchingBuildTasks": "ビルド タスクをフェッチしています...", diff --git a/i18n/jpn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/jpn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..1941d0b6328 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "ターミナルの背景色。パネルごとに異なる色を指定できます。", + "terminal.foreground": "ターミナルの前景色。", + "terminalCursor.foreground": "ターミナルのカーソル前景色。", + "terminalCursor.background": "ターミナルのカーソルの背景色。ブロックカーソルで重ねた文字の色をカスタマイズできます。", + "terminal.selectionBackground": "ターミナルの選択範囲の背景色。", + "terminal.border": "ターミナル内の分割パネルを区切る境界線色。デフォルトは panel.border です。", + "terminal.ansiColor": "ターミナルの '{0}' ANSI カラー。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 332b26ef5fc..3d8b5a103a8 100644 --- a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -19,8 +19,9 @@ "workbench.action.terminal.new": "新しい統合ターミナルの作成", "workbench.action.terminal.new.short": "新しいターミナル", "workbench.action.terminal.newWorkspacePlaceholder": "新しいターミナルの作業ディレクトリを選択してください", - "workbench.action.terminal.newInActiveWorkspace": "新しい統合ターミナルを作成 (アクティブなワークスペースに)", + "workbench.action.terminal.newInActiveWorkspace": "(アクティブなワークスペースで) 新しいターミナルの作成", "workbench.action.terminal.split": "ターミナルの分割", + "workbench.action.terminal.splitInActiveWorkspace": "(アクティブなワークスペースで) ターミナルの分割", "workbench.action.terminal.focusPreviousPane": "前のペインにフォーカス", "workbench.action.terminal.focusNextPane": "次のペインにフォーカス", "workbench.action.terminal.resizePaneLeft": "ペインを左にリサイズ", @@ -43,6 +44,7 @@ "workbench.action.terminal.scrollUpPage": "スクロール アップ (ページ)", "workbench.action.terminal.scrollToTop": "一番上にスクロール", "workbench.action.terminal.clear": "クリア", + "workbench.action.terminal.clearSelection": "選択のクリア", "workbench.action.terminal.allowWorkspaceShell": "ワークスペースでシェルを構成することを許可する", "workbench.action.terminal.disallowWorkspaceShell": "ワークスペースでシェルを構成することを許可しない", "workbench.action.terminal.rename": "名前変更", @@ -52,8 +54,8 @@ "nextTerminalFindTerm": "次の検索語句を表示", "previousTerminalFindTerm": "前の検索語句を表示", "quickOpenTerm": "アクティブなターミナルの切り替え", - "workbench.action.terminal.focusPreviousCommand": "前のコマンドにフォーカス", - "workbench.action.terminal.focusNextCommand": "次のコマンドにフォーカス", + "workbench.action.terminal.scrollToPreviousCommand": "前のコマンドにスクロール", + "workbench.action.terminal.scrollToNextCommand": "次のコマンドにスクロール", "workbench.action.terminal.selectToPreviousCommand": "前のコマンドを選択", "workbench.action.terminal.selectToNextCommand": "次のコマンドを選択" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index e57be05971a..c4c322cdd54 100644 --- a/i18n/jpn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "このワークスペースには、ユーザー設定でのみ設定可能な設定が含まれています ({0})。詳細情報は[こちら]({1})をクリックしてください。", "openWorkspaceSettings": "ワークスペース設定を開く", - "dontShowAgain": "今後は表示しない", - "unsupportedWorkspaceSettings": "このワークスペースには、ユーザー設定でのみ設定可能な設定が含まれています ({0})。詳細情報は[こちら]({1})をクリックしてください。" + "dontShowAgain": "今後は表示しない" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index a45d01fca51..be4c3ee187a 100644 --- a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "後で", "releaseNotes": "リリース ノート", "showReleaseNotes": "リリース ノートの表示", "read the release notes": "{0} v{1} へようこそ! リリース ノートを確認しますか?", @@ -16,13 +15,14 @@ "updateIsReady": "新しい更新 {0} が利用可能です。", "noUpdatesAvailable": "現在入手可能な更新はありません。", "ok": "OK", - "download now": "今すぐダウンロード", "thereIsUpdateAvailable": "利用可能な更新プログラムがあります。", - "installUpdate": "更新プログラムのインストール", + "download now": "今すぐダウンロード", + "later": "後で", "updateAvailable": "利用可能な更新プログラムがあります: {0} {1}", + "installUpdate": "更新プログラムのインストール", "updateInstalling": "バックグラウンドで {0} {1} がインストールされています。処理が完了次第、お知らせします。", + "updateAvailableAfterRestart": "最新の更新プログラムを適用するために {0} を再起動してください。", "updateNow": "今すぐ更新", - "updateAvailableAfterRestart": "{0} は再起動後に更新されます。", "commandPalette": "コマンド パレット...", "settings": "設定", "keyboardShortcuts": "キーボード ショートカット", diff --git a/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 01bd67d78ca..4dfeb1219a9 100644 --- a/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview エディター" + "webview.editor.label": "webview エディター", + "developer": "開発者" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..14a4dc22123 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview 開発者ツールを開く", + "refreshWebviewLabel": "WebView の再読み込み" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json b/i18n/jpn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json index 7ea668065a4..335e27fbbcd 100644 --- a/i18n/jpn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/welcome/overlay/browser/welcomeOverlay.i18n.json @@ -13,6 +13,7 @@ "welcomeOverlay.extensions": "拡張機能の管理", "welcomeOverlay.problems": "エラーおよび警告の表示", "welcomeOverlay.commandPalette": "すべてのコマンドの検索と実行", + "welcomeOverlay.notifications": "通知を表示", "welcomeOverlay": "ユーザー インターフェイスの概要", "hideWelcomeOverlay": "インターフェイスの概要を非表示にします", "help": "ヘルプ" diff --git a/i18n/jpn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/jpn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 047af6a333f..f7166ecfc88 100644 --- a/i18n/jpn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "ツールと言語", "welcomePage.installExtensionPacksDescription": "{0} と {1} のサポートをインストールする ", "welcomePage.moreExtensions": "その他", - "welcomePage.installKeymapDescription": "キーボード ショートカットをインストールします", - "welcomePage.installKeymapExtension": "{0} と {1} のキーボード ショートカットをインストール", "welcomePage.others": "その他", "welcomePage.colorTheme": "配色テーマ", "welcomePage.colorThemeDescription": "エディターとコードの外観を自由に設定します", diff --git a/i18n/jpn/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json b/i18n/jpn/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json index 9b3063f1b25..56d40c7d548 100644 --- a/i18n/jpn/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/configuration/common/configurationExtensionPoint.i18n.json @@ -8,6 +8,7 @@ ], "vscode.extension.contributes.configuration.title": "設定の概要です。このラベルは、設定ファイルでコメントの区切り文字として使用します。", "vscode.extension.contributes.configuration.properties": "構成のプロパティの説明です。", + "scope.application.description": "ユーザー設定でのみ構成できるアプリケーション固有の構成。", "scope.window.description": "ウィンドウ固有の構成。ユーザーまたはワークスペースの設定で構成できます。", "scope.resource.description": "リソース固有の構成。ユーザー、ワークスペース、またはフォルダーの設定で構成できます。", "scope.description": "構成が適用される範囲。 使用可能なスコープは `window` と ` resource` です。", diff --git a/i18n/jpn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/jpn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 2b7849ba68a..627b2d01b48 100644 --- a/i18n/jpn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -11,6 +11,7 @@ "open": "設定を開く", "saveAndRetry": "保存して再試行", "errorUnknownKey": "{1} は登録済みの構成ではないため、{0} に書き込むことができません。", + "errorInvalidWorkspaceConfigurationApplication": "{0} をワークスペース設定に書き込めません。この設定はユーザー設定にのみ書き込めます。", "errorInvalidFolderConfiguration": "{0} はフォルダーのリソース スコープをサポートしていないため、フォルダー設定に書き込むことができません。", "errorInvalidUserTarget": "{0} はグローバル スコープをサポートしていないため、ユーザー設定に書き込むことができません。", "errorInvalidWorkspaceTarget": "{0} はマルチ フォルダー ワークスペースでワークスペース スコープをサポートしていないため、ワークスペース設定を書き込むことができません。", diff --git a/i18n/jpn/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/jpn/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..8283d684b01 --- /dev/null +++ b/i18n/jpn/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedApplicationSetting": "この設定はユーザー設定でのみ適用できます", + "unsupportedWindowSetting": "この設定は現在適用できません。このフォルダーを直接開いたときに適用されます。" +} \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index 3f0c29658fc..9ca110727dd 100644 --- a/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -6,16 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "canNotResolveWorkspaceFolderMultiRoot": "マルチ フォルダー ワークスペースで ${workspaceFolder} を解決できません。この変数を : とフォルダー名を使用して範囲指定してください。", - "canNotResolveWorkspaceFolder": "${workspaceFolder} を解決できません。フォルダーを開いてください。", - "canNotResolveFolderBasenameMultiRoot": "マルチ フォルダー ワークスペースで ${workspaceFolderBasename} を解決できません。この変数を : とフォルダー名を使用してスコープしてください。", - "canNotResolveFolderBasename": "${workspaceFolderBasename} を解決できません。フォルダーを開いてください。", - "canNotResolveLineNumber": "${lineNumber} を解決できません。エディターを開いてください。", - "canNotResolveSelectedText": "${selectedText} を解決できません。エディターを開いてください。", - "canNotResolveFile": "${file} を解決できません。エディターを開いてください。", - "canNotResolveRelativeFile": "${relativeFile} を解決できません。エディターを開いてください。", - "canNotResolveFileDirname": "${fileDirname} を解決できません。エディターを開いてください。", - "canNotResolveFileExtname": "${fileExtname} を解決できません。エディターを開いてください。", - "canNotResolveFileBasename": "${fileBasename} を解決できません。エディターを開いてください。", - "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} を解決できません。エディターを開いてください。" + "canNotResolveWorkspaceFolderMultiRoot": "'${workspaceFolder}' はマルチ フォルダー ワークスペースで解決できません。 ':' とフォルダー名を使用して、この変数のスコープを指定してください。", + "canNotResolveWorkspaceFolder": "'${workspaceFolder}' を解決できません。フォルダーを開いてください。", + "canNotResolveFolderBasenameMultiRoot": "'${workspaceFolderBasename}' はマルチ フォルダー ワークスペースで解決できません。 ':' とフォルダー名を使用して、この変数のスコープを指定してください。", + "canNotResolveFolderBasename": "'${workspaceFolderBasename}' を解決できません。フォルダーを開いてください。", + "canNotResolveLineNumber": "'${lineNumber}' を解決できません。エディターを開いてください。", + "canNotResolveSelectedText": "'${selectedText}' を解決できません。エディターを開いてください。", + "canNotResolveFile": "'${file}' を解決できません。エディターを開いてください。", + "canNotResolveRelativeFile": "'${relativeFile}' を解決できません。エディターを開いてください。", + "canNotResolveFileDirname": "'${fileDirname}' を解決できません。エディターを開いてください。", + "canNotResolveFileExtname": "'${fileExtname}' を解決できません。エディターを開いてください。", + "canNotResolveFileBasename": "'${fileBasename}' を解決できません。エディターを開いてください。", + "canNotResolveFileBasenameNoExtension": "'${fileBasenameNoExtension}' を解決できません。エディターを開いてください。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 96725800f80..5fe7c380aea 100644 --- a/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -6,10 +6,12 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "vscode.extension.engines": "エンジンの互換性。", "vscode.extension.engines.vscode": "VS Code 拡張機能の場合、拡張機能と互換性のある VS Code バージョンを指定します。* を指定することはできません。たとえば、^0.10.5 は最小の VS Code バージョン 0.10.5 との互換性を示します。", "vscode.extension.publisher": "VS Code 拡張機能の公開元。", "vscode.extension.displayName": "VS Code ギャラリーで使用される拡張機能の表示名。", "vscode.extension.categories": "VS Code ギャラリーで拡張機能の分類に使用されるカテゴリ。", + "vscode.extension.category.languages.deprecated": "代わりに 'Programming Languages' を使用してください", "vscode.extension.galleryBanner": "VS Code マーケットプレースで使用されるバナー。", "vscode.extension.galleryBanner.color": "VS Code マーケットプレース ページ ヘッダー上のバナーの色。", "vscode.extension.galleryBanner.theme": "バナーで使用されるフォントの配色テーマ。", @@ -28,6 +30,8 @@ "vscode.extension.badges.url": "バッジのイメージ URL。", "vscode.extension.badges.href": "バッジのリンク。", "vscode.extension.badges.description": "バッジの説明。", + "vscode.extension.markdown": "Marketplace で使用される Markdown レンダリング エンジンを制御します。github (既定) か standard のいずれかを指定できます。", + "vscode.extension.qna": "Marketplace の Q&A リンクを制御します。既定の Marketplace Q & A サイトを有効にするには marketplace を設定します。カスタム Q & A サイトの URL を提供するには文字列を設定します。Q & A を完全に無効にするには false を設定します。", "vscode.extension.extensionDependencies": "他の拡張機能に対する依存関係。拡張機能の識別子は常に ${publisher}.${name} です。例: vscode.csharp。", "vscode.extension.scripts.prepublish": "パッケージが VS Code 拡張機能として公開される前に実行されるスクリプト。", "vscode.extension.scripts.uninstall": "VS コード拡張機能のフックをアンインストールします。 VS コードから拡張機能を完全にアンインストールした時に実行されるスクリプトです。スクリプトは、拡張機能をアンインストールした後に VS コードを再起動 (シャット ダウンしてから起動) したときに実行されます。Node スクリプトのみがサポートされます。", diff --git a/i18n/jpn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/jpn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 13e9e7d526d..ebdf2bc38d9 100644 --- a/i18n/jpn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionsDisabled": "すべての拡張機能が無効化されています。", "extensionHostProcess.crash": "拡張機能のホストが予期せずに終了しました。", "extensionHostProcess.unresponsiveCrash": "拡張機能のホストが応答しないため終了しました。", - "devTools": "開発者ツール", + "devTools": "開発者ツールを開く", "restart": "拡張機能のホストを再起動", "overwritingExtension": "拡張機能 {0} を {1} で上書きしています。", "extensionUnderDevelopment": "開発の拡張機能を {0} に読み込んでいます", diff --git a/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 840a5a93e43..ae5be60aaaf 100644 --- a/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,11 +6,24 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5 が必要です。リンクに移動してインストールしてください。", "installNet": ".NET Framework 4.5 をダウンロードします", "neverShowAgain": "今後は表示しない", - "netVersionError": "Microsoft .NET Framework 4.5 が必要です。リンクに移動してインストールしてください。", - "learnMore": "説明書", "enospcError": "{0} はこの大規模なワークスペース内のファイル変更を監視できません。この問題を解決するには、リンクの手順に従ってください。", + "learnMore": "説明書", + "fileInvalidPath": "ファイルのリソース ({0}) が無効です", + "fileIsDirectoryError": "ファイルはディレクトリです", + "fileNotModifiedError": "ファイルは次の時点以後に変更されていません:", + "fileTooLargeForHeapError": "このサイズのファイルを開くには、VS Code を再起動してより多くのメモリ使用を許可する必要があります", + "fileTooLargeError": "開くファイルが大きすぎます", + "fileNotFoundError": "ファイルが見つかりません ({0})", + "fileBinaryError": "ファイルはバイナリのようなので、テキストとして開くことができません", + "filePermission": "ファイルへの書き込み許可が拒否されました ({0})", + "fileExists": "生成しようとしているファイル ({0}) は既に存在しています", + "fileModifiedError": "ファイルは次の時点以後に更新されました:", + "fileReadOnlyError": "ファイルは読み取り専用です", + "fileMoveConflict": "移動/コピーできません。移動/コピー先にファイルが既に存在します。", + "unableToMoveCopyError": "移動/コピーできません。ファイルが含まれるフォルダーが置き換わることになります。", "binFailed": "'{0}' をごみ箱に移動できませんでした", "trashFailed": "'{0}' をごみ箱に移動できませんでした" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/jpn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 8d829d16685..660883f87f6 100644 --- a/i18n/jpn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "ファイルが見つかりません ({0})", "fileIsDirectoryError": "ファイルはディレクトリです", "fileNotModifiedError": "ファイルは次の時点以後に変更されていません:", "fileBinaryError": "ファイルはバイナリのようなので、テキストとして開くことができません" diff --git a/i18n/kor/extensions/css/package.i18n.json b/i18n/kor/extensions/css/package.i18n.json index 35229bd6699..2d4d9da9391 100644 --- a/i18n/kor/extensions/css/package.i18n.json +++ b/i18n/kor/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CSS 언어 기본", + "description": "CSS,LESS,SCSS 파일에서 구문 강조 표시와 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/emmet/package.i18n.json b/i18n/kor/extensions/emmet/package.i18n.json index d4ae14fedae..11c3bae8db4 100644 --- a/i18n/kor/extensions/emmet/package.i18n.json +++ b/i18n/kor/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Emmet 프로필 및 코드 조각이 포함된 폴더의 경로입니다.'", "emmetShowExpandedAbbreviation": "확장된 emmet 약어를 제안으로 표시합니다.\n\"inMarkupAndStylesheetFilesOnly\" 옵션이 html, haml, jade, slim, xml, xsl, css, scss, sass, less 및 stylus에 적용됩니다.\n\"always\" 옵션이 마크업/css에 관계없이 파일의 모든 부분에 적용됩니다.", "emmetShowAbbreviationSuggestions": "가능한 emmet 약어를 제안으로 표시합니다. 스타일시트에는 적용되지 않고 emmet.showExpandedAbbreviation이 \"never\"로 설정되어 있을 때도 적용되지 않습니다.", - "emmetIncludeLanguages": "기본 지원되지 않는 언어에서 emmet 약어를 사용합니다. 언어와 emmet 지원 언어 사이에 매핑을 추가합니다.\n예: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "emmet 조각에 사용되는 변수", "emmetTriggerExpansionOnTab": "사용하도록 설정하면 emmet 약어는 Tab 키를 눌렀을 때 확장됩니다.", "emmetPreferences": "Emmet의 일부 작업 및 해결 프로그램의 동작을 수정하는 데 사용되는 기본 설정입니다.", @@ -59,5 +58,6 @@ "emmetPreferencesCssWebkitProperties": "`-`로 시작하는 Emmet 약어에서 사용될 때 'webkit' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'webkit' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", "emmetPreferencesCssMozProperties": "`-`로 시작하는 Emmet 약어에서 사용될 때 'moz' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'moz' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", "emmetPreferencesCssOProperties": "`-`로 시작하는 emmet 약어에서 사용할 때 'o' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'o' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", - "emmetPreferencesCssMsProperties": "`-`로 시작하는 emmet 약어에서 사용할 때 'ms' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'ms' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다." + "emmetPreferencesCssMsProperties": "`-`로 시작하는 emmet 약어에서 사용할 때 'ms' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'ms' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", + "emmetPreferencesCssFuzzySearchMinScore": "유사 일치 약어가 획득해야 하는 최소 점수(0에서 1 사이)입니다. 값이 낮을수록 가양성 일치 항목이 늘 수 있고, 값이 높을수록 가능한 일치 항목이 줄 수 있습니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/git/out/commands.i18n.json b/i18n/kor/extensions/git/out/commands.i18n.json index bc4b7753a32..e1ccbbf253f 100644 --- a/i18n/kor/extensions/git/out/commands.i18n.json +++ b/i18n/kor/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "확인", "push with tags success": "태그와 함께 푸시되었습니다.", "pick remote": "'{0}' 분기를 다음에 게시하려면 원격을 선택하세요.", + "sync is unpredictable": "이 작업은 '{0}/{1}' 간에 커밋을 푸시하고 풀합니다. ", "never again": "다시 표시 안 함", "no remotes to publish": "리포지토리에 게시하도록 구성된 원격이 없습니다.", "no changes stash": "스태시할 변경 내용이 없습니다.", diff --git a/i18n/kor/extensions/git/package.i18n.json b/i18n/kor/extensions/git/package.i18n.json index 07838b84a85..3703ac48f99 100644 --- a/i18n/kor/extensions/git/package.i18n.json +++ b/i18n/kor/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Git 변경점 보기에서 파일 열기 동작 줄을 표시할지의 여부를 제어합니다.", "config.inputValidation": "커밋 메시지 입력 유효성 검사를 언제 표시할지 제어합니다.", "config.detectSubmodules": "Git 하위 모듈을 자동으로 검색할지 여부를 제어합니다.", + "config.detectSubmodulesLimit": "Git submodules 검출 개수의 제한을 제어합니다.", "colors.modified": "수정된 리소스의 색상입니다.", "colors.deleted": "삭제된 리소스의 색상입니다.", "colors.untracked": "추적되지 않은 리소스의 색상입니다.", diff --git a/i18n/kor/extensions/html/package.i18n.json b/i18n/kor/extensions/html/package.i18n.json index 35229bd6699..0801cef7b57 100644 --- a/i18n/kor/extensions/html/package.i18n.json +++ b/i18n/kor/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HTML 언어 기본", + "description": "HTML 파일에서 구문 강조 표시, 괄호 일치 및 코드 조각을 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/json-language-features/package.i18n.json b/i18n/kor/extensions/json-language-features/package.i18n.json index 1f6c4dd2f4a..d86c7ffa3da 100644 --- a/i18n/kor/extensions/json-language-features/package.i18n.json +++ b/i18n/kor/extensions/json-language-features/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "JSON 언어 기능", "description": "JSON 파일에 대한 다양한 언어 지원을 제공합니다.", "json.schemas.desc": "현재 프로젝트에서 스키마를 JSON 파일에 연결", "json.schemas.url.desc": "현재 디렉터리에 있는 스키마의 URL 또는 상대 경로", diff --git a/i18n/kor/extensions/json/package.i18n.json b/i18n/kor/extensions/json/package.i18n.json index 35229bd6699..c63982946ed 100644 --- a/i18n/kor/extensions/json/package.i18n.json +++ b/i18n/kor/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JSON 언어 기본", + "description": "JSON 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다. " } \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json index 1c1e1aed9de..4bc763aedcc 100644 --- a/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json +++ b/i18n/kor/extensions/markdown-language-features/out/features/preview.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "lockedPreviewTitle": "[미리 보기] {0}", "previewTitle": "미리 보기 {0}" } \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-language-features/package.i18n.json b/i18n/kor/extensions/markdown-language-features/package.i18n.json index ae5e530af4c..83878314ebe 100644 --- a/i18n/kor/extensions/markdown-language-features/package.i18n.json +++ b/i18n/kor/extensions/markdown-language-features/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Markdown 언어 기능", "description": "Markdown에 대한 다양한 언어 지원을 제공합니다.", "markdown.preview.breaks.desc": "마크다운 미리 보기에서 줄바꿈 렌더링 방식을 설정합니다. 'true'로 설정하면 모든 행에 대해 <br>이(가) 생성됩니다.", "markdown.preview.linkify": "Markdown 미리 보기에서 URL 같은 텍스트를 링크로 변환을 사용하거나 사용하지 않도록 설정합니다.", @@ -26,5 +27,6 @@ "markdown.styles.dec": "markdown 미리 보기에서 사용할 CSS 스타일시트의 URL 또는 로컬 경로 목록입니다. 상대 경로는 탐색기에서 열린 폴더를 기준으로 해석됩니다. 열린 폴더가 없으면 markdown 파일의 위치를 기준으로 해석됩니다. 모든 '\\'는 '\\\\'로 써야 합니다.", "markdown.showPreviewSecuritySelector.title": "미리 보기 보안 설정 변경", "markdown.trace.desc": "Markdown 확장에 대해 디버그 로깅을 사용하도록 설정합니다.", + "markdown.preview.refresh.title": "미리 보기 새로 고침", "markdown.preview.toggleLock.title": "미리 보기 잠금 설정/해제" } \ No newline at end of file diff --git a/i18n/kor/extensions/php/package.i18n.json b/i18n/kor/extensions/php/package.i18n.json index a55af556ea0..7ffd59966bb 100644 --- a/i18n/kor/extensions/php/package.i18n.json +++ b/i18n/kor/extensions/php/package.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP 언어 기능" + "description": "PHP 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다. " } \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/commands.i18n.json b/i18n/kor/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..dd43847bd6e --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "TypeScript 또는 JavaScript 프로젝트를 사용하려면 VS Code의 폴더를 여세요.", + "typescript.projectConfigUnsupportedFile": "TypeScript 또는 JavaScript 프로젝트를 확인할 수 없습니다. 지원되지 않는 파일 형식", + "typescript.projectConfigCouldNotGetInfo": "TypeScript 또는 JavaScript 프로젝트를 확인할 수 없습니다.", + "typescript.noTypeScriptProjectConfig": "파일이 TypeScript 프로젝트의 일부가 아닙니다. 자세히 알아보려면 [여기]({0})를 클릭하세요.", + "typescript.noJavaScriptProjectConfig": "파일이 JavaScript 프로젝트의 일부가 아닙니다. 자세히 알아보려면 [여기]({0})를 클릭하세요.", + "typescript.configureTsconfigQuickPick": "tsconfig.json 구성", + "typescript.configureJsconfigQuickPick": "jsconfig.json 구성" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..65d840cf0b5 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "적용할 코드 동작 선택", + "acquiringTypingsLabel": "typings를 가져오는 중...", + "acquiringTypingsDetail": "IntelliSense에 대한 typings 정의를 가져오는 중입니다.", + "autoImportLabel": "{0}에서 자동으로 가져오기" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..365792bc459 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "JavaScript 파일에서 의미 검사를 사용합니다. 파일의 최상단에 있어야 합니다.", + "ts-nocheck": "JavaScript 파일에서 의미 검사를 사용하지 않습니다. 파일의 최상단에 있어야 합니다.", + "ts-ignore": "파일의 다음 행에서 @ts-check 오류를 억제합니다." +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..272312dad8e --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1개 구현", + "manyImplementationLabel": "{0}개 구현", + "implementationsErrorLabel": "구현을 확인할 수 없음" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..de5777d4c7a --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc 주석" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..86003226d94 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "가져오기 구성" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..b91c84de957 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (파일에서 모두 수정)" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..69609e31fcb --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "참조 1개", + "manyReferenceLabel": "참조 {0}개", + "referenceErrorLabel": "참조를 확인할 수 없음" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..6982eedcfd9 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "빌드 - {0}", + "buildAndWatchTscLabel": "보기 - {0}" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/kor/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..3f50eeec8ab --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "경로 {0}이(가) 올바른 tsserver 설치를 가리키지 않습니다. 포함된 TypeScript 버전을 대신 사용합니다.", + "serverCouldNotBeStarted": "TypeScript 언어 서버를 시작할 수 없습니다. 오류 메시지: {0}", + "typescript.openTsServerLog.notSupported": "TS 서버 로깅을 사용하려면 TS 2.2.2 이상이 필요합니다.", + "typescript.openTsServerLog.loggingNotEnabled": "TS 서버 로깅이 꺼져 있습니다. `typescript.tsserver.log`를 설정하고 TS 서버를 다시 시작하여 로깅을 사용하도록 설정하세요.", + "typescript.openTsServerLog.enableAndReloadOption": "로깅 사용 및 TS 서버 다시 시작", + "typescript.openTsServerLog.noLogFile": "TS 서버에서 로깅을 시작하지 않았습니다.", + "openTsServerLog.openFileFailedFailed": "TS 서버 로그 파일을 열 수 없습니다.", + "serverDiedAfterStart": "TypeScript 언어 서비스가 시작된 직후 5번 종료되었습니다. 서비스가 다시 시작되지 않습니다.", + "serverDiedReportIssue": "문제 보고", + "serverDied": "TypeScript 언어 서비스가 지난 5분 동안 예기치 않게 5번 종료되었습니다." +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..f57994230cb --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "잘못된 버전" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..49fa81ab46e --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "프로젝트 전체에서 JavaScript/TypeScript 언어 기능을 사용하도록 설정하려면 {0}과(와) 같이 파일이 많은 폴더를 제외하세요.", + "hintExclude.generic": "프로젝트 전체에서 JavaScript/TypeScript 언어 기능을 사용하도록 설정하려면 사용하지 않는 소스 파일이 포함된 큰 폴더를 제외하세요.", + "large.label": "제외 구성", + "hintExclude.tooltip": "프로젝트 전체에서 JavaScript/TypeScript 언어 기능을 사용하도록 설정하려면 사용하지 않는 소스 파일이 포함된 큰 폴더를 제외하세요." +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..0fad82fa51a --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "TypeScript IntelliSense를 향상하기 위해 데이터를 페치하는 중", + "typesInstallerInitializationFailed.title": "JavaScript 언어 기능에 대한 입력 파일을 설치할 수 없습니다. NPM이 설치되어 있는지 확인하거나 사용자 설정에서 'typescript.npm'을 구성하세요. 자세히 알아보려면 [여기]({0})를 클릭하세요.", + "typesInstallerInitializationFailed.doNotCheckAgain": "다시 표시 안 함" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..bdd4f232c51 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "VS Code의 버전 사용", + "useWorkspaceVersionOption": "작업 영역 버전 사용", + "learnMore": "자세한 정보", + "selectTsVersion": "JavaScript 및 TypeScript 언어 기능에 사용되는 TypeScript 버전 선택" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/kor/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..979038a5298 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noBundledServerFound": "잘못 동작하는 바이러스 감지 도구와 같은 다른 응용 프로그램에서 VS Code의 tsserver가 삭제되었습니다. VS Code를 다시 설치하세요." +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-language-features/package.i18n.json b/i18n/kor/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..3f2230bf284 --- /dev/null +++ b/i18n/kor/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,58 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript 및 JavaScript 언어 기능", + "description": "JavaScript 및 TypeScript에 대한 다양한 언어 지원을 제공합니다.", + "typescript.reloadProjects.title": "프로젝트 다시 로드", + "javascript.reloadProjects.title": "프로젝트 다시 로드", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "매개 변수 서명으로 함수를 완료하세요.", + "typescript.tsdk.desc": "사용할 tsserver 및 lib*.d.ts 파일이 들어 있는 폴더 경로를 지정합니다.", + "typescript.disableAutomaticTypeAcquisition": "자동 형식 인식을 사용하지 않습니다. TypeScript >= 2.0.6이 필요합니다.", + "typescript.tsserver.log": "파일에 대해 TS 서버 로깅을 사용하도록 설정합니다. 이 로그는 TS 서버 문제를 진단하는 데 사용될 수 있습니다. 로그에는 파일 경로, 소스 코드 및 프로젝트에서 잠재적으로 중요한 기타 정보가 포함될 수 있습니다.", + "typescript.tsserver.trace": "TS 서버로 전송한 메시지 추적을 사용하도록 설정합니다. 이\n 추적은 TS 서버 문제를 진단하는 데 사용될 수 있습니다. 추적에는 파일 경로, 소스 코드 및 프로젝트에서 잠재적으로 중요한\n 기타 정보가 포함될 수 있습니다.", + "typescript.validate.enable": "TypeScript 유효성 검사를 사용하거나 사용하지 않습니다.", + "typescript.format.enable": "기본 TypeScript 포맷터를 사용하거나 사용하지 않습니다.", + "javascript.format.enable": "기본 JavaScript 포맷터를 사용하거나 사용하지 않습니다.", + "format.insertSpaceAfterCommaDelimiter": "쉼표 구분 기호 뒤에 오는 공백 처리를 정의합니다.", + "format.insertSpaceAfterConstructor": "컨스트럭터 키워드 뒤 공백 처리를 정의합니다. TypeScript >= 2.3.0이 필요합니다.", + "format.insertSpaceAfterSemicolonInForStatements": " for 문에서 세미콜론 뒤에 오는 공백 처리를 정의합니다.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "이항 연산자 뒤에 오는 공백 처리를 정의합니다.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "제어 흐름 문의 키워드 뒤에 오는 공백 처리를 정의합니다.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "익명 함수의 function 키워드 뒤에 오는 공백 처리를 정의합니다.", + "format.insertSpaceBeforeFunctionParenthesis": "함수 인수 괄호 앞에 오는 공백 처리를 정의합니다. TypeScript 2.1.5 이상이 필요합니다.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "템플릿 문자열의 여는 중괄호 뒤와 닫는 중괄호 앞의 공백 처리를 정의합니다. TypeScript >= 2.0.6이 필요합니다.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "JSX 식의 여는 중괄호 뒤와 닫는 중괄호 앞의 공백 처리를 정의합니다. TypeScript >= 2.0.6이 필요합니다.", + "format.insertSpaceAfterTypeAssertion": "TypeScript에서 유형 어설션 이후 공백 처리를 정의합니다. TypeScript >= 2.4가 필요합니다.", + "format.placeOpenBraceOnNewLineForFunctions": "함수의 새 줄에 여는 중괄호를 넣을지 정의합니다.", + "format.placeOpenBraceOnNewLineForControlBlocks": "제어 블록의 새 줄에 여는 중괄호를 넣을지 정의합니다.", + "javascript.validate.enable": "JavaScript 유효성 검사를 사용하거나 사용하지 않습니다.", + "typescript.goToProjectConfig.title": "프로젝트 구성으로 이동", + "javascript.goToProjectConfig.title": "프로젝트 구성으로 이동", + "javascript.referencesCodeLens.enabled": "JavaScript 파일에서 CodeLense 참조를 사용/사용 안 함으로 설정합니다.", + "typescript.referencesCodeLens.enabled": "TypeScript 파일에서 참조 CodeLense를 사용/사용 안 함으로 설정합니다. TypeScript >= 2.0.6이 필요합니다.", + "typescript.implementationsCodeLens.enabled": "구현 CodeLens를 사용하거나 사용하지 않도록 설정합니다. TypeScript >= 2.2.0이 필요합니다.", + "typescript.openTsServerLog.title": "TS 서버 로그 열기", + "typescript.restartTsServer": "TS 서버 다시 시작", + "typescript.selectTypeScriptVersion.title": "TypeScript 버전 선택", + "typescript.reportStyleChecksAsWarnings": "스타일 검사를 경고로 보고", + "jsDocCompletion.enabled": "자동 JSDoc 주석 사용/사용 안 함", + "javascript.implicitProjectConfig.checkJs": "JavaScript 파일의 의미 체계 검사를 사용/사용하지 않습니다. 기존 jsconfig.json 또는 tsconfig.json 파일은 이 설정을 재정의합니다. TypeScript >=2.3.1이 필요합니다. ", + "typescript.npm": "자동 입력 인식에 사용된 NPM 실행 파일 경로를 지정합니다. TypeScript >= 2.3.4가 필요합니다.", + "typescript.check.npmIsInstalled": "자동 입력 인식에 대해 NPM이 설치되어 있는지 확인합니다.", + "javascript.nameSuggestions": "JavaScript 제안 목록의 파일에서 고유한 이름 포함을 사용/사용 안 함으로 설정합니다.", + "typescript.tsc.autoDetect": "tsc 작업의 자동 검색을 제어합니다. '해제'는 이 기능을 사용하지 않도록 설정합니다. '빌드'는 단일 실행 컴파일 작업만 만듭니다. '보기'는 컴파일 및 보기 작업만 만듭니다. '설정'은 빌드 및 보기 작업을 모두 만듭니다. 기본 옵션은 '설정'입니다.", + "typescript.problemMatchers.tsc.label": "TypeScript 문제", + "typescript.problemMatchers.tscWatch.label": "TypeScript 문제(감시 모드)", + "typescript.quickSuggestionsForPaths": "가져오기 경로를 입력할 때 빠른 제안을 사용하거나 사용하지 않습니다.", + "typescript.locale": "TypeScript 오류를 보고하는 데 사용하는 로캘을 설정합니다. TypeScript >= 2.6.0이 필요합니다. 기본값 'null'은 TypeScript 오류에 대해 VS Code의 로캘을 사용합니다.", + "javascript.implicitProjectConfig.experimentalDecorators": "프로젝트의 일부가 아닌 JavaScript 파일에 대해 'experimentalDecorators'를 사용하거나 사용하지 않도록 설정합니다. 기존 jsconfig.json 또는 tsconfig.json 파일은 이 설정을 재정의합니다. TypeScript >=2.3.1이 필요합니다.", + "typescript.autoImportSuggestions.enabled": "자동 가져오기 제안을 사용하거나 사용하지 않도록 설정합니다. TypeScript >=2.6.1이 필요합니다.", + "typescript.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다.", + "taskDefinition.tsconfig.description": "TS 빌드를 정의하는 tsconfig 파일입니다." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/base/node/processes.i18n.json b/i18n/kor/src/vs/base/node/processes.i18n.json index 05a4cd5f14f..35229bd6699 100644 --- a/i18n/kor/src/vs/base/node/processes.i18n.json +++ b/i18n/kor/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "UNC 드라이브에서 셸 명령을 실행할 수 없습니다." + ] } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 9bcb11a8721..0d6f74e08a2 100644 --- a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -11,7 +11,6 @@ "similarIssues": "유사한 문제", "open": "열기", "closed": "닫힘", - "noResults": "결과 없음", "settingsSearchIssue": "설정 검색 문제", "bugReporter": "버그 보고서", "featureRequest": "기능 요청", diff --git a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 838b50751aa..00754823fe4 100644 --- a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "양식을 영어로 작성해 주세요.", "issueTypeLabel": "이것은", + "vscode": "Visual Studio Code", + "disableExtensions": "모든 확장을 사용하지 않도록 설정하고 창 다시 로드", + "chooseExtension": "확장", "issueTitleLabel": "제목", "issueTitleRequired": "제목을 입력하세요.", "titleLengthValidation": "제목이 너무 깁니다.", @@ -18,13 +21,6 @@ "extensions": "내 확장", "searchedExtensions": "검색된 확장", "settingsSearchDetails": "설정 검색 세부 정보", - "tryDisablingExtensions": "확장을 사용하지 않도록 설정해도 문제 재현이 가능한가요?", - "yes": "예", - "no": "아니요", - "disableExtensionsLabelText": "{0} 후 문제를 재현해 보세요.", - "disableExtensions": "모든 확장을 사용하지 않도록 설정하고 창 다시 로드", - "showRunningExtensionsLabelText": "확장 문제로 의심되면 {0}에서 확장에 대한 문제를 보고하세요.", - "showRunningExtensions": "모든 실행 중인 확장 보기", "details": "상세 내용을 입력하세요.", "loadingData": "데이터 로드 중..." } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/kor/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..d2f76643375 --- /dev/null +++ b/i18n/kor/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "이름" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/kor/src/vs/editor/browser/widget/diffReview.i18n.json index 801e8c450ff..1839bc77e72 100644 --- a/i18n/kor/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/kor/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "닫기", - "header": "다른 항목 {0} / {1}: 원본 {2}, {3}행, 수정 {4}, {5}행", "blankLine": "비어 있음", "equalLine": "원본 {0}, 수정 {1}: {2}", "insertLine": "+ 수정됨 {0}: {1}", diff --git a/i18n/kor/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/kor/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json index b02180c6602..f226af7ac85 100644 --- a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,9 +16,10 @@ "editorIndentGuides": "편집기 들여쓰기 안내선 색입니다.", "editorLineNumbers": "편집기 줄 번호 색입니다.", "editorActiveLineNumber": "편집기 활성 영역 줄번호 색상", + "deprecatedEditorActiveLineNumber": "Id는 사용 되지 않습니다. 대신 'editorLineNumber.activeForeground'를 사용 합니다.", "editorRuler": "편집기 눈금의 색상입니다.", "editorCodeLensForeground": "편집기 코드 렌즈의 전경색입니다.", - "editorBracketMatchBackground": "일치하는 브래킷 뒤의 배경색입니다.", + "editorBracketMatchBackground": "일치하는 괄호 뒤의 배경색", "editorBracketMatchBorder": "일치하는 브래킷 박스의 색상", "editorOverviewRulerBorder": "개요 눈금 경계의 색상입니다.", "editorGutter": "편집기 거터의 배경색입니다. 거터에는 글리프 여백과 행 수가 있습니다.", @@ -28,6 +29,9 @@ "warningBorder": "편집기 내 경고 표시선의 테두리 색입니다.", "infoForeground": "편집기 내 정보 표시선의 전경색입니다.", "infoBorder": "편집기 내 정보 표시선의 테두리 색입니다.", + "hintForeground": "편집기에서 힌트 표시선의 전경색입니다.", + "hintBorder": "편집기에서 힌트 표시선의 테두리 색입니다.", + "overviewRulerRangeHighlight": "범위 강조의 개요 눈금자 표식 색입니다. 이 색은 불투명해야만 내부 장식을 가리지 않습니다.", "overviewRuleError": "오류의 개요 눈금자 마커 색입니다.", "overviewRuleWarning": "경고의 개요 눈금자 마커 색입니다.", "overviewRuleInfo": "정보의 개요 눈금자 마커 색입니다." diff --git a/i18n/kor/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/kor/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..cc5bf67d866 --- /dev/null +++ b/i18n/kor/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "수정 사항 표시({0})", + "quickFix": "수정 사항 표시", + "organizeImports.label": "가져오기 구성" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/kor/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 35229bd6699..7078503b8e1 100644 --- a/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/kor/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -5,5 +5,43 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "Sunday": "일요일", + "Monday": "월요일", + "Tuesday": "화요일", + "Wednesday": "수요일", + "Thursday": "목요일", + "Friday": "금요일", + "Saturday": "토요일", + "SundayShort": "일", + "MondayShort": "월", + "TuesdayShort": "화", + "WednesdayShort": "수", + "ThursdayShort": "목", + "FridayShort": "금", + "SaturdayShort": "토", + "January": "1 월", + "February": "2 월", + "March": "3 월", + "April": "4 월", + "May": "5 월", + "June": "6 월", + "July": "7 월", + "August": "8 월", + "September": "9 월", + "October": "10 월", + "November": "11 월", + "December": "12 월", + "JanuaryShort": "1 월", + "FebruaryShort": "2 월", + "MarchShort": "3 월", + "AprilShort": "4 월", + "MayShort": "5 월", + "JuneShort": "6 월", + "JulyShort": "7 월", + "AugustShort": "8 월", + "SeptemberShort": "9 월", + "OctoberShort": "10 월", + "NovemberShort": "11 월", + "DecemberShort": "12 월" } \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 296e9aa25b5..aaaf9225abd 100644 --- a/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/kor/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "변수에 쓰기와 같은 쓰기 액세스 중 기호의 배경색입니다. 색상은 밑에 깔린 꾸밈을 가리지 않도록 반드시 불투명이 아니어야 합니다.", "wordHighlightBorder": "변수 읽기와 같은 읽기 액세스 중 기호의 테두리 색입니다.", "wordHighlightStrongBorder": "변수에 쓰기와 같은 쓰기 액세스 중 기호의 테두리 색입니다.", + "overviewRulerWordHighlightForeground": "기호 강조의 개요 눈금자 표식 색입니다. 이 색은 불투명해야만 내부 장식을 가리지 않습니다.", + "overviewRulerWordHighlightStrongForeground": "쓰기 액세스 기호 강조의 개요 눈금자 표식 색입니다. 이 색은 불투명해야만 내부 장식을 가리지 않습니다.", "wordHighlight.next.label": "다음 강조 기호로 이동", "wordHighlight.previous.label": "이전 강조 기호로 이동" } \ 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 4542715a33c..9fa2e539d0c 100644 --- a/i18n/kor/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/kor/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "'Developer: Startup Performance' 명령을 사용하여 시작합니다.", "prof-startup": "시작하는 동안 CPU 프로파일러 실행", "disableExtensions": "설치된 모든 확장을 사용하지 않도록 설정합니다.", - "inspect-extensions": "디버깅 및 확장 프로파일링을 허용합니다. 연결 uri에 대한 개발자 도구를 확인하십시오.", - "inspect-brk-extensions": "시작 후 일시 중시된 확장 호스트에서 디버깅 및 확장 프로파일링을 허용합니다. 연결 URL은 개발자 도구를 확인하세요.", "disableGPU": "GPU 하드웨어 가속을 사용하지 않도록 설정합니다.", "uploadLogs": "현재의 세션에서 안전한 종점으로 로그 업로드", "maxMemory": "윈도우에 대한 최대 메모리 크기 (단위 MB).", diff --git a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index deafbdf4de7..29a28e29329 100644 --- a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,12 +14,15 @@ "errorInstallingDependencies": "의존성 설치 중 오류가 발생했습니다. {0}", "MarketPlaceDisabled": "Marketplace를 사용할 수 없습니다.", "removeError": "확장을 제거하는 동안 오류가 발생했습니다. {0}. 다시 시도하기 전에 VS Code를 종료하고 다시 시작하세요.", + "Not a Marketplace extension": "마켓플레이스 확장만 다시 설치할 수 있습니다.", "notFoundCompatible": "'{0}'을(를) 설치할 수 없습니다; VS Code '{1}'과 호환되는 버전이 없습니다.", "malicious extension": "문제가 있다고 보고되었으므로 확장을 설치할 수 없습니다.", "notFoundCompatibleDependency": "VS Code의 현재 버전 '{1}'과(와) 호환되는 종속된 확장 '{0}'을(를) 찾을 수 없으므로 설치할 수 없습니다.", "quitCode": "확장을 설치할 수 없습니다. 다시 설치하기 위해 VS Code를 종료하고 다시 시작하십시오.", "exitCode": "확장을 설치할 수 없습니다. 다시 설치하기 전에 VS 코드를 종료한 후 다시 시작하십시오. ", "uninstallDependeciesConfirmation": "'{0}'만 제거할까요, 아니면 종속성도 제거할까요?", + "uninstallOnly": "확장만", + "uninstallAll": "모두 제거", "uninstallConfirmation": "'{0}'을(를) 제거할까요?", "ok": "확인", "singleDependentError": "확장 '{0}'을(를) 제거할 수 없습니다. 확장 '{1}'이(가) 이 확장에 종속됩니다.", diff --git a/i18n/kor/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/kor/src/vs/platform/extensions/node/extensionValidator.i18n.json index a87a8f4f639..660bdbdaf9c 100644 --- a/i18n/kor/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/kor/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "`engines.vscode` 값 {0}을(를) 구문 분석할 수 없습니다. ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x 등을 사용하세요.", "versionSpecificity1": "`engines.vscode`({0})에 지정된 버전이 명확하지 않습니다. vscode 버전이 1.0.0 이전이면 최소한 원하는 주 버전과 부 버전을 정의하세요( 예: ^0.10.0, 0.10.x, 0.11.0 등).", "versionSpecificity2": "`engines.vscode`({0})에 지정된 버전이 명확하지 않습니다. vscode 버전이 1.0.0 이후이면 최소한 원하는 주 버전을 정의하세요(예: ^1.10.0, 1.10.x, 1.x.x, 2.x.x 등).", "versionMismatch": "확장이 Code {0}과(와) 호환되지 않습니다. 확장에 {1}이(가) 필요합니다." diff --git a/i18n/kor/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/kor/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index cac1d48881f..78585e502ec 100644 --- a/i18n/kor/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/kor/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "{0} 설치가 손상된 것 같습니다. 다시 설치하세요.", "integrity.moreInformation": "추가 정보", - "integrity.dontShowAgain": "다시 표시 안 함", - "integrity.prompt": "{0} 설치가 손상된 것 같습니다. 다시 설치하세요." + "integrity.dontShowAgain": "다시 표시 안 함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/list/browser/listService.i18n.json b/i18n/kor/src/vs/platform/list/browser/listService.i18n.json index 26cbc3957bc..8b32c5188c5 100644 --- a/i18n/kor/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/kor/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "마우스로 트리와 목록의 항목을 다중 선택에 추가할 때 사용할 한정자입니다(예를 들어 탐색기에서 편집기와 SCM 보기를 여는 경우). `ctrlCmd`는 Windows와 Linux에서 `Control`로 매핑되고 macOS에서 `Command`로 매핑됩니다. '옆에서 열기' 마우스 제스처(지원되는 경우)는 다중 선택 한정자와 충돌하지 않도록 조정됩니다.", "openMode.singleClick": "마우스를 한 번 클릭하여 항목을 엽니다.", "openMode.doubleClick": "마우스를 두 번 클릭하여 항목을 엽니다.", - "openModeModifier": "트리와 목록에서 마우스를 사용하여 항목을 여는 방법을 제어합니다(지원되는 경우). 마우스을 한 번 클릭하여 항목을 열려면 `singleClick` 으로 설정하고 마우스 두 번 클릭을 통해서만 열려면 `doubleClick`으로 설정합니다. 트리에서 하위 항목이 있는 상위 항목의 경우 이 설정은 상위 항목을 한 번 클릭으로 확장할지 두 번 클릭으로 확장할지를 제어합니다. 일부 트리와 목록에서는 이 설정을 적용할 수 없는 경우 무시하도록 선택할 수 있습니다. " + "openModeModifier": "트리와 목록에서 마우스를 사용하여 항목을 여는 방법을 제어합니다(지원되는 경우). 마우스을 한 번 클릭하여 항목을 열려면 `singleClick` 으로 설정하고 마우스 두 번 클릭을 통해서만 열려면 `doubleClick`으로 설정합니다. 트리에서 하위 항목이 있는 상위 항목의 경우 이 설정은 상위 항목을 한 번 클릭으로 확장할지 두 번 클릭으로 확장할지를 제어합니다. 일부 트리와 목록에서는 이 설정을 적용할 수 없는 경우 무시하도록 선택할 수 있습니다. ", + "horizontalScrolling setting": "워크벤치에서 수평 스크롤 지원 여부를 제어 합니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json index 0a927c21be7..2e819fd951d 100644 --- a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "인라인 병합 충돌에서 헤더 및 스플리터의 테두리 색입니다.", "overviewRulerCurrentContentForeground": "인라인 병합 충돌에서 현재 개요 눈금 전경색입니다.", "overviewRulerIncomingContentForeground": "인라인 병합 충돌에서 수신 개요 눈금 전경색입니다.", - "overviewRulerCommonContentForeground": "인라인 병합 충돌에서 공통 과거 개요 눈금 전경색입니다." + "overviewRulerCommonContentForeground": "인라인 병합 충돌에서 공통 과거 개요 눈금 전경색입니다.", + "overviewRulerFindMatchForeground": "일치하는 항목 찾기의 개요 눈금자 표식 색입니다. 이 색은 불투명해야만 내부 장식을 가리지 않습니다.", + "overviewRulerSelectionHighlightForeground": "선택 영역 강조의 개요 눈금자 표식 색입니다. 이 색은 불투명해야만 내부 장식을 가리지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/kor/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..354f883f4b8 --- /dev/null +++ b/i18n/kor/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "속성 `{0}`은(는) 필수이며 `string` 형식이어야 합니다.", + "showViewlet": "{0} 표시", + "view": "보기" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/kor/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index e621977a343..224d3705a5f 100644 --- a/i18n/kor/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/kor/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "뷰를 에디터에 적용합니다.", "views.explorer": "탐색기 뷰", "views.debug": "디버그 보기", - "locationId.invalid": "`{0}`은(는) 유효한 뷰 위치가 아닙니다.", "duplicateView1": "위치 '{1}'에서 동일한 ID '{0}'(으)로된 여러 개의 보기를 등록할 수 없습니다.", "duplicateView2": "ID `{0}`이(가) 포함된 뷰가 위치 `{1}`에 이미 등록되어 있습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 45094f9c862..c4d54f1034d 100644 --- a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "저장 시 {0}ms 후에 서식 지정이 중단됨", + "timeout.onWillSave": "1750ms 후에 onWillSaveTextDocument-event가 중단됨", "saveParticipants": "실행중인 저장 관계자..." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 4a956b0bd25..35229bd6699 100644 --- a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "webview 편집기" + ] } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json index 35229bd6699..b3d4a235518 100644 --- a/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json +++ b/i18n/kor/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "extensionSource": "{0} (확장)" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index c08ed22ae06..54b686eb140 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "화면 읽기 프로그램을 사용하지 않는 경우 `editor.accessibilitySupport` 설정을 \"off\"로 변경하세요.", "disableTabMode": "접근성 모드 사용 안 함", "gotoLine": "줄 이동", - "indentation": "들여쓰기", "selectEncoding": "인코딩 선택", "selectEOL": "줄 시퀀스의 끝 선택", "selectLanguageMode": "언어 모드 선택", diff --git a/i18n/kor/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 2eb6210e93a..2a9e8323db8 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0}MB", "sizeGB": "{0}GB", "sizeTB": "{0}TB", - "largeImageError": "이미지의 파일 크기가 너무 커서(>1MB) 편집기에서 표시할 수 없습니다. ", "resourceOpenExternalButton": " 외부 프로그램으로 이미지를 열까요?", - "nativeBinaryError": "파일이 이진이거나 매우 크거나 지원되지 않는 텍스트 인코딩을 사용하기 때문에 편집기에서 표시되지 않습니다.", "zoom.action.fit.label": "전체 이미지", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 26c8431a513..68b015e8455 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "새 알림 없음", "notifications": "알림", "notificationsToolbar": "알림 센터 작업", "notificationsList": "알림 목록" diff --git a/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..e9877e526b5 --- /dev/null +++ b/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "확인" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json index 30e974a33fc..641eb3e2062 100644 --- a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "창", "window.openFilesInNewWindow.on": "파일이 새 창에서 열립니다.", "window.openFilesInNewWindow.off": "파일이 파일의 폴더가 열려 있는 창 또는 마지막 활성 창에서 열립니다.", + "window.openFilesInNewWindow.defaultMac": "Dock 또는 Finder를 통해 파일을 연 경우를 제외하고 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.", + "window.openFilesInNewWindow.default": "응용 프로그램 내에서 선택(예: 파일 메뉴를 통해)하는 경우를 제외하고 파일이 새 창에서 열립니다. ", + "openFilesInNewWindowMac": "파일을 새 창에서 열지 여부를 제어합니다.\n- default: Dock 또는 Finder를 통해 파일을 연 경우를 제외하고, 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.\n- on: 파일이 새 창에서 열립니다.\n- off: 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.\n이 설정이 무시되는 경우도 있을 수 있습니다(예: -new-window 또는 reuse-window 명령줄 옵션을 사용할 경우).", + "openFilesInNewWindow": "파일을 새 창에서 열지 여부를 제어합니다.\n- default: 응용 프로그램 내에서 [파일] 메뉴 등을 통해 파일을 선택하는 경우를 제외하고, 파일이 새 창에서 열립니다.\n- on: 파일이 새 창에서 열립니다.\n- off: 파일이 파일의 폴더가 열린 창 또는 마지막 활성 창에서 열립니다.\n이 설정이 무시되는 경우도 있을 수 있습니다(예: -new-window 또는 reuse-window 명령줄 옵션을 사용할 경우).", "window.openFoldersInNewWindow.on": "폴더가 새 창에서 열립니다.", "window.openFoldersInNewWindow.off": "폴더가 마지막 활성 창을 바꿉니다.", "window.openFoldersInNewWindow.default": "폴더를 응용 프로그램 내에서 선택(예: 파일 메뉴를 통해)하는 경우를 제외하고 폴더가 새 창에서 열립니다.", "openFoldersInNewWindow": "폴더를 새 창에서 열지, 마지막 활성 창과 바꿀지를 제어합니다.\n- default: 응용 프로그램 내에서 [파일] 메뉴 등을 통해 폴더를 선택하는 경우를 제외하고, 폴더는 새 창에서 열립니다.\n- on: 폴더가 새 창에서 열립니다.\n- off: 폴더가 마지막 활성 창을 대체합니다\n이 설정이 무시되는 경우도 있을 수 있습니다(예: -new-window 또는 -reuse-window 명령줄 옵션을 사용할 경우).", + "window.openWithoutArgumentsInNewWindow.on": "새로운 빈 창 열기", + "window.openWithoutArgumentsInNewWindow.off": "실행 중인 마지막 활성 인스턴스에 포커스", + "openWithoutArgumentsInNewWindow": "인수 없이 두 번째 인스턴스를 시작할 때 새로운 빈 창을 열지 또는 실행 중인 마지막 인스턴스에 포커스가 생길지 여부를 제어합니다.\n- on: 새로운 빈 창을 엽니다.\n- off: 실행 중인 마지막 활성 인스턴스에 포커스가 생깁니다.\n이 설정이 무시되는 경우도 있을 수 있습니다(예: -new-window 또는 -reuse-window 명령줄 옵션을 사용할 경우).", "window.reopenFolders.all": "모든 창을 다시 엽니다.", "window.reopenFolders.folders": "모든 폴더를 다시 엽니다. 빈 작업 영역은 복원되지 않습니다.", "window.reopenFolders.one": "마지막 활성 창을 다시 엽니다.", @@ -56,6 +63,7 @@ "restoreWindows": "다시 시작한 이후에 창을 다시 여는 방법을 설정합니다. 'none'을 선택하면 항상 빈 작업 영역으로 시작하고 'one'을 선택하면 마지막으로 작업한 창이 다시 열리고 'folders'를 선택하면 열었던 폴더가 포함된 모든 창이 다시 열리며 'all'을 선택하면 지난 세션의 모든 창이 다시 열립니다.", "restoreFullscreen": "창이 전체 화면 모드에서 종료된 경우 창을 전체 화면 모드로 복원할지 여부를 제어합니다.", "zoomLevel": "창의 확대/축소 수준을 조정합니다. 원래 크기는 0이고 각 상한 증분(예: 1) 또는 하한 증분(예: -1)은 20% 더 크거나 더 작게 확대/축소하는 것을 나타냅니다. 10진수를 입력하여 확대/축소 수준을 세부적으로 조정할 수도 있습니다.", + "title": "활성 편집기를 기반으로 창 제목을 제어합니다. 변수는 컨텍스트를 기준으로 대체됩니다.\n${activeEditorShort}: 파일 이름(예: myFile.txt)\n${activeEditorMedium}: 작업 영역 폴더를 기준으로 하는 파일에 대한 상대 경로(예: myFolder/myFile.txt)\n${activeEditorLong}: 파일의 전체 경로(예: /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: 파일이 포함된 작업 영역 폴더의 이름(예: myFolder)\n${folderPath}: 파일이 포함된 작업 영역 폴더의 파일 경로(예: /Users/Development/myFolder)\n${rootName}: 작업 영역의 이름(예: myFolder or myWorkspace)\n${rootPath}: 작업 영역의 파일 경로(예: /Users/Development/myWorkspace)\n${appName}: 예: VS Code\n${dirty}: 활성 편집기가 더티인 경우 더티 표시기\n${separator}: 값 또는 정적 텍스트가 있는 변수로 둘러싸인 경우에만 표시되는 조건부 구분 기호(\" - \")", "window.newWindowDimensions.default": "화면 가운데에서 새 창을 엽니다.", "window.newWindowDimensions.inherit": "마지막 활성 창과 동일한 크기로 새 창을 엽니다.", "window.newWindowDimensions.maximized": "최대화된 새 창을 엽니다.", @@ -71,6 +79,7 @@ "autoDetectHighContrast": "사용하도록 설정한 경우 Windows에서 고대비 테마를 사용 중이면 고대비 테마로 자동으로 변경되고 Windows 고대비 테마를 해제하면 어두운 테마로 변경됩니다.", "titleBarStyle": "창 제목 표시줄의 모양을 조정합니다. 변경 내용을 적용하려면 전체 다시 시작해야 합니다.", "window.nativeTabs": "macOS Sierra 창 탭을 사용하도록 설정합니다. 변경\n 내용을 적용하려면 전체 다시 시작해야 하고, 기본 탭에서\n 사용자 지정 제목 표시줄 스타일(구성된 경우)을 비활성화합니다.", + "window.smoothScrollingWorkaround": "최소화된 VS Code 창을 복원한 후 더 이상 원활하게 스크롤되지 않으면 이 해결 방법을 사용하도록 설정하세요. 이 해결 방법은 Microsoft의 Surface 장치와 같이 정밀 트랙 패드가 장착된 장치에서 스크롤이 지연되기 시작하는 문제(https://github.com/Microsoft/vscode/issues/13612)를 해결합니다. 이 해결 방법을 사용하도록 설정하면 최소화된 상태에서 창을 복원한 후 약간의 레이아웃 깜박거림이 발생할 수 있지만 그 외의 해는 없습니다.", "zenModeConfigurationTitle": "Zen 모드", "zenMode.fullScreen": "Zen 모드를 켜면 워크벤치도 전체 화면 모드로 전환되는지 여부를 제어합니다.", "zenMode.centerLayout": "Zen 모드를 켜면 레이아웃도 가운데로 맞춰지는지 여부를 제어합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 8a6f29b83bf..88ab766249d 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "중단점 편집...", + "breakpoint": "중단점", "functionBreakpointsNotSupported": "이 디버그 형식은 함수 중단점을 지원하지 않습니다.", "functionBreakpointPlaceholder": "중단할 함수", "functionBreakPointInputAriaLabel": "함수 중단점 입력", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "확인되지 않은 중단점", "functionBreakpointUnsupported": "이 디버그 형식은 함수 중단점을 지원하지 않습니다.", "breakpointDirtydHover": "확인되지 않은 중단점입니다. 파일이 수정되었습니다. 디버그 세션을 다시 시작하세요.", + "logBreakpointUnsupported": "이 디버그 형식에서 지원되지 않는 로그 지점", "conditionalBreakpointUnsupported": "이 디버그 형식에서 지원되지 않는 조건부 중단점", "hitBreakpointUnsupported": "이 디버그 형식은 조건부 중단점 적중을 지원하지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 782e05fd2a4..a942f921e39 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "디버그: 중단점 설정/해제", "conditionalBreakpointEditorAction": "디버그: 조건부 중단점 추가...", + "logPointEditorAction": "디버그: 로그 지점 추가...", "runToCursor": "커서까지 실행", "debugEvaluate": "디버그: 평가", "debugAddToWatch": "디버그: 조사식에 추가", diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 484e21f6e54..37973e78856 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "적중 횟수 조건이 충족될 경우 중단합니다. 적용하려면 'Enter' 키를 누르고 취소하려면 'Esc' 키를 누릅니다.", "breakpointWidgetExpressionPlaceholder": "식이 true로 계산될 경우 중단합니다. 적용하려면 'Enter' 키를 누르고 취소하려면 'Esc' 키를 누릅니다.", - "breakpointWidgetHitCountAriaLabel": "적중 횟수가 충족되는 경우에만 프로그램이 여기서 중지됩니다. 수락하려면 <Enter> 키를 누르고, 취소하려면 <Esc> 키를 누르세요.", - "breakpointWidgetAriaLabel": "이 조건이 true인 경우에만 프로그램이 여기서 중지됩니다. 수락하려면 <Enter> 키를 누르고, 취소하려면 <Esc> 키를 누르세요.", "expression": "식", - "hitCount": "적중 횟수" + "hitCount": "적중 횟수", + "logMessage": "로그 메시지" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 31d9ef02895..2b16fc7aa13 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "고유한 구성 이름을 사용하세요.", "app.launch.json.compound.folder": "복합형 항목이 있는 폴더의 이름입니다.", "app.launch.json.compounds.configurations": "이 복합의 일부로 시작되는 구성의 이름입니다.", - "debugNoType": "디버그 어댑터 '형식'은 생략할 수 없으며 '문자열' 형식이어야 합니다.", "selectDebug": "환경 선택", "DebugConfig.failed": "'.vscode' 폴더({0}) 내에 'launch.json' 파일을 만들 수 없습니다.", "workspace": "작업 영역", diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 07989327ee8..f17252c082d 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "중단점 편집...", - "disableBreakpoint": "중단점 사용 안 함", - "enableBreakpoint": "중단점 사용", + "breakpoint": "중단점", "removeBreakpoints": "중단점 제거", "removeBreakpointOnColumn": "{0} 열에서 중단점 제거", "removeLineBreakpoint": "줄 중단점 제거", @@ -21,6 +19,8 @@ "enableBreakpoints": "{0} 열에서 중단점 사용", "enableBreakpointOnLine": "줄 중단점 사용", "addBreakpoint": "중단점 추가", - "conditionalBreakpoint": "조건부 중단점 추가...", + "addConditionalBreakpoint": "조건부 중단점 추가...", + "addLogPoint": "로그 지점 추가...", + "cancel": "취소", "addConfiguration": "구성 추가..." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 3b9db932452..f0485e490c5 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,5 +28,7 @@ "preLaunchTaskExitCode": "preLaunchTask '{0}'이(가) {1} 종료 코드와 함께 종료되었습니다.", "showErrors": "오류 표시", "noFolderWorkspaceDebugError": "활성 파일은 디버그할 수 없습니다. 이 파일이 디스크에 저장되어 있고 해당 파일 형식에 대한 디버그 확장이 설치되어 있는지 확인하세요.", - "cancel": "취소" + "cancel": "취소", + "DebugTaskNotFound": "작업 '{0}' 을(를) 찾을 수 없습니다.", + "taskNotTracked": "작업 '{0}' 을(를) 추적할 수 없습니다." } \ No newline at end of file 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 7818afada97..742e35e3d50 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "추가 정보", - "unableToLaunchDebugAdapter": "'{0}'에서 디버그 어댑터를 시작할 수 없습니다.", - "unableToLaunchDebugAdapterNoArgs": "디버그 어댑터를 시작할 수 없습니다.", - "stoppingDebugAdapter": "{0}. 디버그 어댑터를 중지합니다.", "debugAdapterCrash": "디버그 어댑터 프로세스가 예기치 않게 종료되었습니다." } \ No newline at end of file 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 75d5a498631..e49f8a732d5 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "디버그 어댑터 실행 파일 '{0}'이(가) 없습니다.", "debugAdapterCannotDetermineExecutable": "디버그 어댑터 '{0}'에 대한 실행 파일을 확인할 수 없습니다.", - "launch.config.comment1": "IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.", - "launch.config.comment2": "기존 특성에 대한 설명을 보려면 가리킵니다.", - "launch.config.comment3": "자세한 내용을 보려면 {0}을(를) 방문하세요.", - "debugType": "구성의 형식입니다.", - "debugTypeNotRecognised": "디버그 형식이 인식되지 않습니다. 해당하는 디버그 확장을 설치하고 사용하도록 설정했는지 확인하세요.", - "node2NotSupported": "\"node2\"는 더 이상 지원되지 않습니다. 대신 \"node\"를 사용하고 \"protocol\" 특성을 \"inspector\"로 설정하세요.", - "debugName": "구성 이름이며, 구성 시작 드롭다운 메뉴에 표시됩니다.", - "debugRequest": "구성 형식을 요청합니다. \"시작\" 또는 \"연결\"일 수 있습니다.", - "debugServer": "디버그 확장 배포 전용입니다. 포트가 지정된 경우 VS Code에서는 서버 모드로 실행하는 디버그 어댑터에 연결을 시도합니다.", - "debugPrelaunchTask": "디버그 세션이 시작되기 이전에 실행할 작업입니다.", - "debugWindowsConfiguration": "Windows 특정 시작 구성 특성입니다.", - "debugOSXConfiguration": "OS X 특정 시작 구성 특성입니다.", - "debugLinuxConfiguration": "Linux 특정 시작 구성 특성입니다.", - "deprecatedVariables": "'env.', 'config.' 및 'command.'는 사용되지 않습니다. 대신 'env:', 'config:' 및 'command:'를 사용하세요." + "unableToLaunchDebugAdapter": "'{0}'에서 디버그 어댑터를 시작할 수 없습니다.", + "unableToLaunchDebugAdapterNoArgs": "디버그 어댑터를 시작할 수 없습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..ded2c6ad581 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.", + "launch.config.comment2": "기존 특성에 대한 설명을 보려면 가리킵니다.", + "launch.config.comment3": "자세한 내용을 보려면 {0}을(를) 방문하세요.", + "debugType": "구성의 형식입니다.", + "debugTypeNotRecognised": "디버그 형식이 인식되지 않습니다. 해당하는 디버그 확장을 설치하고 사용하도록 설정했는지 확인하세요.", + "node2NotSupported": "\"node2\"는 더 이상 지원되지 않습니다. 대신 \"node\"를 사용하고 \"protocol\" 특성을 \"inspector\"로 설정하세요.", + "debugName": "구성 이름이며, 구성 시작 드롭다운 메뉴에 표시됩니다.", + "debugRequest": "구성 형식을 요청합니다. \"시작\" 또는 \"연결\"일 수 있습니다.", + "debugServer": "디버그 확장 배포 전용입니다. 포트가 지정된 경우 VS Code에서는 서버 모드로 실행하는 디버그 어댑터에 연결을 시도합니다.", + "debugPrelaunchTask": "디버그 세션이 시작되기 이전에 실행할 작업입니다.", + "debugPostDebugTask": "디버그 세션 종료 후 실행할 작업입니다.", + "debugWindowsConfiguration": "Windows 특정 시작 구성 특성입니다.", + "debugOSXConfiguration": "OS X 특정 시작 구성 특성입니다.", + "debugLinuxConfiguration": "Linux 특정 시작 구성 특성입니다.", + "deprecatedVariables": "'env.', 'config.' 및 'command.'는 사용되지 않습니다. 대신 'env:', 'config:' 및 'command:'를 사용하세요." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..850e1c758d6 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code 콘솔", + "mac.terminal.script.failed": "스크립트 '{0}'이(가) 실패했습니다(종료 코드: {1}).", + "mac.terminal.type.not.supported": "'{0}'이(가) 지원되지 않습니다.", + "press.any.key": "계속하려면 아무 키나 누르세요.", + "linux.term.failed": "'{0}'에서 실패했습니다(종료 코드: {1})." +} \ 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 d1ad83723cb..3b79008f444 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 @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "권장 확장 구성(작업 영역 폴더)", "malicious tooltip": "이 확장은 문제가 있다고 보고되었습니다.", "malicious": "악성", + "disabled": "사용 안 함", + "disabled globally": "사용 안 함", + "disabled workspace": "이 작업 영역에 대해 사용 안 함", "disableAll": "설치된 모든 확장 사용 안 함", "disableAllWorkspace": "이 작업 영역에 대해 설치된 모든 확장 사용 안 함", "enableAll": "모든 확장 사용", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 73fe67dbadf..1de6037ae75 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -8,6 +8,7 @@ ], "name": "확장 이름", "extension id": "확장 ID", + "preview": "미리 보기", "builtin": "기본 제공", "publisher": "게시자 이름", "install count": "설치 수", @@ -35,7 +36,6 @@ "view location": "위치", "localizations": "지역화({0})", "localizations language id": "언어 ID", - "localizations localized language name": "언어 이름(지역화됨)", "colorThemes": "색 테마({0})", "iconThemes": "아이콘 테마({0})", "colors": "색({0})", @@ -44,6 +44,8 @@ "defaultLight": "밝게 기본값", "defaultHC": "고대비 기본값", "JSON Validation": "JSON 유효성 검사({0})", + "fileMatch": "파일 일치", + "schema": "스키마", "commands": "명령({0})", "command name": "이름", "keyboard shortcuts": "바로 가기 키(&&K)", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index c2d64485c12..b497dd8ac6a 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "이 확장은 현재 작업 영역 사용자가 권장합니다.", "reallyRecommended2": "이 파일 형식에 대해 '{0}' 확장이 권장됩니다.", "reallyRecommendedExtensionPack": "이 파일 형식에 대해 '{0}' 확장 팩이 권장됩니다.", - "showRecommendations": "권장 사항 표시", "install": "설치", + "showRecommendations": "권장 사항 표시", "showLanguageExtensions": "Marketplace에 '.{0}' 파일이 지원되는 확장이 있습니다.", "workspaceRecommended": "이 작업 영역에 확장 권장 사항이 있습니다.", "installAll": "모두 설치", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 0a1652fb592..b4035d78429 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "키 바인딩 간 충돌을 피하기 위해 다른 키 맵({0})을 사용하지 않도록 설정할까요?", "yes": "예", - "no": "아니요", - "betterMergeDisabled": "Better Merge 확장이 이제 빌드되었습니다. 설치된 확장은 사용하지 않도록 설정되었으며 제거할 수 있습니다.", - "uninstall": "제거" + "no": "아니요" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index d88f38093be..adaba790ee3 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "권장", "otherRecommendedExtensions": "기타 권장 사항", "workspaceRecommendedExtensions": "작업 영역 권장 사항", + "builtInExtensions": "기능", + "builtInThemesExtensions": "테마", "searchExtensions": "마켓플레이스에서 확장 검색", "sort by installs": "정렬 기준: 설치 수", "sort by rating": "정렬 기준: 등급", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 42e37cef1b1..9e37e959f54 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,14 +27,17 @@ "confirmMoveTrashMessageMultiple": "다음 {0}개 파일을 삭제하시겠습니까?", "confirmMoveTrashMessageFolder": "'{0}'과(와) 해당 내용을 삭제할까요?", "confirmMoveTrashMessageFile": "'{0}'을(를) 삭제할까요?", + "undoBin": "휴지통에서 복원할 수 있습니다.", + "undoTrash": "휴지통에서 복원할 수 있습니다.", "doNotAskAgain": "이 메시지를 다시 표시 안 함", "confirmDeleteMessageMultiple": "다음 {0}개 파일을 영구히 삭제하시겠습니까?", "confirmDeleteMessageFolder": "'{0}'과(와) 해당 내용을 영구히 삭제할까요?", "confirmDeleteMessageFile": "'{0}'을(를) 영구히 삭제할까요?", "irreversible": "이 작업은 취소할 수 없습니다.", + "binFailed": "휴지통을 사용하여 삭제하지 못했습니다. 대신 영구히 삭제하시겠습니까?", + "trashFailed": "휴지통을 사용하여 삭제하지 못했습니다. 대신 영구히 삭제하시겠습니까?", "deletePermanentlyButtonLabel": "영구 삭제 (&&D)", "retryButtonLabel": "다시 시도 (&&R)", - "importFiles": "파일 가져오기", "confirmOverwrite": "이름이 같은 파일 또는 폴더가 대상 폴더에 이미 있습니다. 덮어쓸까요?", "replaceButtonLabel": "바꾸기(&&R)", "fileIsAncestor": "붙여 넣을 파일이 대상 폴더의 상위 항목입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 60fac1e96fa..5f7b04e2b00 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "새 파일에 할당되는 기본 언어 모드입니다.", "editorConfigurationTitle": "편집기", "formatOnSave": "파일 저장 시 서식을 지정합니다. 포맷터를 사용할 수 있어야 하며, 파일이 자동으로 저장되지 않아야 하고, 편집기가 종료되지 않아야 합니다.", + "formatOnSaveTimeout": "저장 시 서식 지정의 시간 제한. FormatOnSave 명령에 대한 시간 제한을 밀리초로 지정합니다. 지정된 시간 제한보다 오래 걸리는 명령은 취소됩니다.", "explorerConfigurationTitle": "파일 탐색기", "openEditorsVisible": "열려 있는 편집기 창에 표시되는 편집기 수입니다.", "autoReveal": "탐색기에서 파일을 열 때 자동으로 표시하고 선택할지를 제어합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index b6d91a6d575..39635da205e 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "파일 이름을 입력합니다. 확인하려면 Enter 키를 누르고, 취소하려면 Esc 키를 누릅니다.", - "constructedPath": "**{1}**에 {0} 만들기", "filesExplorerViewerAriaLabel": "{0}, 파일 탐색기", "dropFolders": "작업 영역에 폴더를 추가하시겠습니까?", "dropFolder": "작업 영역에 폴더를 추가하시겠습니까?", "addFolders": "폴더 추가(&&A)", "addFolder": "폴더 추가(&&A)", + "confirmRootsMove": "작업 영역에서 다중 루트 폴더의 순서를 변경하시겠습니까? ", "confirmMultiMove": "다음 {0}개 파일을 이동하시겠습니까?", + "confirmRootMove": "작업 영역에서 루트 폴더 '{0}'의 순서를 변경하시겠습니까? ", "confirmMove": "'{0}'을(를) 이동하시겠습니까?", "doNotAskAgain": "이 메시지를 다시 표시 안 함", "moveButtonLabel": "이동(&&M)", diff --git a/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index d95a0ea15d2..2fdfcbff78e 100644 --- a/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "VS Code의 UI 언어를 {0}(으)로 변경하고 다시 시작하시겠습니까?", "yes": "예", "no": "아니요", - "doNotAskAgain": "이 메시지를 다시 표시 안 함", + "neverAgain": "다시 표시 안 함", "JsonSchema.locale": "사용할 UI 언어입니다.", "vscode.extension.contributes.localizations": "편집기에 지역화를 적용합니다.", "vscode.extension.contributes.localizations.languageId": "표시 문자열이 번역되는 언어의 ID입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 5ea2aa6a147..dae3babf1ff 100644 --- a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "총 {0}개 문제", - "filteredProblems": "{1}개 중 {0}개 문제 표시" + "totalProblems": "총 {0}개 문제" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index a28f9554902..3efd6d563c7 100644 --- a/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "문제", "markers.panel.aria.label.problems.tree": "파일별로 그룹화된 문제", "markers.panel.no.problems.build": "지금까지 작업 영역에서 문제가 감지되지 않았습니다.", - "markers.panel.no.problems.filters": "제공된 필터 기준으로 결과를 찾을 수 없습니다.", "markers.panel.action.filter": "문제 필터링", - "markers.panel.filter.placeholder": "형식 또는 텍스트로 필터링", + "markers.panel.filter.ariaLabel": "문제 필터링", "markers.panel.filter.errors": "오류", "markers.panel.filter.warnings": "경고", "markers.panel.filter.infos": "정보", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "알 수 없음 {0}개", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0}에 {1}개의 문제가 있음", + "problems.tree.aria.label.marker.relatedInformation": " 이 문제에는 {0} 위치에 대한 참조가 있습니다.", + "problems.tree.aria.label.error.marker": "{0}에 의해 오류 발생: 줄 {2} 및 문자 {3}.{4}의 {1}", + "problems.tree.aria.label.error.marker.nosource": "오류: 줄 {1} 및 문자 {2}의 {0}.{3}", + "problems.tree.aria.label.warning.marker": "{0}에 의해 경고 발생: 줄 {2} 및 문자 {3}의 {1}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "경고: 줄 {1} 및 문자 {2}의 {0}.{3}", + "problems.tree.aria.label.info.marker": "{0}에 의해 정보가 생성됨: 줄 {2} 및 문자 {3}의 {1}.{4}", + "problems.tree.aria.label.info.marker.nosource": "정보: 줄 {1} 및 문자 {2}의 {0}.{3}", + "problems.tree.aria.label.marker": "{0}에 의해 문제 발생: 줄 {2} 및 문자 {3}의 {1}.{4}", + "problems.tree.aria.label.marker.nosource": "문제: 줄 {1} 및 문자 {2}의 {0}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{3}에서 줄 {1} 및 문자 {2}의 {0}", "errors.warnings.show.label": "오류 및 경고 표시" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/kor/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 17ffb17a533..bce61a36cfe 100644 --- a/i18n/kor/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "출력 설정/해제", "clearOutput": "출력 내용 지우기", "toggleOutputScrollLock": "출력 스크롤 잠금 설정/해제", - "switchToOutput.label": "출력으로 전환" + "switchToOutput.label": "출력으로 전환", + "openInLogViewer": "로그 파일 열기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index bb2fd60239e..1b45ff7d927 100644 --- a/i18n/kor/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "출력", "logViewer": "로그 표시기", "viewCategory": "보기", - "clearOutput.label": "출력 내용 지우기" + "clearOutput.label": "출력 내용 지우기", + "openActiveLogOutputFile": "보기: 활성 로그 출력 파일 열기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index e80e5a7a2f1..6a6e7f15271 100644 --- a/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "바로 가기 키(&&K)", + "showDefaultKeybindings": "기본 키 바인딩 표시", + "showUserKeybindings": "사용자 키 바인딩 표시", "SearchKeybindings.AriaLabel": "키 바인딩 검색", "SearchKeybindings.Placeholder": "키 바인딩 검색", "sortByPrecedene": "우선 순위별 정렬", diff --git a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index 7aa0e3bd202..96e3df98eee 100644 --- a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "원시 기본 설정 열기", + "openSettings": "설정 열기", "openGlobalSettings": "사용자 설정 열기", "openGlobalKeybindings": "바로 가기 키 열기", "openGlobalKeybindingsFile": "바로 가기 키 파일 열기", 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 845d9b2416b..4839ff6ed8b 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 @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "기본 설정", "SearchSettingsWidget.AriaLabel": "설정 검색", "SearchSettingsWidget.Placeholder": "설정 검색", "noSettingsFound": "결과 없음", diff --git a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 2af08d6ae4a..952972db109 100644 --- a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "\"{0}\" 확장 표시", "editTtile": "편집", "replaceDefaultValue": "설정에서 바꾸기", - "copyDefaultValue": "설정에 복사", - "unsupportedPHPExecutablePathSetting": "이 설정은 사용자 설정이어야 합니다. 작업 영역에 대해 PHP를 구성하려면 PHP 파일을 열고 상태 표시줄에서 'PHP 경로'를 클릭합니다.", - "unsupportedWorkspaceSetting": "이 설정은 사용자 설정이어야 합니다.", - "unsupportedWorkbenchSetting": "이 설정은 지금 적용할 수 없으며 이 폴더를 직접 열 경우에 적용됩니다.", - "unsupportedWorkbenchSettingDevMode": "현재 이 설정을 적용할 수 없습니다. 등록하는 동안 범위를 '리소스'로 정의하거나 이 폴더를 직접 여는 경우 적용됩니다." + "copyDefaultValue": "설정에 복사" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json index b5c27aa50bb..6dd3b8d0504 100644 --- a/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -10,7 +10,6 @@ "previousSearchIncludePattern": "이전 검색 포함 패턴 표시", "nextSearchTerm": "다음 검색어 표시", "previousSearchTerm": "이전 검색어 표시", - "showSearchViewlet": "검색 표시", "findInFiles": "파일에서 찾기", "replaceInFiles": "파일에서 바꾸기", "RefreshAction.label": "새로 고침", diff --git a/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json index 863a56d6989..c98e307c23b 100644 --- a/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "검색 세부 정보 설정/해제", + "searchScope.includes": "포함할 파일", + "label.includes": "패턴 포함 검색", + "searchScope.excludes": "제외할 파일", + "label.excludes": "패턴 제외 검색", "replaceAll.confirmation.title": "모두 바꾸기", "replaceAll.confirm.button": "바꾸기(&&R)", "replaceAll.occurrence.file.message": "{1}개 파일에서 {0}개를 '{2}'(으)로 바꿨습니다.", diff --git a/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 40920aa65c0..a894a8df8a0 100644 --- a/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "검색", + "copyMatchLabel": "복사", + "copyPathLabel": "경로 복사", + "copyAllLabel": "모두 복사", "findInFolder": "폴더에서 찾기...", "findInWorkspace": "작업 영역에서 찾기...", "showTriggerActions": "작업 영역에서 기호로 이동...", "name": "검색", - "search": "검색", "showSearchViewl": "검색 표시", "view": "보기", "findInFiles": "파일에서 찾기", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Quick Open에 대한 파일 결과에 전역 기호 검색 결과를 포함하도록 구성합니다.", "search.followSymlinks": "검색하는 동안 symlink를 누를지 여부를 제어합니다.", "search.smartCase": "패턴이 모두 소문자인 경우 대/소문자를 구분하지 않고 검색하고, 그렇지 않으면 대/소문자를 구분하여 검색합니다.", - "search.globalFindClipboard": "macOS에서 검색 보기가 공유 클립보드 찾기를 읽거나 수정해야 할지를 제어합니다.", - "search.location": "미리 보기: 검색을 사이드바의 보기로 표시할지 또는 가로 간격을 늘리기 위해 패널 영역의 패널로 표시할지를 제어합니다. 다음 릴리스의 패널에서의 검색은 가로 레이아웃이 개선되며 더 이상 미리 보기가 아닙니다." + "search.globalFindClipboard": "macOS에서 검색 보기가 공유 클립보드 찾기를 읽거나 수정해야 할지를 제어합니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 2e803e32bfa..e6bd5e0a444 100644 --- a/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "{0}에 대한 지원을 개선하는 데 도움을 주세요.", "takeShortSurvey": "간단한 설문 조사 참여", "remindLater": "나중에 알림", - "neverAgain": "다시 표시 안 함", - "helpUs": "{0}에 대한 지원을 개선하는 데 도움을 주세요." + "neverAgain": "다시 표시 안 함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 76f84d4a43e..9e0d0c2fac7 100644 --- a/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "간단한 피드백 설문 조사에 참여하시겠어요?", "takeSurvey": "설문 조사 참여", "remindLater": "나중에 알림", - "neverAgain": "다시 표시 안 함", - "surveyQuestion": "간단한 피드백 설문 조사에 참여하시겠어요?" + "neverAgain": "다시 표시 안 함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index a5f47526ecf..a6d3822b0a1 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "문제 패턴 또는 제공되거나 미리 정의된 문제 패턴의 이름입니다. 기본이 지정된 경우 생략할 수 있습니다.", "ProblemMatcherSchema.base": "사용할 기본 문제 선택기의 이름입니다.", "ProblemMatcherSchema.owner": "Code 내부의 문제 소유자입니다. 기본값을 지정한 경우 생략할 수 있습니다. 기본값을 지정하지 않고 생략한 경우 기본값은 '외부'입니다.", + "ProblemMatcherSchema.source": "이 진단의 소스를 설명하는 사람이 읽을 수 있는 문자열입니다(예: 'typescript' 또는 'super lint').", "ProblemMatcherSchema.severity": "캡처 문제에 대한 기본 심각도입니다. 패턴에서 심각도에 대한 일치 그룹을 정의하지 않은 경우에 사용됩니다.", "ProblemMatcherSchema.applyTo": "텍스트 문서에 복된 문제가 열린 문서, 닫힌 문서 또는 모든 문서에 적용되는지를 제어합니다.", "ProblemMatcherSchema.fileLocation": "문제 패턴에 보고된 파일 이름을 해석하는 방법을 정의합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index e02ee2a8a5f..abf1b203d31 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "작업을 그룹에 할당 안 함", "JsonSchema.tasks.group": "이 작업을 할당할 실행 그룹을 정의합니다. 빌드 그룹에 추가를 위한 \"build'와 테스트 그룹에 추가를 위한 \"test\"를 지원합니다.", "JsonSchema.tasks.type": "작업이 프로세스로 실행되는지 또는 셸 내의 명령으로 실행되는지를 제어합니다.", + "JsonSchema.command.quotedString.value": "실제 명령 값", + "JsonSchema.tasks.quoting.escape": "셸의 이스케이프 문자를 사용하여 문자를 이스케이프합니다(예: ` under PowerShell 및 \\ under bash).", + "JsonSchema.tasks.quoting.strong": "셸의 강력한 따옴표 문자를 사용하여 인수를 따옴표 처리합니다(예: \" under PowerShell and bash).", + "JsonSchema.tasks.quoting.weak": "셸의 약한 따옴표 문자를 사용하여 인수를 따옴표 처리합니다(예: PowerShell 및 bash의 경우 ').", + "JsonSchema.command.quotesString.quote": "명령 값을 따옴표로 묶을 방법입니다.", "JsonSchema.command": "실행할 명령이며, 외부 프로그램 또는 셸 명령입니다.", + "JsonSchema.args.quotedString.value": "실제 인수 값", + "JsonSchema.args.quotesString.quote": "인수 값을 따옴표로 묶을 방법입니다.", "JsonSchema.tasks.args": "이 작업이 호출될 때 명령에 전달되는 인수입니다.", "JsonSchema.tasks.label": "작업 사용자 인터페이스 레이블", "JsonSchema.version": "구성의 버전 번호입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 9fba55129c8..4d86707ccea 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,7 +11,9 @@ "totalErrors": "오류 {0}개", "totalWarnings": "경고 {0}개", "totalInfos": "정보 {0}개", + "problems": "문제", "building": "빌드하고 있습니다...", + "manyProblems": "10K+", "runningTasks": "실행 중인 작업 표시", "tasks": "작업", "TaskSystem.noHotSwap": "실행 중인 활성 작업이 있는 작업 실행 엔진을 변경하면 Window를 다시 로드해야 합니다.", @@ -29,8 +31,8 @@ "selectProblemMatcher": "작업 출력에서 스캔할 오류 및 경고 유형을 선택", "customizeParseErrors": "현재 작성 구성에 오류가 있습니다. 작업을 사용자 지정하기 전에 오류를 수정하세요.\n", "moreThanOneBuildTask": "tasks.json에 여러 빌드 작업이 정의되어 있습니다. 첫 번째 작업을 실행합니다.\n", - "TaskSystem.activeSame.background": "'{0}' 작업이 이미 활성 상태로 백그라운드 모드에 있습니다. 종료하려면 [작업] 메뉴에서 '작업 종료...'를 사용하세요.", - "TaskSystem.activeSame.noBackground": "'{0}' 작업이 이미 활성 상태입니다. 종료하려면 [작업] 메뉴에서 '작업 종료...'를 사용하세요.", + "terminateTask": "작업 종료", + "restartTask": "작업 다시 시작", "TaskSystem.active": "이미 실행 중인 작업이 있습니다. 다른 작업을 실행하려면 먼저 이 작업을 종료하세요.", "TaskSystem.restartFailed": "{0} 작업을 종료하고 다시 시작하지 못했습니다.", "TaskService.noConfiguration": "오류: {0} 작업 검색에서는 다음 구성에 대한 작업을 제공하지 않습니다:\n{1}\n이 작업이 무시됩니다.\n", @@ -47,8 +49,8 @@ "recentlyUsed": "최근에 사용한 작업", "configured": "구성된 작업", "detected": "감지된 작업", - "TaskService.notAgain": "다시 표시 안 함", "TaskService.ignoredFolder": "작업 버전 0.1.0을 사용하기 때문에 다음 작업 영역 폴더는 무시됩니다. {0}", + "TaskService.notAgain": "다시 표시 안 함", "TaskService.pickRunTask": "실행할 작업 선택", "TaslService.noEntryToRun": "실행할 작업이 없습니다. 작업 구성...", "TaskService.fetchingBuildTasks": "빌드 작업을 페치하는 중...", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index d7f18841ff1..13963265fec 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "경고: options.cwd는 string 형식이어야 합니다. {0} 값을 무시합니다.\n", + "ConfigurationParser.inValidArg": "오류: 명령 인수는 문자열 또는 따옴표 붙은 문자열이어야 합니다. 제공된 값:\n{0}", "ConfigurationParser.noargs": "오류: 명령 인수는 문자열의 배열이어야 합니다. 제공된 값:\n{0}", "ConfigurationParser.noShell": "경고: 셸 구성은 작업을 터미널에서 실행 중일 때에만 지원됩니다.", "ConfigurationParser.noName": "오류: 선언 범위 내의 문제 선택기는 이름이 있어야 합니다.\n{0}\n", diff --git a/i18n/kor/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..28e78284f3f --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "터미널의 배경색입니다. 이 설정을 사용하면 터미널\n 색을 패널과 다르게 지정할 수 있습니다.", + "terminal.foreground": "터미널의 전경색입니다.", + "terminalCursor.background": "터미널 커서의 배경색입니다. 블록 커서와 겹친 문자의 색상을 사용자 정의할 수 있습니다.", + "terminal.selectionBackground": "터미널의 선택 영역 배경색입니다.", + "terminal.border": "터미널 내의 분할 창을 구분하는 테두리의 색입니다. 기본값은 panel.border입니다.", + "terminal.ansiColor": "터미널의 '{0}' ANSI 색상" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index ba974a50480..1d3dab07b1f 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,7 @@ "workbench.action.terminal.hideFindWidget": "파인드 위젯 숨기기", "nextTerminalFindTerm": "다음 검색어 표시", "previousTerminalFindTerm": "이전 검색어 표시", - "quickOpenTerm": "활성 터미널 전환" + "quickOpenTerm": "활성 터미널 전환", + "workbench.action.terminal.selectToPreviousCommand": "이전 명령까지 선택", + "workbench.action.terminal.selectToNextCommand": "다음 명령까지 선택" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 1dfa3710832..9eeadb37e3c 100644 --- a/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "이 작업 영역에는 사용자 설정({0})에서만 지정할 수 있는 설정이 포함되어 있습니다. 자세히 알아보려면 [여기]({1})를 클릭하세요.", "openWorkspaceSettings": "작업 영역 설정 열기", - "dontShowAgain": "다시 표시 안 함", - "unsupportedWorkspaceSettings": "이 작업 영역에는 사용자 설정({0})에서만 지정할 수 있는 설정이 포함되어 있습니다. 자세히 알아보려면 [여기]({1})를 클릭하세요." + "dontShowAgain": "다시 표시 안 함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 42eb2d479ae..a8da9f65b7b 100644 --- a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "나중에", "releaseNotes": "릴리스 정보", "showReleaseNotes": "릴리스 정보 표시", "read the release notes": "{0} v{1}을(를) 시작합니다. 릴리스 정보를 확인하시겠습니까?", @@ -16,13 +15,12 @@ "updateIsReady": "새 {0} 업데이트를 사용할 수 있습니다.", "noUpdatesAvailable": "현재 사용할 수 있는 업데이트가 없습니다.", "ok": "확인", - "download now": "지금 다운로드", "thereIsUpdateAvailable": "사용 가능한 업데이트가 있습니다.", + "download now": "지금 다운로드", + "later": "나중에", "installUpdate": "업데이트 설치", - "updateAvailable": "사용 가능한 업데이트가 있습니다. {0} {1}", "updateInstalling": "{0} {1}이(가) 백그라운드로 설치되고 있습니다. 완료되면 알려드리겠습니다.", "updateNow": "지금 업데이트", - "updateAvailableAfterRestart": "다시 시작하면 {0}이(가) 업데이트됩니다.", "commandPalette": "명령 팔레트...", "settings": "설정", "keyboardShortcuts": "바로 가기 키(&&K)", diff --git a/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 4a956b0bd25..d6b00d87854 100644 --- a/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "webview 편집기" + "webview.editor.label": "webview 편집기", + "developer": "개발자" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..3a107e5fb3a --- /dev/null +++ b/i18n/kor/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Webview 개발자 도구 열기", + "refreshWebviewLabel": "Webview 다시 로드" +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index 3b2a1e0eaac..88ec2a103e6 100644 --- a/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Microsoft에서 사용 데이터를 수집하도록 허용하여 VS Code 개선에 도움을 주세요. Microsoft [개인정보처리방침]({0})을 읽고 [옵트아웃]({1})하는 방법을 알아보세요.", + "telemetryOptOut.optInNotice": "Microsoft에서 사용 데이터를 수집하도록 허용하여 VS Code 개선에 도움을 주세요. Microsoft [개인정보처리방침]({0})을 읽고 [옵트인]({1})하는 방법을 알아보세요.", "telemetryOptOut.readMore": "자세히 알아보기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/kor/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index cd8e176a8e2..ea167dd210d 100644 --- a/i18n/kor/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "도구 및 언어", "welcomePage.installExtensionPacksDescription": "{0} 및 {1}에 대한 지원 설치", "welcomePage.moreExtensions": "자세히", - "welcomePage.installKeymapDescription": "바로 가기 키 설치", - "welcomePage.installKeymapExtension": "{0} 및 {1}의 바로 가기 키 설치", "welcomePage.others": "기타", "welcomePage.colorTheme": "색 테마", "welcomePage.colorThemeDescription": "편집기 및 코드가 좋아하는 방식으로 표시되게 만들기", diff --git a/i18n/kor/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/kor/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..78e97f64704 --- /dev/null +++ b/i18n/kor/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "이 설정은 지금 적용할 수 없으며 이 폴더를 직접 열 경우에 적용됩니다." +} \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json b/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json index 83747fca0e8..35229bd6699 100644 --- a/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.i18n.json @@ -5,16 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "canNotResolveWorkspaceFolderMultiRoot": "${workspaceFolder} 은(는) 멀티 폴더 작업 영역에서 확인할 수 없습니다. : 와 폴더 이름을 사용하여 변수 범위를 정합니다.", - "canNotResolveWorkspaceFolder": "${workspaceFolder} 을(를) 확인할 수 없습니다. 폴더를 여십시오.", - "canNotResolveFolderBasenameMultiRoot": "${workspaceFolderBasename} 은(는) 멀티 폴더 작업 영역에서 확인할 수 없습니다. : 와 폴더 이름을 사용하여 변수 범위를 정합니다.", - "canNotResolveFolderBasename": "${workspaceFolderBasename} 을(를) 확인할 수 없습니다. 폴더를 여십시오.", - "canNotResolveLineNumber": "${lineNumber} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", - "canNotResolveFile": "${file} 을(를) 확인할 수 없으므로, 편집기를 여십시오.", - "canNotResolveRelativeFile": "${relativeFile} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", - "canNotResolveFileDirname": "${fileDirname} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", - "canNotResolveFileExtname": "${fileExtname} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", - "canNotResolveFileBasename": "${fileBasename} 을(를) 확인할 수 없습니다. 편집기를 여십시오.", - "canNotResolveFileBasenameNoExtension": "${fileBasenameNoExtension} 을(를) 확인할 수 없습니다. 편집기를 여십시오." + ] } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/kor/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 44b8401265d..8d3f616011b 100644 --- a/i18n/kor/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "확장 호스트가 예기치 않게 종료되었습니다.", "extensionHostProcess.unresponsiveCrash": "확장 호스트가 응답하지 않아서 종료되었습니다.", - "devTools": "개발자 도구", "restart": "확장 호스트 다시 시작", "overwritingExtension": "확장 {0}을(를) {1}(으)로 덮어쓰는 중입니다.", "extensionUnderDevelopment": "{0}에서 개발 확장 로드 중", diff --git a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index eb17227dbfa..a5a6d77d42c 100644 --- a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5가 필요합니다. 설치하려면 링크를 클릭하세요.", "installNet": ".NET Framework 4.5 다운로드", "neverShowAgain": "다시 표시 안 함", - "netVersionError": "Microsoft .NET Framework 4.5가 필요합니다. 설치하려면 링크를 클릭하세요.", + "enospcError": "{0}은(는) 이 큰 작업 영역에서 파일 변경 내용을 감시할 수 없습니다. 지침 링크에 따라 이 문제를 해결하세요.", "learnMore": "지침", + "fileInvalidPath": "잘못된 파일 리소스({0})", + "fileIsDirectoryError": "파일이 디렉터리입니다.", + "fileNotModifiedError": "파일 수정 안 됨", + "fileTooLargeError": "파일이 너무 커서 열 수 없음", + "fileNotFoundError": "파일을 찾을 수 없습니다({0}).", + "fileBinaryError": "파일이 이진인 것 같으므로 테스트로 열 수 없습니다.", + "filePermission": "파일 쓰기 권한이 거부되었습니다. ({0})", + "fileExists": "만드려는 파일이 이미 있음({0})", + "fileModifiedError": "파일 수정됨", + "fileReadOnlyError": "파일이 읽기 전용입니다.", + "fileMoveConflict": "이동/복사할 수 없습니다. 대상에 파일이 이미 있습니다.", + "unableToMoveCopyError": "이동/복사할 수 없습니다. 파일이 포함된 폴더를 파일로 대체합니다.", "binFailed": "'{0}'을(를) 휴지통으로 이동하지 못함", "trashFailed": "'{0}'을(를) 휴지통으로 이동하지 못함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 181d6e0ea56..cdcbe91c8d9 100644 --- a/i18n/kor/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "파일을 찾을 수 없습니다({0}).", "fileIsDirectoryError": "파일이 디렉터리입니다.", "fileNotModifiedError": "파일 수정 안 됨", "fileBinaryError": "파일이 이진인 것 같으므로 테스트로 열 수 없습니다." diff --git a/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 32ea33e3988..9535580ff01 100644 --- a/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "tmLanguage 파일에 사용되는 Textmate 범위 이름입니다.", "vscode.extension.contributes.grammars.path": "tmLanguage 파일의 경로입니다. 확장 폴더의 상대 경로이며 일반적으로 './syntaxes/'로 시작합니다.", "vscode.extension.contributes.grammars.embeddedLanguages": "이 문법에 포함된 언어가 있는 경우 언어 ID에 대한 범위 이름의 맵입니다.", + "vscode.extension.contributes.grammars.tokenTypes": "토큰 형식에 대한 범위 이름의 맵입니다.", "vscode.extension.contributes.grammars.injectTo": "이 문법이 삽입되는 언어 범위 이름 목록입니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index b13ed2dcb37..1b87a0da7e9 100644 --- a/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/kor/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "`contributes.{0}.path`에 문자열이 필요합니다. 제공된 값: {1}", "invalid.injectTo": "`contributes.{0}.injectTo`의 값이 잘못되었습니다. 언어 범위 이름 배열이어야 합니다. 제공된 값: {1}", "invalid.embeddedLanguages": "`contributes.{0}.embeddedLanguages` 값이 잘못되었습니다. 범위 이름에서 언어까지의 개체 맵이어야 합니다. 제공된 값: {1}", + "invalid.tokenTypes": "`contributes.{0}.tokenTypes` 값이 잘못되었습니다. 범위 이름에서 언어까지의 개체 맵이어야 합니다. 제공된 값: {1}", "invalid.path.1": "확장 폴더({2})에 포함할 `contributes.{0}.path`({1})가 필요합니다. 확장이 이식 불가능해질 수 있습니다.", "no-tm-grammar": "이 언어에 대해 등록된 TM 문법이 없습니다." } \ No newline at end of file diff --git a/i18n/ptb/extensions/configuration-editing/package.i18n.json b/i18n/ptb/extensions/configuration-editing/package.i18n.json index ff707c572bc..10996414b61 100644 --- a/i18n/ptb/extensions/configuration-editing/package.i18n.json +++ b/i18n/ptb/extensions/configuration-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Edição de Configuração" + "displayName": "Edição de Configuração", + "description": "Fornece recursos (IntelliSense avançado, correção automática) em arquivos de configuração, como configurações, inicialização e arquivos de recomendação de extensão." } \ No newline at end of file diff --git a/i18n/ptb/extensions/css-language-features/package.i18n.json b/i18n/ptb/extensions/css-language-features/package.i18n.json index c6bb31b4fbc..a05cdcfbdc2 100644 --- a/i18n/ptb/extensions/css-language-features/package.i18n.json +++ b/i18n/ptb/extensions/css-language-features/package.i18n.json @@ -8,6 +8,7 @@ ], "displayName": "Recursos da Linguagem CSS", "description": "Fornece suporte de linguagem rico para arquivos CSS, LESS e SCSS.", + "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", "css.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", "css.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", @@ -50,6 +51,7 @@ "less.lint.zeroUnits.desc": "Nenhuma unidade para zero é necessária", "less.validate.title": "Controla MENOS as severidades de validação e problemas.", "less.validate.desc": "Habilita ou desabilita todas as validações", + "scss.title": "SCSS (Sass)", "scss.lint.argumentsInColorFunction.desc": "Número inválido de parâmetros", "scss.lint.boxModel.desc": "Não use largura ou altura ao usar preenchimento ou borda", "scss.lint.compatibleVendorPrefixes.desc": "Ao usar um prefixo específico de fornecedor, certifique-se de também incluir todas as outras propriedades específicas do fornecedor", diff --git a/i18n/ptb/extensions/css/package.i18n.json b/i18n/ptb/extensions/css/package.i18n.json index 35229bd6699..b5a1c26e58b 100644 --- a/i18n/ptb/extensions/css/package.i18n.json +++ b/i18n/ptb/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas da Linguagem CSS", + "description": "Fornece realce de sintaxe e correspondência de colchetes para arquivos CSS, LESS e SCSS." } \ No newline at end of file diff --git a/i18n/ptb/extensions/emmet/package.i18n.json b/i18n/ptb/extensions/emmet/package.i18n.json index f66c3b617c3..bd44dd5d552 100644 --- a/i18n/ptb/extensions/emmet/package.i18n.json +++ b/i18n/ptb/extensions/emmet/package.i18n.json @@ -35,7 +35,7 @@ "emmetExtensionsPath": "Caminho para uma pasta que contém os perfis Emmet e trechos de códigos.'", "emmetShowExpandedAbbreviation": "Mostrar abreviaturas Emmet expandidas como sugestões.\nA opção \"inMarkupAndStylesheetFilesOnly\" aplica-se a html, haml, jade, slim, xml, xsl, css, scss, sass, less e stylus.\nA opção \"always\" se aplica a todas as partes do arquivo independentemente de marcação/css.", "emmetShowAbbreviationSuggestions": "Mostra abreviações Emmet possíveis como sugestões. Não aplicável em folhas de estilo ou quando emmet.showExpandedAbbreviation é definido como \"never\".", - "emmetIncludeLanguages": "Habilita as abreviaturas Emmet em linguagens que não são suportados por padrão. Adicionar um mapeamento aqui entre a linguagem e a linguagem emmet suportada.\n Por exemplo: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", + "emmetIncludeLanguages": "Ative abreviações do Emmet em idiomas que não são suportados por padrão. Adicione um mapeamento aqui entre o idioma e a linguagem suportada emmet.\nPor exemplo: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "Variáveis a serem usadas em trechos de código Emmet", "emmetTriggerExpansionOnTab": "Quando habilitado, abreviações Emmet são expandidas ao pressionar TAB.", "emmetPreferences": "Preferências usadas para modificar o comportamento de algumas ações e resolvedores de Emmet.", @@ -59,5 +59,7 @@ "emmetPreferencesCssWebkitProperties": "Propriedades CSS separadas por vírgula que recebem o prefixo vendor 'webkit' quando utilizado em abreviações do Emmet que iniciam com `-`. Defina como string vazia para sempre evitar o prefixo 'webkit'.", "emmetPreferencesCssMozProperties": "Propriedades CSS separadas por vírgula que recebem o prefixo vendor 'moz' quando utilizado em abreviações do Emmet que iniciam com `-`. Defina como string vazia para sempre evitar o prefixo 'moz'.", "emmetPreferencesCssOProperties": "Propriedades CSS separadas por vírgula que recebem o prefixo vendor 'o' quando utilizado em abreviações do Emmet que iniciam com `-`. Defina como string vazia para sempre evitar o prefixo 'o'.", - "emmetPreferencesCssMsProperties": "Propriedades CSS separadas por vírgula que recebem o prefixo vendor 'ms' quando utilizado em abreviações do Emmet que iniciam com `-`. Defina como string vazia para sempre evitar o prefixo 'ms'." + "emmetPreferencesCssMsProperties": "Propriedades CSS separadas por vírgula que recebem o prefixo vendor 'ms' quando utilizado em abreviações do Emmet que iniciam com `-`. Defina como string vazia para sempre evitar o prefixo 'ms'.", + "emmetPreferencesCssFuzzySearchMinScore": "A pontuação mínima (de 0 a 1) que a abreviação difusa deve alcançar. Os valores mais baixos podem produzir muitas correspondências falso-positivas, valores mais elevados podem reduzir possíveis correspondências.\n", + "emmetOptimizeStylesheetParsing": "Quando definido como false, o arquivo inteiro é analisado para determinar se a posição atual é válida para expandir as abreviações Emmet. Quando definido como true, somente o conteúdo em torno da posição atual em arquivos css / scss / less é analisado." } \ No newline at end of file diff --git a/i18n/ptb/extensions/extension-editing/package.i18n.json b/i18n/ptb/extensions/extension-editing/package.i18n.json index f7701436c08..5be926c7d74 100644 --- a/i18n/ptb/extensions/extension-editing/package.i18n.json +++ b/i18n/ptb/extensions/extension-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Edição de Arquivo de Pacote" + "displayName": "Edição de Arquivo de Pacote", + "description": "Fornece IntelliSense para os pontos de extensão de código do VS Code e capacidade de linting em arquivos package.json." } \ No newline at end of file diff --git a/i18n/ptb/extensions/fsharp/package.i18n.json b/i18n/ptb/extensions/fsharp/package.i18n.json index a6752d374cf..3d6dee1adb0 100644 --- a/i18n/ptb/extensions/fsharp/package.i18n.json +++ b/i18n/ptb/extensions/fsharp/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem F#" + "displayName": "Noções Básicas Sobre a Linguagem F#", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos F#." } \ No newline at end of file diff --git a/i18n/ptb/extensions/git/out/commands.i18n.json b/i18n/ptb/extensions/git/out/commands.i18n.json index afacddeaf5a..64a2c5576d9 100644 --- a/i18n/ptb/extensions/git/out/commands.i18n.json +++ b/i18n/ptb/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "OK", "push with tags success": "Envio de rótulos finalizado com sucesso.", "pick remote": "Pegue um remoto para publicar o ramo '{0}':", + "sync is unpredictable": "Esta ação vai empurrar e puxar commits de e para '{0}/{1}'.", "never again": "OK, Não Mostrar Novamente", "no remotes to publish": "Seu repositório não possui remotos configurados para publicação.", "no changes stash": "Não há nenhuma mudança para esconder.", diff --git a/i18n/ptb/extensions/git/package.i18n.json b/i18n/ptb/extensions/git/package.i18n.json index d293df15a4e..6ab84324adb 100644 --- a/i18n/ptb/extensions/git/package.i18n.json +++ b/i18n/ptb/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Controla se deve mostrar uma ação Abrir Arquivo em linha na visualização de alterações do Git.", "config.inputValidation": "Controla quando exibir validação do campo de mensagem do commit.", "config.detectSubmodules": "Controla se deve detectar automaticamente os sub-módulos do git.", + "config.detectSubmodulesLimit": "Controla o limite de sub-módulos git detectados.", "colors.modified": "Cor para recursos modificados.", "colors.deleted": "Cor para recursos excluídos.", "colors.untracked": "Cor para recursos não controlados.", diff --git a/i18n/ptb/extensions/go/package.i18n.json b/i18n/ptb/extensions/go/package.i18n.json index 3425e376a6d..203f97d1603 100644 --- a/i18n/ptb/extensions/go/package.i18n.json +++ b/i18n/ptb/extensions/go/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Go" + "displayName": "Noções Básicas Sobre a Linguagem Go", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Go." } \ No newline at end of file diff --git a/i18n/ptb/extensions/groovy/package.i18n.json b/i18n/ptb/extensions/groovy/package.i18n.json index 875bfb0802e..abdb1ff0880 100644 --- a/i18n/ptb/extensions/groovy/package.i18n.json +++ b/i18n/ptb/extensions/groovy/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Groovy" + "displayName": "Noções Básicas Sobre a Linguagem Groovy", + "description": "Fornece trechos de código, realce de sintaxe e correspondência de colchetes em arquivos Groovy." } \ No newline at end of file diff --git a/i18n/ptb/extensions/handlebars/package.i18n.json b/i18n/ptb/extensions/handlebars/package.i18n.json index 7fa3a76c709..2eb0ec888d5 100644 --- a/i18n/ptb/extensions/handlebars/package.i18n.json +++ b/i18n/ptb/extensions/handlebars/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Handlebars" + "displayName": "Noções Básicas Sobre a Linguagem Handlebars", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Handlebars." } \ No newline at end of file diff --git a/i18n/ptb/extensions/hlsl/package.i18n.json b/i18n/ptb/extensions/hlsl/package.i18n.json index 4e272ff2dd7..f00e509b8c7 100644 --- a/i18n/ptb/extensions/hlsl/package.i18n.json +++ b/i18n/ptb/extensions/hlsl/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem HLSL" + "displayName": "Noções Básicas Sobre a Linguagem HLSL", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos HLSL." } \ No newline at end of file diff --git a/i18n/ptb/extensions/html-language-features/package.i18n.json b/i18n/ptb/extensions/html-language-features/package.i18n.json index cbbf188d7c1..a434dbe0f11 100644 --- a/i18n/ptb/extensions/html-language-features/package.i18n.json +++ b/i18n/ptb/extensions/html-language-features/package.i18n.json @@ -8,6 +8,7 @@ ], "displayName": "Recursos da Linguagem HTML", "description": "Fornece suporte de linguagem rico para arquivos HTML, Razor e Handlebar.", + "html.format.enable.desc": "Ativar/desativar o formatador HTML padrão", "html.format.wrapLineLength.desc": "Quantidade máxima de caracteres por linha (0 = desativar).", "html.format.unformatted.desc": "Lista de tags, separados por vírgula, que não deveria ser reformatada. o padrão é 'nulo' para todas as tags listadas em https://www.w3.org/TR/html5/dom.html#phrasing-content.", "html.format.contentUnformatted.desc": "Lista de tags, separada por vírgula, onde o conteúdo não deve ser reformatado. o padrão é 'nulo' para a tag 'pré'.", diff --git a/i18n/ptb/extensions/html/package.i18n.json b/i18n/ptb/extensions/html/package.i18n.json index 35229bd6699..53d3b893dda 100644 --- a/i18n/ptb/extensions/html/package.i18n.json +++ b/i18n/ptb/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas da Linguagem HTML", + "description": "Fornece realce de sintaxe, correspondência de colchetes e trechos em arquivos HTML." } \ No newline at end of file diff --git a/i18n/ptb/extensions/ini/package.i18n.json b/i18n/ptb/extensions/ini/package.i18n.json index d3c9a58f2d7..f7e7bd037dd 100644 --- a/i18n/ptb/extensions/ini/package.i18n.json +++ b/i18n/ptb/extensions/ini/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Ini" + "displayName": "Noções Básicas Sobre a Linguagem Ini", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Ini." } \ No newline at end of file diff --git a/i18n/ptb/extensions/java/package.i18n.json b/i18n/ptb/extensions/java/package.i18n.json index 446ed1b1df3..207e95a5b2f 100644 --- a/i18n/ptb/extensions/java/package.i18n.json +++ b/i18n/ptb/extensions/java/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Java" + "displayName": "Noções Básicas Sobre a Linguagem Java", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos Java." } \ No newline at end of file diff --git a/i18n/ptb/extensions/javascript/package.i18n.json b/i18n/ptb/extensions/javascript/package.i18n.json index 455ec8a3376..582a7ee0bac 100644 --- a/i18n/ptb/extensions/javascript/package.i18n.json +++ b/i18n/ptb/extensions/javascript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem JavaScript" + "displayName": "Noções Básicas Sobre a Linguagem JavaScript", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos JavaScript." } \ No newline at end of file diff --git a/i18n/ptb/extensions/json/package.i18n.json b/i18n/ptb/extensions/json/package.i18n.json index 35229bd6699..4f2081eef5f 100644 --- a/i18n/ptb/extensions/json/package.i18n.json +++ b/i18n/ptb/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas da Linguagem JSON", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos JSON." } \ No newline at end of file diff --git a/i18n/ptb/extensions/less/package.i18n.json b/i18n/ptb/extensions/less/package.i18n.json index 498dbc3c941..f83a843880a 100644 --- a/i18n/ptb/extensions/less/package.i18n.json +++ b/i18n/ptb/extensions/less/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Less" + "displayName": "Noções Básicas Sobre a Linguagem Less", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos Less." } \ No newline at end of file diff --git a/i18n/ptb/extensions/log/package.i18n.json b/i18n/ptb/extensions/log/package.i18n.json index 257db2e6372..0f7313e5de8 100644 --- a/i18n/ptb/extensions/log/package.i18n.json +++ b/i18n/ptb/extensions/log/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Log" + "displayName": "Log", + "description": "Fornece realce de sintaxe para arquivos com extensão .log." } \ No newline at end of file diff --git a/i18n/ptb/extensions/lua/package.i18n.json b/i18n/ptb/extensions/lua/package.i18n.json index c1a61a7ed26..a85199917e7 100644 --- a/i18n/ptb/extensions/lua/package.i18n.json +++ b/i18n/ptb/extensions/lua/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Lua" + "displayName": "Noções Básicas Sobre a Linguagem Lua", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Lua." } \ No newline at end of file diff --git a/i18n/ptb/extensions/make/package.i18n.json b/i18n/ptb/extensions/make/package.i18n.json index 9302615da23..52ddd461b8d 100644 --- a/i18n/ptb/extensions/make/package.i18n.json +++ b/i18n/ptb/extensions/make/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Make" + "displayName": "Noções Básicas Sobre a Linguagem Make", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Make." } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-basics/package.i18n.json b/i18n/ptb/extensions/markdown-basics/package.i18n.json index 1f82410c626..4295e53ce24 100644 --- a/i18n/ptb/extensions/markdown-basics/package.i18n.json +++ b/i18n/ptb/extensions/markdown-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Markdown" + "displayName": "Noções Básicas Sobre a Linguagem Markdown", + "description": "Fornece trechos de código e destaque de sintaxe para Markdown." } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json index 92d5546b323..3d1337eab3e 100644 --- a/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json +++ b/i18n/ptb/extensions/markdown-language-features/out/features/previewContentProvider.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "preview.securityMessage.text": "Parte do conteúdo foi desativada neste documento", "preview.securityMessage.title": "Conteúdo potencialmente inseguro foi desativado na visualização de remarcação. Altere a configuração de segurança de visualização do Markdown para permitir conteúdo inseguro ou habilitar scripts", "preview.securityMessage.label": "Conteúdo do Aviso de Segurança Desativado" } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json b/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json index e8aa71537e2..ead307bcb9d 100644 --- a/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/ptb/extensions/markdown-language-features/out/security.i18n.json @@ -6,11 +6,17 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "strict.title": "Estrito", "strict.description": "Somente carregar conteúdo seguro", + "insecureLocalContent.title": "Permitir conteúdo local inseguro", + "insecureLocalContent.description": "Permitir carregar conteúdo por http servida por localhost", "insecureContent.title": "Permitir conteúdo inseguro", + "insecureContent.description": "Permitir o carregamento de conteúdo via http", "disable.title": "Desabilitar", "disable.description": "Permitir a execução de conteúdo e scripts. Não recomendado", "moreInfo.title": "Mais informações", "enableSecurityWarning.title": "Habilitar a visualização de avisos de segurança neste espaço de trabalho", - "disableSecurityWarning.title": "Desabilitar a visualização de avisos de segurança neste espaço de trabalho" + "disableSecurityWarning.title": "Desabilitar a visualização de avisos de segurança neste espaço de trabalho", + "toggleSecurityWarning.description": "Não afeta o nível de segurança do conteúdo", + "preview.showPreviewSecuritySelector.title": "Selecione as configurações de segurança para pré-visualização de Markdown nesta área de trabalho." } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-language-features/package.i18n.json b/i18n/ptb/extensions/markdown-language-features/package.i18n.json index 30cdb8f363d..2a40b868546 100644 --- a/i18n/ptb/extensions/markdown-language-features/package.i18n.json +++ b/i18n/ptb/extensions/markdown-language-features/package.i18n.json @@ -17,10 +17,16 @@ "markdown.preview.markEditorSelection.desc": "Marca a seleção atual do editor na pré-visualização de markdown.", "markdown.preview.scrollEditorWithPreview.desc": "Quando uma pré-visualização de markdown é rolada, atualiza a exibição do editor.", "markdown.preview.scrollPreviewWithEditor.desc": "Quando um editor de markdown é rolado, atualiza a exibição da pré-visualização.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Descontinuada] Rola a pré-visualização Markdown para mostrar a linha atualmente selecionada no editor.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Esta configuração foi substituída por 'markdown.preview.scrollPreviewWithEditor' e já não tem qualquer efeito.", "markdown.preview.title": "Abrir a visualização", "markdown.previewFrontMatter.dec": "Configura como o frontispicio YAML frente questão devem ser processado na pré-visualização de markdown. 'hide' remove o frontispicio. Caso contrário, o frontispicio é tratado como conteúdo de markdown.", "markdown.previewSide.title": "Abre pré-visualização ao lado", + "markdown.showLockedPreviewToSide.title": "Abrir pré-visualização travada ao lado", "markdown.showSource.title": "Exibir Código-Fonte", "markdown.styles.dec": "Uma lista de URLs ou caminhos locais para folhas de estilo CSS para usar na pré-visualização do markdown. Caminhos relativos são interpretados em relação à pasta aberta no explorer. Se não houver nenhuma pasta aberta, eles são interpretados em relação ao local do arquivo markdown. Todos os ' \\' precisam ser escritos como ' \\ \\ '.", - "markdown.trace.desc": "Habilitar log de depuração para a extensão do markdown." + "markdown.showPreviewSecuritySelector.title": "Alterar configurações de segurança da pré-visualização", + "markdown.trace.desc": "Habilitar log de depuração para a extensão do markdown.", + "markdown.preview.refresh.title": "Atualizar pré-visualização", + "markdown.preview.toggleLock.title": "Alternar Bloqueio de Visualização" } \ No newline at end of file diff --git a/i18n/ptb/extensions/merge-conflict/package.i18n.json b/i18n/ptb/extensions/merge-conflict/package.i18n.json index 1aa2e946156..7c3c0804258 100644 --- a/i18n/ptb/extensions/merge-conflict/package.i18n.json +++ b/i18n/ptb/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Mesclar conflitos", + "description": "Realce e comandos para mesclagem de conflitos inline.", "command.category": "Conflito de Mesclagem", "command.accept.all-current": "Aceitar Todos os Atuais", "command.accept.all-incoming": "Aceitar todas entradas", diff --git a/i18n/ptb/extensions/objective-c/package.i18n.json b/i18n/ptb/extensions/objective-c/package.i18n.json index 6c21271685a..be2418c54c4 100644 --- a/i18n/ptb/extensions/objective-c/package.i18n.json +++ b/i18n/ptb/extensions/objective-c/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Objective-C" + "displayName": "Noções Básicas Sobre a Linguagem Objective-C", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Objective-C." } \ No newline at end of file diff --git a/i18n/ptb/extensions/perl/package.i18n.json b/i18n/ptb/extensions/perl/package.i18n.json index c45067607b6..5b15ff68e47 100644 --- a/i18n/ptb/extensions/perl/package.i18n.json +++ b/i18n/ptb/extensions/perl/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Perl" + "displayName": "Noções Básicas Sobre a Linguagem Perl", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Perl." } \ No newline at end of file diff --git a/i18n/ptb/extensions/php-language-features/package.i18n.json b/i18n/ptb/extensions/php-language-features/package.i18n.json index a88cd375f35..7779248205c 100644 --- a/i18n/ptb/extensions/php-language-features/package.i18n.json +++ b/i18n/ptb/extensions/php-language-features/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Se o linter é executado ao salvar ou ao digitar.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)" + "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)", + "displayName": "Recursos da linguagem PHP", + "description": "Fornece suporte de linguagem rica para arquivos PHP." } \ No newline at end of file diff --git a/i18n/ptb/extensions/php/package.i18n.json b/i18n/ptb/extensions/php/package.i18n.json index 324291e15f7..5ebf52a77aa 100644 --- a/i18n/ptb/extensions/php/package.i18n.json +++ b/i18n/ptb/extensions/php/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Recursos da linguagem PHP" + "displayName": "Noções básicas de linguagem PHP", + "description": "Fornece realce de sintaxe e suporte a correspondência de colchetes para arquivos PHP." } \ No newline at end of file diff --git a/i18n/ptb/extensions/powershell/package.i18n.json b/i18n/ptb/extensions/powershell/package.i18n.json index 8d1fc47c67e..c8d4a44ac0b 100644 --- a/i18n/ptb/extensions/powershell/package.i18n.json +++ b/i18n/ptb/extensions/powershell/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Powershell" + "displayName": "Noções Básicas Sobre a Linguagem Powershell", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos Powershell." } \ No newline at end of file diff --git a/i18n/ptb/extensions/pug/package.i18n.json b/i18n/ptb/extensions/pug/package.i18n.json index 9898328e3cb..a4a9f443d88 100644 --- a/i18n/ptb/extensions/pug/package.i18n.json +++ b/i18n/ptb/extensions/pug/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Pug" + "displayName": "Noções Básicas Sobre a Linguagem Pug", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Pug." } \ No newline at end of file diff --git a/i18n/ptb/extensions/python/package.i18n.json b/i18n/ptb/extensions/python/package.i18n.json index 6f1ce258965..ee8ff1f709e 100644 --- a/i18n/ptb/extensions/python/package.i18n.json +++ b/i18n/ptb/extensions/python/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Python" + "displayName": "Noções Básicas Sobre a Linguagem Python", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos Python." } \ No newline at end of file diff --git a/i18n/ptb/extensions/r/package.i18n.json b/i18n/ptb/extensions/r/package.i18n.json index b8dd971968a..d6beac66e30 100644 --- a/i18n/ptb/extensions/r/package.i18n.json +++ b/i18n/ptb/extensions/r/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem R" + "displayName": "Noções Básicas Sobre a Linguagem R", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos R." } \ No newline at end of file diff --git a/i18n/ptb/extensions/razor/package.i18n.json b/i18n/ptb/extensions/razor/package.i18n.json index e852ddd68a9..c79997f74c3 100644 --- a/i18n/ptb/extensions/razor/package.i18n.json +++ b/i18n/ptb/extensions/razor/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Razor" + "displayName": "Noções Básicas Sobre a Linguagem Razor", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos Razor." } \ No newline at end of file diff --git a/i18n/ptb/extensions/ruby/package.i18n.json b/i18n/ptb/extensions/ruby/package.i18n.json index 96c639a55b4..11ef2cb215a 100644 --- a/i18n/ptb/extensions/ruby/package.i18n.json +++ b/i18n/ptb/extensions/ruby/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Ruby" + "displayName": "Noções Básicas Sobre a Linguagem Ruby", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Ruby." } \ No newline at end of file diff --git a/i18n/ptb/extensions/rust/package.i18n.json b/i18n/ptb/extensions/rust/package.i18n.json index 423ab816de0..7812f5b58c1 100644 --- a/i18n/ptb/extensions/rust/package.i18n.json +++ b/i18n/ptb/extensions/rust/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Rust" + "displayName": "Noções Básicas Sobre a Linguagem Rust", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Rust." } \ No newline at end of file diff --git a/i18n/ptb/extensions/scss/package.i18n.json b/i18n/ptb/extensions/scss/package.i18n.json index 2007a85cbe3..1f732d38a0a 100644 --- a/i18n/ptb/extensions/scss/package.i18n.json +++ b/i18n/ptb/extensions/scss/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem SCSS" + "displayName": "Noções Básicas Sobre a Linguagem SCSS", + "description": "Fornece realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos SCSS." } \ No newline at end of file diff --git a/i18n/ptb/extensions/shaderlab/package.i18n.json b/i18n/ptb/extensions/shaderlab/package.i18n.json index f7ded2dce77..6138101920b 100644 --- a/i18n/ptb/extensions/shaderlab/package.i18n.json +++ b/i18n/ptb/extensions/shaderlab/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Shaderlab" + "displayName": "Noções Básicas Sobre a Linguagem Shaderlab", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos Shaderlab." } \ No newline at end of file diff --git a/i18n/ptb/extensions/shellscript/package.i18n.json b/i18n/ptb/extensions/shellscript/package.i18n.json index d8764c3903c..f52f15ed9de 100644 --- a/i18n/ptb/extensions/shellscript/package.i18n.json +++ b/i18n/ptb/extensions/shellscript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Shell Script" + "displayName": "Noções Básicas Sobre a Linguagem Shell Script", + "description": "Fornece realce de sintaxe e correspondência de colchetes em arquivos de Script de Shell." } \ No newline at end of file diff --git a/i18n/ptb/extensions/sql/package.i18n.json b/i18n/ptb/extensions/sql/package.i18n.json index bb7822cba12..95abedb5aac 100644 --- a/i18n/ptb/extensions/sql/package.i18n.json +++ b/i18n/ptb/extensions/sql/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem SQL" + "displayName": "Noções Básicas Sobre a Linguagem SQL", + "description": "Fornece realce de sintaxe e correspondência de colchetes nos arquivos SQL." } \ No newline at end of file diff --git a/i18n/ptb/extensions/swift/package.i18n.json b/i18n/ptb/extensions/swift/package.i18n.json index 7ca859e9a6e..aa1efe8c491 100644 --- a/i18n/ptb/extensions/swift/package.i18n.json +++ b/i18n/ptb/extensions/swift/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Swift" + "displayName": "Noções Básicas Sobre a Linguagem Swift", + "description": "Fornece trechos de código, realce de sintaxe e correspondência de colchetes em arquivos Swift." } \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-basics/package.i18n.json b/i18n/ptb/extensions/typescript-basics/package.i18n.json index 0a1d2df7587..24615fd096d 100644 --- a/i18n/ptb/extensions/typescript-basics/package.i18n.json +++ b/i18n/ptb/extensions/typescript-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas da Linguagem TypeScript" + "displayName": "Noções Básicas da Linguagem TypeScript", + "description": "Fornece trechos, realce de sintaxe, correspondência de colchetes e oclusão de código em arquivos TypeScript." } \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/commands.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..43bfcb4644a --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Favor abrir uma pasta no VS Code para usar um projeto TypeScript ou JavaScript", + "typescript.projectConfigUnsupportedFile": "Não foi possível determinar o projeto TypeScript ou JavaScript. Tipo de arquivo não suportado", + "typescript.projectConfigCouldNotGetInfo": "Não foi possível determinar o projeto TypeScript ou JavaScript", + "typescript.noTypeScriptProjectConfig": "O arquivo não é parte do projeto TypeScript. Clique [aqui]({0}) para mais informações.", + "typescript.noJavaScriptProjectConfig": "O arquivo não é parte do projeto JavaScript. Clique [aqui]({0}) para mais informações.", + "typescript.configureTsconfigQuickPick": "Configurar tsconfig.json", + "typescript.configureJsconfigQuickPick": "Configurar jsconfig.json" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..07ef27a5bcf --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Selecione uma ação de código para aplicar", + "acquiringTypingsLabel": "Adquirindo digitações...", + "acquiringTypingsDetail": "Adquirindo definições de digitações para o Intellisense.", + "autoImportLabel": "Importação automática de {0}" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..eafca22f53d --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Habilita verificação semântica em um arquivo JavaScript. Deve estar no topo de um arquivo.", + "ts-nocheck": "Desabilita verificação semântica em um arquivo JavaScript. Deve estar no topo de um arquivo.", + "ts-ignore": "Suprime erros de @ts-check na próxima linha de um arquivo." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..c0ccafb6005 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 implementação", + "manyImplementationLabel": "{0} implementações", + "implementationsErrorLabel": "Não foi possível determinar implementações" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..0f22e0563e3 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "Comentário JSDoc" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..a0dd22d5e1e --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Organizar as importações" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..96d00a06bb5 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Reparar tudo no arquivo)" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..fd899d96208 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 referência", + "manyReferenceLabel": "{0} referências", + "referenceErrorLabel": "Não foi possível determinar as referências" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..083f9cdd4a2 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "compilar - {0}", + "buildAndWatchTscLabel": "monitorar - {0}" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..18d31ac5959 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "O caminho {0} não aponta para uma instalação de tsserver válida. Voltando para a versão do TypeScript empacotada.", + "serverCouldNotBeStarted": "Servidor de linguagem TypeScript não pôde ser iniciado. Mensagem de erro é: {0}", + "typescript.openTsServerLog.notSupported": "Logging de TS Server requer TS TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "Logging de TS Server está desligado. Por favor configure 'typescript.tsserver.log' e reinicie o TS Server para habilitar o log", + "typescript.openTsServerLog.enableAndReloadOption": "Habilitar logging e reniciar TS server", + "typescript.openTsServerLog.noLogFile": "O TS Server não iniciou o logging.", + "openTsServerLog.openFileFailedFailed": "Não foi possível abrir o arquivo de log do TS Server", + "serverDiedAfterStart": "O serviço de linguagem TypeScript morreu 5 vezes depois que começou. O serviço não será reiniciado.", + "serverDiedReportIssue": "Reportar Problema", + "serverDied": "O serviço TypeScript morreu inesperadamente 5 vezes nos últimos 5 minutos." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..c723b32adb6 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "versão inválida" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..6cf4fd3d7e5 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Para habilitar os recursos de linguagem JavaScript/TypeScipt em todo o projeto, excluir pastas com muitos arquivos, como: {0}", + "hintExclude.generic": "Para habilitar os recursos de linguagem JavaScript/TypeScipt em todo o projeto, excluir pastas grandes com arquivos em que você não trabalha.", + "large.label": "Configurar exclusões", + "hintExclude.tooltip": "Para habilitar os recursos de linguagem JavaScript/TypeScipt em todo o projeto, excluir pastas grandes com arquivos em que você não trabalha." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..26560f00bfe --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Buscando dados para melhor IntelliSense do TypeScript", + "typesInstallerInitializationFailed.title": "Não foi possível instalar os arquivos de tipagem para recursos da linguagem JavaScript. Por favor, certifique-se que o NPM está instalado ou configure 'typescript.npm' em suas configurações de usuário. Clique [aqui]({0}) para mais informações.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Não mostrar novamente" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..8f3cd072f30 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Use a versão do VS Code", + "useWorkspaceVersionOption": "Use a versão de área de trabalho", + "learnMore": "Saiba Mais", + "selectTsVersion": "Selecione a versão do TypeScript usada para os recursos de linguagem JavaScript e TypeScript" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/ptb/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..ba136d68e8b --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Não foi possível carregar a versão do TypeScript neste caminho", + "noBundledServerFound": "Tsserver do VS Code foi eliminado por outro aplicativo como uma ferramenta de detecção de vírus com um comportamento inadequado. Por favor reinstale o VS Code." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript-language-features/package.i18n.json b/i18n/ptb/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..97dd0af87e4 --- /dev/null +++ b/i18n/ptb/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,64 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Recursos da Linguagem TypeScript e JavaScript", + "description": "Fornece suporte à linguagem rica pra JavaScript e TypeScript.", + "typescript.reloadProjects.title": "Recarregar Projeto", + "javascript.reloadProjects.title": "Recarregar Projeto", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Funções completas com a assinatura do parâmetro.", + "typescript.tsdk.desc": "Especifica o caminho da pasta que contém os arquivos tsserver e lib*.d.ts para usar.", + "typescript.disableAutomaticTypeAcquisition": "Desabilita a aquisição automática de tipo. Requer TypeScript > = 2.0.6.", + "typescript.tsserver.log": "Habilita o log do servidor TS para um arquivo. Este log pode ser usado para diagnosticar problemas do servidor de TS. O log pode conter caminhos de arquivo, código-fonte e outras informações potencialmente confidenciais do seu projeto.", + "typescript.tsserver.pluginPaths": "Caminhos adicionais para descobrir os plugins do serviço de linguagem TypeScript. Requer TypeScript > = 2.3.0.", + "typescript.tsserver.pluginPaths.item": "Pode ser um caminho absoluto ou relativo. Caminho relativo será resolvido a partir da pasta da área de trabalho.", + "typescript.tsserver.trace": "Habilita o rastreamento de mensagens enviadas para o servidor de TS. Este rastreamento pode ser usado para diagnosticar problemas do servidor de TS. O rastreamento pode conter caminhos de arquivo, código-fonte e outras informações potencialmente confidenciais do seu projeto.", + "typescript.validate.enable": "Habilita/Desabilita a validação TypeScript.", + "typescript.format.enable": "Habilita/Desabilita o formatador padrão TypeScript.", + "javascript.format.enable": "Habilita/Desabilita o formatador padrão JavaScript.", + "format.insertSpaceAfterCommaDelimiter": "Define o tratamento de espaços após um delimitador vírgula.", + "format.insertSpaceAfterConstructor": "Define a manipulação de espaços após a palavra-chave do construtor. Requer TypeScript > = 2.3.0.", + "format.insertSpaceAfterSemicolonInForStatements": "Define o tratamento de espaços após um ponto e vírgula para um comando.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Define o tratamento de espaços após um operador binário.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Define o tratamento de espaços após palavras-chave em um comando de controle de fluxo.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Define o tratamento de espaços após uma palavra-chave de função para funções anônimas.", + "format.insertSpaceBeforeFunctionParenthesis": "Define a manipulação de espaços antes de parênteses do argumento de função. Requer TypeScript > = 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": "Define a manipulação de espaços após abrir e antes de fechar parênteses não vazios.", + "format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": "Define a manipulação de espaços após abrir e antes de fechar colchetes não vazios.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Define a manipulação de espaços após abrir e antes de fechar chaves de cadeias de caracteres de modelos. Requer TypeScript >= 2.0.6.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Define a manipulação de espaços após abrir e antes de fechar chaves de expressões JSX. Requer TypeScript >= 2.0.6.", + "format.insertSpaceAfterTypeAssertion": "Define a manipulação de espaços após asserções de tipo em TypeScript. Requer TypeScript >= 2,4.", + "format.placeOpenBraceOnNewLineForFunctions": "Define-se uma chave de abertura é colocada em uma nova linha para funções ou não.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Define-se uma chave de abertura é colocada em uma nova linha para blocos de controle ou não.", + "javascript.validate.enable": "Habilitar/Desabilitar validação JavaScript.", + "typescript.goToProjectConfig.title": "Ir para a Configuração do Projeto", + "javascript.goToProjectConfig.title": "Ir para a Configuração do Projeto", + "javascript.referencesCodeLens.enabled": "Habilitar/desabilitar referências CodeLens em arquivos JavaScript.", + "typescript.referencesCodeLens.enabled": "Habilitar/desabilitar referências CodeLens em arquivos TypeScript. Requer TypeScript > = 2.0.6.", + "typescript.implementationsCodeLens.enabled": "Habilitar/desabilitar implementações CodeLens. Requer TypeScript > = 2.0.6.", + "typescript.openTsServerLog.title": "Abrir arquivo de log do servidor TS", + "typescript.restartTsServer": "Reiniciar o servidor TS", + "typescript.selectTypeScriptVersion.title": "Selecionar a versão do JavaScript", + "typescript.reportStyleChecksAsWarnings": "Reportar verificações de estilo como avisos", + "jsDocCompletion.enabled": "Habilitar/Desabilitar comentários JSDoc automáticos.", + "javascript.implicitProjectConfig.checkJs": "Habilitar/desabilitar verificação semântica de arquivos JavaScript. Os arquivos existentes jsconfig.json ou tsconfig.json substituem essa configuração. Requer TypeScript > = 2.3.1.", + "typescript.npm": "Especifica o caminho para o executável do NPM usado para Aquisição de Tipo Automático. Requer TypeScript > = 2.3.4.", + "typescript.check.npmIsInstalled": "Verificar se o NPM está instalado para aquisição automática de tipo.", + "javascript.nameSuggestions": "Habilitar/desabilitar incluindo nomes exclusivos do arquivo nas listas de sugestão de JavaScript.", + "typescript.tsc.autoDetect": "Controla a auto deteção das tarefas de tsc. 'off' desativa esse recurso. 'build' só cria tarefas de compilação de execução única. 'watch' cria apenas tarefas de compilação e monitoramento. 'on' cria ambas as tarefas de compilar e monitoramento. Padrão é 'on'.", + "typescript.problemMatchers.tsc.label": "Problemas TypeScript", + "typescript.problemMatchers.tscWatch.label": "Problemas TypeScript (modo observação)", + "typescript.quickSuggestionsForPaths": "Ativar/desativar sugestões rápidas quando estiver digitando um caminho de importação.", + "typescript.locale": "Define a localidade usada para relatar erros TypeScript. Requer TypeScript > = 2.6.0. Padrão 'null' usa a localidade do VS Code para erros TypeScript.", + "javascript.implicitProjectConfig.experimentalDecorators": "Ativar/desativar 'experimentalDecorators' para arquivos JavaScript que não fazem parte de um projeto. Os arquivos existentes de jsconfig.json ou tsconfig.json substituem essa configuração. Requer TypeScript >= 2.3.1.", + "typescript.autoImportSuggestions.enabled": "Ativar/desativar sugestões de importação automática. Requer TypeScript >= 2.6.1", + "typescript.experimental.syntaxFolding": "Habilita/Desabilita a sintaxe dos marcadores de pastas ativas.", + "taskDefinition.tsconfig.description": "O arquivo tsconfig que define a compilação do TS.", + "javascript.suggestionActions.enabled": "Ativar/desativar o diagnóstico de sugestões para arquivos JavaScript no editor. Requer TypeScript > = 2.8", + "typescript.suggestionActions.enabled": "Ativar/desativar o diagnóstico de sugestões para arquivos TypeScript no editor. Requer TypeScript > = 2.8." +} \ No newline at end of file diff --git a/i18n/ptb/extensions/vb/package.i18n.json b/i18n/ptb/extensions/vb/package.i18n.json index 4ce55e93689..eaf6b99fa56 100644 --- a/i18n/ptb/extensions/vb/package.i18n.json +++ b/i18n/ptb/extensions/vb/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem Visual Basic" + "displayName": "Noções Básicas Sobre a Linguagem Visual Basic", + "description": "Fornece trechos, destaque de sintaxe, correspondência de colchetes e oclusão em arquivos do Visual Basic." } \ No newline at end of file diff --git a/i18n/ptb/extensions/xml/package.i18n.json b/i18n/ptb/extensions/xml/package.i18n.json index c021fd6f6b1..a5b08901983 100644 --- a/i18n/ptb/extensions/xml/package.i18n.json +++ b/i18n/ptb/extensions/xml/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem XML" + "displayName": "Noções Básicas Sobre a Linguagem XML", + "description": "Fornece realce de sintaxe e suporte a correspondência de colchetes em arquivos XML." } \ No newline at end of file diff --git a/i18n/ptb/extensions/yaml/package.i18n.json b/i18n/ptb/extensions/yaml/package.i18n.json index 8b586bfe33c..4a6a3b45e48 100644 --- a/i18n/ptb/extensions/yaml/package.i18n.json +++ b/i18n/ptb/extensions/yaml/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Noções Básicas Sobre a Linguagem YAML" + "displayName": "Noções Básicas Sobre a Linguagem YAML", + "description": "Fornece realce de sintaxe e suporte a correspondência de colchetes em arquivos YAML." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/base/node/processes.i18n.json b/i18n/ptb/src/vs/base/node/processes.i18n.json index 19c9978965a..35229bd6699 100644 --- a/i18n/ptb/src/vs/base/node/processes.i18n.json +++ b/i18n/ptb/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Não é possível executar um comando shell em uma unidade UNC." + ] } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 57e561ae158..ff2a8afaccd 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -8,10 +8,11 @@ ], "previewOnGitHub": "Pré-visualizar no GitHub", "loadingData": "Carregando dados...", + "rateLimited": "Limite de consulta do GitHub excedido. Por favor, espere.", "similarIssues": "Problemas semelhantes", "open": "Abrir", "closed": "Fechado", - "noResults": "Nenhum resultado encontrado", + "noSimilarIssues": "Nenhum problema semelhante encontrado", "settingsSearchIssue": "Problema na Pesquisa de Configurações", "bugReporter": "Relatório de Bug", "featureRequest": "Solicitação de Recurso", diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 9dcb83270fb..779dbc700cc 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,12 @@ ], "completeInEnglish": "Por favor, preencha o formulário em inglês.", "issueTypeLabel": "Isso é um", + "issueSourceLabel": "Arquivo na", + "vscode": "Visual Studio Code", + "extension": "Uma extensão", + "disableExtensionsLabelText": "Tente reproduzir o problema depois de {0}. Se o problema só se reproduz quando as extensões são ativas, provavelmente é um problema com uma extensão.", + "disableExtensions": "desabilitando todas as extensões e recarregando a janela", + "chooseExtension": "Extensão", "issueTitleLabel": "Título", "issueTitleRequired": "Por favor, digite um título.", "titleLengthValidation": "O título é muito longo.", @@ -18,13 +24,6 @@ "extensions": "Minhas extensões", "searchedExtensions": "Extensões Pesquisadas", "settingsSearchDetails": "Detalhes da Pesquisa de Configurações", - "tryDisablingExtensions": "O problema é reproduzível quando as extensões são desabilitadas?", - "yes": "Sim", - "no": "Não", - "disableExtensionsLabelText": "Tente reproduzir o problema depois de {0}.", - "disableExtensions": "desabilitando todas as extensões e recarregando a janela", - "showRunningExtensionsLabelText": "Se você suspeita que isso seja um problema de extensão, {0} para reportar o problema com a extensão.", - "showRunningExtensions": "ver todas as extensões em execução", "details": "Por favor informe detalhes.", "loadingData": "Carregando dados..." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/ptb/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..8f468bf0efc --- /dev/null +++ b/i18n/ptb/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,15 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "cpu": "% DE CPU", + "memory": "Memória (MB)", + "pid": "PID", + "name": "Nome", + "killProcess": "Matar processo", + "forceKillProcess": "Matar processo a força" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-main/menus.i18n.json b/i18n/ptb/src/vs/code/electron-main/menus.i18n.json index 19bc2c801cd..68f544d5457 100644 --- a/i18n/ptb/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/ptb/src/vs/code/electron-main/menus.i18n.json @@ -161,6 +161,7 @@ "mMergeAllWindows": "Mesclar todas as janelas", "miToggleDevTools": "&&Alternar Ferramentas do Desenvolvedor", "miAccessibilityOptions": "&&Opções de Acessibilidade", + "miOpenProcessExplorerer": "Abrir o &&Process Explorer", "miReportIssue": "Reportar &&Problema", "miWelcome": "&&Bem-vindo", "miInteractivePlayground": "Playground &&Interativo", diff --git a/i18n/ptb/src/vs/code/electron-main/windows.i18n.json b/i18n/ptb/src/vs/code/electron-main/windows.i18n.json index a6234f91276..25a098f0535 100644 --- a/i18n/ptb/src/vs/code/electron-main/windows.i18n.json +++ b/i18n/ptb/src/vs/code/electron-main/windows.i18n.json @@ -8,7 +8,7 @@ ], "ok": "OK", "pathNotExistTitle": "O caminho não existe", - "pathNotExistDetail": "O caminho '{0}' não parece mais existir no disco.", + "pathNotExistDetail": "Aparentemente o caminho {0} não existe mais no disco.", "reopen": "&&Reabrir", "wait": "&&Continuar Aguardando", "close": "&&Fechar", diff --git a/i18n/ptb/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/ptb/src/vs/editor/browser/widget/diffReview.i18n.json index de20d2cf5b9..fd79f520ec4 100644 --- a/i18n/ptb/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/ptb/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Fechar", - "header": "Diferença {0} de {1}: original {2}, {3} linhas, modificado {4}, {5} linhas", "blankLine": "branco", "equalLine": "original {0}, modificados {1}: {2}", "insertLine": "+ modificado {0}: {1}", diff --git a/i18n/ptb/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/ptb/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/editor/common/config/commonEditorConfig.i18n.json b/i18n/ptb/src/vs/editor/common/config/commonEditorConfig.i18n.json index d31266adb34..0b3fe531920 100644 --- a/i18n/ptb/src/vs/editor/common/config/commonEditorConfig.i18n.json +++ b/i18n/ptb/src/vs/editor/common/config/commonEditorConfig.i18n.json @@ -46,6 +46,7 @@ "multiCursorModifier.ctrlCmd": "Mapeia para 'Control' no Windows e Linux e para 'Command' no macOS.", "multiCursorModifier.alt": "Mapeia para 'Alt' em Windows e Linux e para 'Option' em macOS.", "multiCursorModifier": "O modificador a ser usado para adicionar vários cursores com o mouse. `ctrlCmd` mapeia para 'Control' no Windows e Linux e para 'Command' no macOS. Os gestos do mouse Ir para definição e Abrir Link irão adaptar-se de forma que eles não entrem em conflito com o modificador multicursor.", + "multiCursorMergeOverlapping": "Mesclar vários cursores quando eles estão sobrepostos.", "quickSuggestions.strings": "Habilitar sugestões rápidas dentro de strings.", "quickSuggestions.comments": "Habilitar sugestões rápidas dentro de comentários.", "quickSuggestions.other": "Habilitar sugestões rápidas fora de strings e comentários.", @@ -88,6 +89,9 @@ "renderLineHighlight": "Controla como o editor deve renderizar a linha atual, as possibilidades são 'none', 'gutter', 'line' e 'all'.", "codeLens": "Controla se o editor exibirá a lente de códigos.", "folding": "Controla se o editor tem codigo colapsível hablitado", + "foldingStrategyAuto": "Se disponível, use uma estratégia de dobramento específica de idioma, caso contrário, recua para a estratégia baseada na indentação.", + "foldingStrategyIndentation": "Sempre use a estratégia de dobragem baseada no indentação ", + "foldingStrategy": "Controla a maneira como os intervalos de dobra são calculados. As opções 'auto' usam uma estratégia de dobra específica de idioma, se disponível. 'indentação' força o uso da estratégia de dobragem baseada na indentação.", "showFoldingControls": "Controla se os controles de desdobramento na divisão são ocultas automaticamente.", "matchBrackets": "Realça colchetes correspondente quando um deles estiver selecionado.", "glyphMargin": "Controla se o editor deve renderizar a margem vertical de ícones. A margem vertical de ícones é usada primordialmente na depuração", @@ -105,5 +109,7 @@ "selectionClipboard": "Controla se a área primária de transferência Linux deve ser suportada.", "sideBySide": "Controla se o editor de diff mostra as diff lado a lado ou inline.", "ignoreTrimWhitespace": "Controla se o editor de diff mostra alterações nos espaços iniciais ou finais como diferenças", + "largeFileSize": "Controles de limite de tamanho do arquivo em bytes além do qual são aplicadas as regras de otimização especial", + "largeFileLineCount": "Limite de tamanho de arquivo de controles em termos de número de linhas, além do qual são aplicadas as regras de otimização especial", "renderIndicators": "Controla se o editor de diff mostra indicadores +/- para alterações adicionadas/removidas" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json index 7ac6b700d4b..d7f075f4fc0 100644 --- a/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/ptb/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -16,6 +16,7 @@ "editorIndentGuides": "Cor das guias de indentação do editor.", "editorLineNumbers": "Cor dos números de linha do editor.", "editorActiveLineNumber": "Cor dos números de linhas do editor", + "deprecatedEditorActiveLineNumber": "Identificação foi descontinuado. Use 'editorLineNumber.activeForeground' em vez disso.", "editorRuler": "Cor das réguas do editor.", "editorCodeLensForeground": "Cor do primeiro plano das lentes de código do editor", "editorBracketMatchBackground": "Cor de fundo atrás do colchetes correspondentes", @@ -28,6 +29,9 @@ "warningBorder": "Cor da borda das linhas onduladas de aviso no editor.", "infoForeground": "Cor do primeiro plano das linhas de informação no editor.", "infoBorder": "Cor da borda das linhas de informação no editor.", + "hintForeground": "Cor de primeiro plano de linhas onduladas de dica no editor.", + "hintBorder": "Cor da borda de linhas onduladas de dica no editor.", + "overviewRulerRangeHighlight": "Visão geral da cor do marcador da régua para destaques do intervalo. A cor não deve ser opaca para não esconder decorações subjacentes.", "overviewRuleError": "Visão geral da cor do marcador da régua para erros.", "overviewRuleWarning": "Visão geral da cor do marcador da régua para avisos.", "overviewRuleInfo": "Visão geral da cor do marcador da régua para informações." diff --git a/i18n/ptb/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/ptb/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..11ddcaff63f --- /dev/null +++ b/i18n/ptb/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Mostrar correções ({0})", + "quickFix": "Mostrar correções" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/ptb/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 35229bd6699..8b1d4736ce9 100644 --- a/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/ptb/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -5,5 +5,43 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "Sunday": "Domingo", + "Monday": "Segunda-feira", + "Tuesday": "Terça-feira", + "Wednesday": "Quarta-feira", + "Thursday": "Quinta-feira", + "Friday": "Sexta-feira", + "Saturday": "Sábado", + "SundayShort": "Dom", + "MondayShort": "Seg", + "TuesdayShort": "Ter", + "WednesdayShort": "Qua", + "ThursdayShort": "Qui", + "FridayShort": "Sex", + "SaturdayShort": "Sáb", + "January": "Janeiro", + "February": "Fevereiro", + "March": "Março", + "April": "Abril", + "May": "Maio", + "June": "Junho", + "July": "Julho", + "August": "Agosto", + "September": "Setembro", + "October": "Outubro", + "November": "Novembro", + "December": "Dezembro", + "JanuaryShort": "Jan", + "FebruaryShort": "Fev", + "MarchShort": "Mar", + "AprilShort": "Abr", + "MayShort": "Mai", + "JuneShort": "Jun", + "JulyShort": "Jul", + "AugustShort": "Ago", + "SeptemberShort": "Set", + "OctoberShort": "Out", + "NovemberShort": "Nov", + "DecemberShort": "Dez" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 882f079794f..1c858bde51c 100644 --- a/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/ptb/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "Cor de fundo de um símbolo durante o acesso de escrita, como ao escrever uma variável. A cor não deve ser opaca para não ocultar as decorações subjacentes.", "wordHighlightBorder": "Cor de fundo de um símbolo durante acesso de leitura, como ao ler uma variável.", "wordHighlightStrongBorder": "Cor de fundo de um símbolo durante acesso de escrita, como ao escrever uma variável.", + "overviewRulerWordHighlightForeground": "Visão geral da cor do marcador da régua para destaques de símbolos. A cor não deve ser opaca para não esconder decorações subjacentes.", + "overviewRulerWordHighlightStrongForeground": "Visão geral da cor do marcador da régua para destaques de símbolos de acesso de escrita. A cor não deve ser opaca para não esconder decorações subjacentes.", "wordHighlight.next.label": "Ir para o próximo símbolo em destaque", "wordHighlight.previous.label": "Ir para o símbolo de destaque anterior" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/environment/node/argv.i18n.json b/i18n/ptb/src/vs/platform/environment/node/argv.i18n.json index 9e468f9401d..768ee3289ce 100644 --- a/i18n/ptb/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/ptb/src/vs/platform/environment/node/argv.i18n.json @@ -29,9 +29,7 @@ "performance": "Comece com o 'Desenvolvedor: Desempenho de inicialização' comando habilitado.", "prof-startup": "Rodar o CPU profiler durante a inicialização", "disableExtensions": "Desabilita todas as extensões instaladas.", - "inspect-extensions": "Permite depuração e criação de perfis de extensões. Verifique as ferramentas de desenvolvimento para a conexão uri.", - "inspect-brk-extensions": "Permitir depuração e criação de perfil de extensões com o host de extensão em pausa após o início. Verifique as ferramentas do desenvolvedor para a conexão uri.", - "disableGPU": "Desabilita aceleração de hardware da GPU.", + "disableGPU": "Desabilita aceleração de hardware via GPU.", "uploadLogs": "Envia os registros de atividade da sessão atual para um destino seguro.", "maxMemory": "Tamanho máximo de memória para uma janela (em Mbytes).", "usage": "Uso", diff --git a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index fd53e61c4d3..6bd9ed493bf 100644 --- a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,12 +14,15 @@ "errorInstallingDependencies": "Erro ao instalar dependências. {0}", "MarketPlaceDisabled": "Loja não está habilitada.", "removeError": "Erro ao remover a extensão: {0}. por favor, Saia e Inicie o VS Code antes de tentar novamente.", + "Not a Marketplace extension": "Somente Extensões da Loja podem ser reinstaladas", "notFoundCompatible": "Não foi possível instalar '{0}; não existe nenhuma versão compatível com o VSCode '{1}'.", "malicious extension": "Não foi possível instalar a extensão, pois foi relatada como problemática.", "notFoundCompatibleDependency": "Não foi possível instalar porque a extensão dependente '{0}' compatível com a versão atual '{1}' do VS Code não foi encontrada.", "quitCode": "Não foi possível instalar a extensão. Por favor, saia e reinicie o VS Code antes de reinstalar.", "exitCode": "Não foi possível instalar a extensão. Por favor, saia e reinicie o VS Code antes de reinstalar.", "uninstallDependeciesConfirmation": "Gostaria de desinstalar '{0}' somente, ou suas dependências também?", + "uninstallOnly": "Somente Extensão", + "uninstallAll": "Desinstalar Tudo", "uninstallConfirmation": "Tem certeza que deseja desinstalar '{0}'?", "ok": "OK", "singleDependentError": "Não foi possível desinstalar a extensão '{0}'. A extensão '{1}' depende dela.", diff --git a/i18n/ptb/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/ptb/src/vs/platform/extensions/node/extensionValidator.i18n.json index 01ad5432236..ba2aa8d0b24 100644 --- a/i18n/ptb/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/ptb/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Não foi possível analisar o valor de 'engines.vscode' {0}. Por favor, utilize, por exemplo: ^ 0.10.0, ^ 1.2.3, ^ 0.11.0, ^ 0.10.x, etc.", "versionSpecificity1": "Versão especificada em 'engines.vscode' ({0}) não é específica o suficiente. Para versões do vscode anteriores a 1.0.0, por favor defina no mínimo a versão principal e secundária desejada. Por exemplo, ^ 0.10.0, 0.10.x, 0.11.0, etc.", "versionSpecificity2": "Versão especificada em 'engines.vscode' ({0}) não é específica o suficiente. Para as versões do vscode posteriores a 1.0.0, por favor defina no mínimo a versão principal do desejado. Por exemplo, ^ 1.10.0, 1.10.x 1. XX, 2.x.x, etc.", "versionMismatch": "Extensão não é compatível com Code {0}. A extensão requer: {1}." diff --git a/i18n/ptb/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/ptb/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index 941e39f27a1..a3c2b5abd84 100644 --- a/i18n/ptb/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/ptb/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "Sua instalação de {0} parece estar corrompida. Favor reinstalar.", "integrity.moreInformation": "Mais informações", - "integrity.dontShowAgain": "Não mostrar novamente", - "integrity.prompt": "Sua instalação de {0} parece estar corrompida. Favor reinstalar." + "integrity.dontShowAgain": "Não mostrar novamente" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/list/browser/listService.i18n.json b/i18n/ptb/src/vs/platform/list/browser/listService.i18n.json index 0d4902c10e2..e21fa3376d2 100644 --- a/i18n/ptb/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/ptb/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "O modificador deve ser usado para adicionar um item nas listas e árvores para uma multi-seleção com o mouse (por exemplo, no explorador, editores abertos e exibição scm). 'ctrlCmd' mapeia para 'Control' no Windows e Linux e 'Command' no macOS. Os gestos do mouse 'Aberto ao lado' - se suportado - irá adaptar-se de tal forma que eles não entrem em conflito com o modificador de várias seleções.", "openMode.singleClick": "Abre os itens em um único clique do mouse.", "openMode.doubleClick": "Abre os itens com duplo clique do mouse. ", - "openModeModifier": "Controla como abrir itens em árvores e listas usando o mouse (se suportado). Definido como 'singleClick' para abrir itens com um único clique do mouse e 'doubleClick' para abrir somente através do duplo clique do mouse. Para os pais com filhos em árvores, essa configuração controla se um único clique expande o pai ou um clique duplo. Note que algumas árvores e listas podem optar por ignorar essa configuração, se não for aplicável. " + "openModeModifier": "Controla como abrir itens em árvores e listas usando o mouse (se suportado). Definido como 'singleClick' para abrir itens com um único clique do mouse e 'doubleClick' para abrir somente através do duplo clique do mouse. Para os pais com filhos em árvores, essa configuração controla se um único clique expande o pai ou um clique duplo. Note que algumas árvores e listas podem optar por ignorar essa configuração, se não for aplicável. ", + "horizontalScrolling setting": "Controla se as árvores suportam a rolagem horizontal na área de trabalho." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json index e1497a91dee..a33d1357414 100644 --- a/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/ptb/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "Cor da borda dos cabeçalhos e separadores estão em conflito de mesclagem em linha.", "overviewRulerCurrentContentForeground": "Cor de fundo de régua de visuaização atual em conflito de mesclagem em linha.", "overviewRulerIncomingContentForeground": "Cor de fundo de régua de visuaização de entrada em conflito de mesclagem em linha.", - "overviewRulerCommonContentForeground": "Ancestral comum da cor da régua de visão geral para conflitos de mesclagem inline." + "overviewRulerCommonContentForeground": "Ancestral comum da cor da régua de visão geral para conflitos de mesclagem inline.", + "overviewRulerFindMatchForeground": "Visão geral da cor do marcador da régua para correspondências de localização. A cor não deve ser opaca para não esconder decorações subjacentes.", + "overviewRulerSelectionHighlightForeground": "Visão geral da cor do marcador da régua para destaques de seleção. A cor não deve ser opaca para não esconder decorações subjacentes." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/ptb/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..b25f4fe2939 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "a propriedade `{0}` é obrigatória e deve ser do tipo `string`", + "showViewlet": "Mostrar {0}", + "view": "Exibir" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/ptb/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 94adc8bdb1b..dfe343c9d2b 100644 --- a/i18n/ptb/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/ptb/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Contribui visualizações ao editor", "views.explorer": "Visualização do explorador", "views.debug": "Visualizar Depurador", - "locationId.invalid": "'{0}' não é um local válido de visualização", "duplicateView1": "Não é possível registrar vários modos de exibição com a mesma id '{0}' no local '{1}'", "duplicateView2": "Uma exibição com id '{0}' já está registrada no local '{1}'" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 4498984aac3..35229bd6699 100644 --- a/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/ptb/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "editor webview" + ] } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 745e5b68758..3991d555141 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -26,6 +26,7 @@ "showOpenedEditors": "Mostrar editores abertos", "keepEditor": "Manter editor", "closeEditorsInGroup": "Fechar todos editores no grupo", + "closeSavedEditors": "Fechar Editores Salvos em Grupo", "closeOtherEditors": "Fechar outros editores", "closeRightEditors": "Fechar editores à direita" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index ec0d2b3b02a..086dcb9f4da 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "Se você não estiver usando um leitor de tela, por favor altere a configuração `editor.accessibilitySupport` para \"desligado\".", "disableTabMode": "Desativar o modo de acessibilidade", "gotoLine": "Ir para linha", - "indentation": "Indentação", "selectEncoding": "Selecionar a codificação", "selectEOL": "Selecionar a sequência de fim de linha", "selectLanguageMode": "Selecionar modo de idioma", diff --git a/i18n/ptb/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index bfe39400384..d65e8370bed 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0}MB", "sizeGB": "{0}GB", "sizeTB": "{0}TB", - "largeImageError": "O tamanho do arquivo da imagem é muito grande (>1MB) para exibir no editor. ", "resourceOpenExternalButton": "Abrir imagem usando um programa externo?", - "nativeBinaryError": "O arquivo não pode ser exibido no editor porque é binário, muito grande ou usa uma codificação de texto sem suporte.", "zoom.action.fit.label": "Toda a imagem", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index b2e58614a30..0f4a30c299f 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Nenhuma nova notificação", "notifications": "Notificações", + "notificationsToolbar": "Ações da Central de Notificações", "notificationsList": "Lista de Notificações" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 02b9b9c0ccf..c73d363c135 100644 --- a/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -7,5 +7,8 @@ "Do not edit this file. It is machine generated." ], "hideNotifications": "Ocultar Notificações", - "oneNotification": "1 Nova Notificação" + "zeroNotifications": "Sem Notificações", + "noNotifications": "Sem Novas Notificações", + "oneNotification": "1 Nova Notificação", + "notifications": "{0} Novas Notificações" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..bcdf56e4849 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "OK" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/workbench/browser/viewlet.i18n.json b/i18n/ptb/src/vs/workbench/browser/viewlet.i18n.json index bf6f25565e7..d3bee3ce826 100644 --- a/i18n/ptb/src/vs/workbench/browser/viewlet.i18n.json +++ b/i18n/ptb/src/vs/workbench/browser/viewlet.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "compositePart.hideSideBarLabel": "Ocultar a Barra Lateral", "collapse": "Recolher tudo" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/ptb/src/vs/workbench/electron-browser/actions.i18n.json index 69ab398eeb1..74295c8a145 100644 --- a/i18n/ptb/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/ptb/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Reinicializar Zoom", "appPerf": "Desempenho de inicialização", "reloadWindow": "Recarregar Janela", + "reloadWindowWithExntesionsDisabled": "Recarregar Janela Com Extensões Desabilitadas", "switchWindowPlaceHolder": "Selecionar uma janela para onde alternar", "current": "Janela Atual", "close": "Fechar Janela", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Mover a guia da janela para a nova janela", "mergeAllWindowTabs": "Mesclar todas as janelas", "toggleWindowTabsBar": "Alternar a Barra de Guias da Janela", - "about": "Sobre {0}" + "about": "Sobre {0}", + "inspect context keys": "Inspecionar Chaves de Contexto" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json index 8fd73e4f40c..15dd21d37a3 100644 --- a/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,13 @@ "windowConfigurationTitle": "Janela", "window.openFilesInNewWindow.on": "Arquivos serão abertos em uma nova janela", "window.openFilesInNewWindow.off": "Arquivos serão abertos em uma nova janela com a pasta de arquivos aberta ou com a última janela ativa.", + "window.openFilesInNewWindow.defaultMac": "Arquivos serão abertos na janela com a pasta dos arquivos aberta ou a última janela ativa, a menos que tenha sido aberta pelo Dock ou pelo Finder", + "window.openFilesInNewWindow.default": "Arquivos serão abertos em uma nova janela, a menos que escolhidos dentro do aplicativo (por exemplo, através do menu de arquivo)", "window.openFoldersInNewWindow.on": "As pastas serão abertas em uma nova janela", "window.openFoldersInNewWindow.off": "As pastas substituirão a última janela ativa", "window.openFoldersInNewWindow.default": "As pastas serão abertas em uma nova janela, a menos que uma pasta seja selecionada dentro do aplicativo (por exemplo, através do menu Arquivo)", "openFoldersInNewWindow": "Controla se as pastas devem ser abertas em uma nova janela ou substituir a última janela ativa\n- padrão: as pastas serão abertas em uma nova janela, a menos que seja selecionada dentro do aplicativo (por exemplo, através do menu Arquivo)\n- ligado: as pastas serão abertas em uma nova janela\n- desligado: as pastas substituirão a última janela ativa\nNote que ainda podem haver casos em que esta configuração será ignorada (por exemplo, quando estiver usando as opções de linha de comando -new-window ou -reuse-window).", + "window.openWithoutArgumentsInNewWindow.on": "Abrir uma nova janela vazia", "window.reopenFolders.all": "Reabrir todas as janelas.", "window.reopenFolders.folders": "Reabrir todas as pastas. Espaços de trabalho vazios não serão restaurados.", "window.reopenFolders.one": "Reabrir a última janela ativa.", @@ -73,6 +76,7 @@ "window.nativeTabs": "Habilita as abas da janela do macOS Sierra. Note que as alterações exigem um reinício completo e que as abas nativas desabilitarão um estilo de barra de título customizado, se configurado.", "zenModeConfigurationTitle": "Modo Zen", "zenMode.fullScreen": "Controla se a ativação do modo Zen também coloca o espaço de trabalho em modo de tela cheia.", + "zenMode.centerLayout": "Controla se ativar o Modo Zen também centraliza o layout.", "zenMode.hideTabs": "Controla se a ativação do modo Zen também oculta as abas do espaço de trabalho.", "zenMode.hideStatusBar": "Controla se a ativação do modo Zen também oculta a barra de status no rodapé do espaço de trabalho.", "zenMode.hideActivityBar": "Controla se a ativação do modo Zen também oculta a barra de atividades à esquerda do espaço de trabalho.", diff --git a/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index e3be93ecafc..4aab0d24a42 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,11 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Editar o Ponto de Parada...", "functionBreakpointsNotSupported": "Pontos de parada de função não são suportados por este tipo de depuração", "functionBreakpointPlaceholder": "Função de parada", "functionBreakPointInputAriaLabel": "Digitar Ponto de Parada de Função", "breakpointDisabledHover": "Ponto de interrupção desativado", + "breakpointUnverifieddHover": "Ponto de Parada não Verificado", + "functionBreakpointUnsupported": "Função de ponto de parada não é suportado por este tipo de debug", "breakpointDirtydHover": "Ponto de parada não verificado. O arquivo foi modificado, por favor reinicie a sessão de depuração.", - "conditionalBreakpointUnsupported": "Pontos de parada condicionais não são suportados por esse tipo de depurador" + "conditionalBreakpointUnsupported": "Pontos de parada condicionais não são suportados por esse tipo de depurador", + "hitBreakpointUnsupported": "Pontos de parada condicionais não são suportados por este tipo de debug" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index fc9ccfbe315..8d9d177e084 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Primeiro abra uma pasta para fazer uma configuração de depuração avançada.", + "columnBreakpoint": "Coluna de ponto de parada", "debug": "Depurar", "addColumnBreakpoint": "Adicionar Ponto de Interrupção de Coluna" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index 291cad9feea..ae25f330896 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "Não é possível resolver o recurso sem uma sessão de depuração" + "unable": "Não é possível resolver o recurso sem uma sessão de depuração", + "canNotResolveSource": "Não foi possível resolver o recurso {0}, não há resposta da extensão do debug." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index e3644af4287..0e03569a94f 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,6 @@ ], "breakpointWidgetHitCountPlaceholder": "Parar quando contagem de ocorrências condição for alcançada. 'Enter' para aceitar, 'esc' para cancelar.", "breakpointWidgetExpressionPlaceholder": "Parar quando a expressão for avaliada como true. 'Enter' para aceitar, 'esc' para cancelar.", - "breakpointWidgetHitCountAriaLabel": "O programa só vai parar aqui, se a contagem de ocorrências for alcançada. Pressione Enter para aceitar ou Escape para cancelar.", - "breakpointWidgetAriaLabel": "O programa só vai parar aqui se esta condição for verdadeira. Pressione Enter para aceitar ou Escape para cancelar.", "expression": "Expressão", "hitCount": "Contagem de ocorrências" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 6d03421bc47..7d73da69fcf 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Por favor, use nomes únicos de configuração.", "app.launch.json.compound.folder": "Nome da pasta em que o composto se encontra.", "app.launch.json.compounds.configurations": "Nomes das configurações que serão iniciadas como parte deste composto.", - "debugNoType": "'type' do adaptador de depuração não pode ser omitido e deve ser do tipo 'string'.", "selectDebug": "Selecione o ambiente", "DebugConfig.failed": "Não é possível criar o arquivo 'launch.json' dentro da pasta '.vscode' ({0}).", "workspace": "espaço de trabalho", diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 0f414408390..3e8dc5d2303 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Editar o Ponto de Parada...", - "disableBreakpoint": "Desativar Ponto de Parada", - "enableBreakpoint": "Habilitar ponto de Parada", "removeBreakpoints": "Remover pontos de interrupção", "removeBreakpointOnColumn": "Remover ponto de interrupção na coluna {0}", "removeLineBreakpoint": "Remover ponto de interrupção de linha", @@ -21,6 +18,7 @@ "enableBreakpoints": "Habilitar o ponto de interrupção na coluna {0}", "enableBreakpointOnLine": "Habilitar o ponto de interrupção de linha", "addBreakpoint": "Adicionar ponto de interrupção", - "conditionalBreakpoint": "Adicionar Ponto de Parada Condicional...", + "addConditionalBreakpoint": "Adicionar Ponto de Parada Condicional...", + "cancel": "Cancelar", "addConfiguration": "Adicionar Configuração..." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index a29d2cb2439..1551a564cda 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Ponto de interrupção removido, linha {0}, arquivo {1}", "compoundMustHaveConfigurations": "Composição deve ter o atributo \"configurations\" definido para iniciar várias configurações.", "noConfigurationNameInWorkspace": "Não foi possível encontrar a configuração de inicialização '{0}' na área de trabalho.", + "multipleConfigurationNamesInWorkspace": "Existem múltiplas configurações de lançamento '{0}' na área de trabalho. Use o nome da pasta para qualificar a configuração.", "noFolderWithName": "Não é possível encontrar a pasta com nome '{0}' para configuração '{1}' no composto '{2}'.", "configMissing": "Configuração '{0}' não tem 'launch.json'.", "launchJsonDoesNotExist": "'launch.json' não existe.", + "debugRequestNotSupported": "Atributo '{0}' tem um valor sem suporte '{1}' na configuração de debug escolhida.", "debugRequesMissing": "Atributo '{0}' está faltando para a configuração de depuração escolhida.", "debugTypeNotSupported": "Tipo de depuração configurado '{0}' não é suportado.", "debugTypeMissing": "Falta a propriedade 'type' para a configuração de lançamento escolhida.", @@ -26,5 +28,6 @@ "preLaunchTaskExitCode": "A preLaunchTask '{0}' encerrada com código de saída {1}.", "showErrors": "Mostrar erros", "noFolderWorkspaceDebugError": "O arquivo ativo não pode ser depurado. Certifique-se de que ele está salvo no disco e que tem uma extensão de depuração instalada para esse tipo de arquivo.", - "cancel": "Cancelar" + "cancel": "Cancelar", + "taskNotTracked": "A tarefa '{0}' não pode ser rastreada." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index c6a227f6440..3b712f1be09 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Mais Informações", - "unableToLaunchDebugAdapter": "Não é possível executar o adaptador de depuração de '{0}'.", - "unableToLaunchDebugAdapterNoArgs": "Não é possível executar o adaptador de depuração.", - "stoppingDebugAdapter": "{0}. Parando o adaptador de depuração.", "debugAdapterCrash": "Processo do adaptador de depuração foi finalizado inesperadamente" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 68f9e1f25bf..18e436b0f51 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "Executável do adaptador de depuração '{0}' não existe.", "debugAdapterCannotDetermineExecutable": "Não é possível determinar o executável para o adaptador de depuração '{0}'.", - "launch.config.comment1": "Use o IntelliSense para aprender sobre possíveis atributos.", - "launch.config.comment2": "Passe o mouse para ver as descrições dos atributos existentes.", - "launch.config.comment3": "Para obter mais informações, visite: {0}", - "debugType": "Tipo de configuração.", - "debugTypeNotRecognised": "O tipo de depuração não é reconhecido. Certifique-se de que você tem uma extensão de depuração correspondente instalada e que ela está habilitada.", - "node2NotSupported": "\"node2\" não é mais suportado, use \"node\" ao invés e defina o atributo \"protocol\" para \"inspector\".", - "debugName": "Nome da configuração; aparece no menu drop-down da configuração de lançamento. ", - "debugRequest": "Requer o tipo de configuração. Pode ser \"launch\" ou \"attach\".", - "debugServer": "Somente para o desenvolvimento de extensão de depuração: se uma porta é especificada, o VS Code tenta se conectar a um adaptador de depuração executando em modo de servidor", - "debugPrelaunchTask": "Tarefa para ser executada antes de começar a sessão de depuração.", - "debugWindowsConfiguration": "Atributos de configuração de lançamento específicos do Windows.", - "debugOSXConfiguration": "Atributos de configuração de lançamento específicos do OS X.", - "debugLinuxConfiguration": "Atributos de configuração de lançamento específicos do Linux.", - "deprecatedVariables": "'env.', 'config.' e 'command.' foram descontinuados, use ' env:', ' config:' e ' command:' em vez disso." + "unableToLaunchDebugAdapter": "Não é possível executar o adaptador de depuração de '{0}'.", + "unableToLaunchDebugAdapterNoArgs": "Não é possível executar o adaptador de depuração." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..ddf29b94374 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,23 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment2": "Passe o mouse para ver as descrições dos atributos existentes.", + "launch.config.comment3": "Para obter mais informações, visite: {0}", + "debugType": "Tipo de configuração.", + "debugTypeNotRecognised": "O tipo de depuração não é reconhecido. Certifique-se de que você tem uma extensão de depuração correspondente instalada e que ela está habilitada.", + "node2NotSupported": "\"node2\" não é mais suportado, use \"node\" ao invés e defina o atributo \"protocol\" para \"inspector\".", + "debugName": "Nome da configuração; aparece no menu drop-down da configuração de lançamento. ", + "debugRequest": "Requer o tipo de configuração. Pode ser \"launch\" ou \"attach\".", + "debugServer": "Somente para o desenvolvimento de extensão de depuração: se uma porta é especificada, o VS Code tenta se conectar a um adaptador de depuração executando em modo de servidor", + "debugPrelaunchTask": "Tarefa para ser executada antes de começar a sessão de depuração.", + "debugPostDebugTask": "Tarefa para ser executada após término da sessão de debug.", + "debugWindowsConfiguration": "Atributos de configuração de lançamento específicos do Windows.", + "debugOSXConfiguration": "Atributos de configuração de lançamento específicos do OS X.", + "debugLinuxConfiguration": "Atributos de configuração de lançamento específicos do Linux.", + "deprecatedVariables": "'env.', 'config.' e 'command.' foram descontinuados, use ' env:', ' config:' e ' command:' em vez disso." +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..0043a4db9f3 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "Console VS Code", + "mac.terminal.script.failed": "Script '{0}' falhou com código de saída {1}", + "mac.terminal.type.not.supported": "'{0}' não suportado", + "press.any.key": "Pressione qualquer tecla para continuar...", + "linux.term.failed": "'{0}' falhou com código de saída {1}" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index ed84158ab3a..86302d2d217 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,15 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Baixar manualmente", "installAction": "Instalar", "installing": "Instalando", + "failedToInstall": "Falha ao instalar '{0}'.", "uninstallAction": "Desinstalar", "Uninstalling": "Desinstalando", "updateAction": "Atualizar", "updateTo": "Atualizar para {0}", + "failedToUpdate": "Falha ao atualizar '{0}'.", "ManageExtensionAction.uninstallingTooltip": "Desinstalando", "enableForWorkspaceAction": "Habilitar (Espaço de Trabalho)", "enableGloballyAction": "Habilitar", @@ -54,8 +57,11 @@ "configureWorkspaceFolderRecommendedExtensions": "Configurar as Extensões Recomendadas (Pasta do Espaço de Trabalho)", "malicious tooltip": "Esta extensão foi relatada como problemática.", "malicious": "Malicioso", + "disabled": "Desativado", + "disabled globally": "Desativado", "disableAll": "Desabilitar Todas as Extensões Instaladas", "disableAllWorkspace": "Desabilitar Todas as Extensões Instaladas para este Espaço de Trabalho", + "enableAll": "Ativar Todas as Extensões", "openExtensionsFolder": "Abrir a Pasta de Extensões", "installVSIX": "Instalar do VSIX...", "installFromVSIX": "Instalar a partir do VSIX", diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index c50dddb3166..f6209cf359d 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -33,13 +33,17 @@ "view id": "ID", "view name": "Nome", "view location": "Onde", + "localizations": "Localizações ({0})", "localizations language id": "Id do Idioma", - "localizations language name": "Nome do Idioma", - "localizations localized language name": "Nome do Idioma (Localizado)", + "colorThemes": "Temas de cores ({0})", + "iconThemes": "Temas de ícones ({0})", + "colors": "Cores ({0})", "colorId": "Id", "defaultDark": "Padrão Escuro", "defaultLight": "Padrão Claro", + "defaultHC": "Padrão de Alto Contraste", "JSON Validation": "Validação JSON ({0})", + "schema": "Esquema", "commands": "Comandos ({0})", "command name": "Nome", "keyboard shortcuts": "Atalhos de Teclado", diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 9afc0966221..e88b86ca28f 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,13 +8,15 @@ ], "neverShowAgain": "Não mostrar novamente", "searchMarketplace": "Pesquisar na Loja", + "showLanguagePackExtensions": "A loja possui extensões que podem ajudar na localização do VS Code para o local '{0}'", + "dynamicWorkspaceRecommendation": "Esta extensão pode interessá-lo porque é popular entre os usuários do repositório {0}.", "exeBasedRecommendation": "Esta extensão é recomendada porque você tem {0} instalado.", "fileBasedRecommendation": "Esta extensão é recomendada baseada nos arquivos que você abriu recentemente.", "workspaceRecommendation": "Esta extensão é recomendada pelos usuários da área de trabalho atual.", "reallyRecommended2": "A extensão {0} é recomendada para este tipo de arquivo.", "reallyRecommendedExtensionPack": "O pacote de extensão '{0}' é recomendado para este tipo de arquivo.", - "showRecommendations": "Mostrar Recomendações", "install": "Instalar", + "showRecommendations": "Mostrar Recomendações", "showLanguageExtensions": "A Loja tem extensões que podem ajudar com arquivos '.{0}'", "workspaceRecommended": "Este espaço de trabalho possui recomendações de extensão.", "installAll": "Instalar Tudo", diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index d9fc84f40b8..af3364f4bd8 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Desabilitar outros mapeamentos de teclado ({0}) para evitar conflitos entre as combinações de teclas?", "yes": "Sim", - "no": "Não", - "betterMergeDisabled": "A extensão Better Merge agora é intrínseca, a extensão instalada foi desabilitada e pode ser desinstalada.", - "uninstall": "Desinstalar" + "no": "Não" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 963936e2ac1..5d4dd840e84 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "Recomendado", "otherRecommendedExtensions": "Outras recomendações", "workspaceRecommendedExtensions": "Recomendações do Espaço de Trabalho", + "builtInExtensions": "Funcionalidades", + "builtInThemesExtensions": "Temas", "searchExtensions": "Pesquisar Extensões na Loja", "sort by installs": "Ordenar por: Quantidade de Instalações", "sort by rating": "Ordenar por: Avaliação", diff --git a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index d626a3f28d4..bb320e7128c 100644 --- a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -32,7 +32,8 @@ "confirmDeleteMessageFolder": "Tem certeza de que deseja excluir permanentemente '{0}' e seu conteúdo?", "confirmDeleteMessageFile": "Tem certeza de que deseja excluir permanentemente '{0}'?", "irreversible": "Esta ação é irreversível!", - "importFiles": "Importar Arquivos", + "deletePermanentlyButtonLabel": "&&Excluir Permanentemente", + "retryButtonLabel": "&&Tentar Novamente", "confirmOverwrite": "Um arquivo ou pasta com o mesmo nome já existe na pasta de destino. Você quer substituí-lo?", "replaceButtonLabel": "&&Substituir", "fileDeleted": "Arquivo para colar foi excluído ou movido no meio-tempo", diff --git a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index bfb3cdc41bf..d918ced097a 100644 --- a/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Digite o Nome do arquivo. Pressione Enter para confirmar ou Escape para cancelar.", - "constructedPath": "Criar {0} em **{1}**", "filesExplorerViewerAriaLabel": "{0}, Explorador de Arquivos", "dropFolders": "Você deseja adicionar as pastas ao espaço de trabalho?", "dropFolder": "Você quer adicionar a pasta no espaço de trabalho?", diff --git a/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 1148faff8d9..32575a778b5 100644 --- a/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Gostaria de alternar o idioma da interface do usuário do VS Code para {0} e reiniciar?", "yes": "Sim", "no": "Não", - "doNotAskAgain": "Não me pergunte novamente", + "neverAgain": "Não mostrar novamente", "JsonSchema.locale": "O idioma da interface do usuário a ser usada.", "vscode.extension.contributes.localizations": "Contribui localizações ao editor", "vscode.extension.contributes.localizations.languageId": "Id do idioma em que as strings de exibição estão traduzidas.", diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index a285e05a853..ed26614c2ca 100644 --- a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "Copiar", - "copyMarkerMessage": "Copiar Mensagem" + "copyMessage": "Copiar Mensagem" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index b5d8f47647e..8323facb36a 100644 --- a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Total {0} Problemas", - "filteredProblems": "Mostrando {0} de {1} Problemas" + "totalProblems": "Total {0} Problemas" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 9997fe77588..4c8c7d44a47 100644 --- a/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Problemas", "markers.panel.aria.label.problems.tree": "Problemas agrupados por arquivos", "markers.panel.no.problems.build": "Nenhum problema foi detectado na área de trabalho até agora.", - "markers.panel.no.problems.filters": "Nenhum resultado encontrado com os critérios de filtro fornecidos", "markers.panel.action.filter": "Problemas de Filtro", - "markers.panel.filter.placeholder": "Filtrar por tipo ou texto", + "markers.panel.filter.ariaLabel": "Problemas de Filtro", "markers.panel.filter.errors": "erros", "markers.panel.filter.warnings": "avisos", "markers.panel.filter.infos": "informações", diff --git a/i18n/ptb/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index e1415c136bc..9b707612469 100644 --- a/i18n/ptb/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Saída", "logViewer": "Visualizador do Log", "viewCategory": "Exibir", - "clearOutput.label": "Limpar saída" + "clearOutput.label": "Limpar saída", + "openActiveLogOutputFile": "Exibir: Abrir Arquivo de Saída de Log Ativo" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/ptb/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 7db752c5c98..b2078df07b5 100644 --- a/i18n/ptb/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Atalhos de Teclado", "SearchKeybindings.AriaLabel": "Pesquisar keybindings", "SearchKeybindings.Placeholder": "Pesquisar keybindings", "sortByPrecedene": "Ordenar por precedência", diff --git a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index 3bdbd7e75ff..adf9b0ba020 100644 --- a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Abrir Configurações Padrão Raw", + "openSettings": "Abrir configurações", "openGlobalSettings": "Abra as Configurações de Usuário", "openGlobalKeybindings": "Abrir Atalhos de Teclado", "openGlobalKeybindingsFile": "Abrir Arquivo de Atalhos de Teclado", diff --git a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 1c1c058a5fd..6036183487d 100644 --- a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Configurações Padrão", "SearchSettingsWidget.AriaLabel": "Configurações de Pesquisa", "SearchSettingsWidget.Placeholder": "Configurações de Pesquisa", "noSettingsFound": "Nenhum resultado", diff --git a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 5ca42fabfaf..d9d0d18805d 100644 --- a/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Mostrar Extensão \"{0}\"", "editTtile": "Editar", "replaceDefaultValue": "Substituir nas Configurações", - "copyDefaultValue": "Copiar para Configurações", - "unsupportedPHPExecutablePathSetting": "Essa configuração deve ser uma Configuração de Usuário. Para configurar o PHP para o espaço de trabalho, abra um arquivo PHP e clique em 'Caminho do PHP' na barra de status.", - "unsupportedWorkspaceSetting": "Essa configuração deve ser uma Configuração de Usuário.", - "unsupportedWorkbenchSetting": "Essa configuração não pode ser aplicada agora. Será aplicada quando você abrir esta pasta diretamente.", - "unsupportedWorkbenchSettingDevMode": "Essa configuração não pode ser aplicada agora. Ela será aplicada se você definir o seu escopo como 'recurso' durante o registo, ou quando você abrir esta pasta diretamente." + "copyDefaultValue": "Copiar para Configurações" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index c8a848c68bd..dfb6a734a7b 100644 --- a/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -9,6 +9,8 @@ "scm providers": "Provedores de Controle de Código Fonte", "hideRepository": "Ocultar", "installAdditionalSCMProviders": "Instalar provedores de SCM adicionais...", + "no open repo": "Não existem provedores de controle de código fonte ativos.", "source control": "Controle de código-fonte", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Ocultar" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json index ddfd526d730..ba5b86d8773 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Mostrar a Próxima Busca Incluindo Padrões", "previousSearchIncludePattern": "Mostrar a Busca Anterior Incluindo Padrões", + "nextSearchExcludePattern": "Mostrar a Próxima Busca Excluindo Padrões", + "previousSearchExcludePattern": "Mostrar a Busca Anterior Excluindo Padrões", "nextSearchTerm": "Mostrar o Próximo Termo de Pesquisa", "previousSearchTerm": "Mostrar Termo de Pesquisa Anterior", - "showSearchViewlet": "Mostrar Busca", "findInFiles": "Localizar nos Arquivos", "replaceInFiles": "Substituir nos Arquivos", "RefreshAction.label": "Atualizar", diff --git a/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json index 213e59f2810..b3ae6818505 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,7 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Alternar Detalhes da Pesquisa", - "searchIncludeExclude.label": "arquivos para incluir/excluir", + "searchScope.includes": "arquivos a serem incluídos", + "label.includes": "Pesquisa Padrões de Inclusão", + "searchScope.excludes": "arquivos a serem excluídos", + "label.excludes": "Pesquisa de Padrões de Exclusão", "replaceAll.confirmation.title": "Substituir Tudo", "replaceAll.confirm.button": "&&Substituir", "replaceAll.occurrence.file.message": "Substituída {0} ocorrência no arquivo {1} com '{2}'.", @@ -27,6 +30,7 @@ "removeAll.occurrences.files.confirmation.message": "Substituir {0} ocorrências nos arquivos {1} com '{2}'?", "replaceAll.occurrences.files.confirmation.message": "Substituir {0} ocorrências nos arquivos {1}?", "treeAriaLabel": "Resultados da Pesquisa", + "searchPathNotFoundError": "Caminho de pesquisa não encontrado: {0}", "searchMaxResultsWarning": "O conjunto de resultados contém apenas um subconjunto de todas as correspondências. Seja mais específico na sua pesquisa para diminuir o número de resultados.", "searchCanceled": "Pesquisa foi cancelada antes de qualquer resultado ser encontrado - ", "noResultsIncludesExcludes": "Nenhum resultado encontrado em '{0}' excluindo '{1}' - ", diff --git a/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 485dee67981..56d88e0a648 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Pesquisar", + "copyMatchLabel": "Copiar", + "copyPathLabel": "Copiar Caminho", + "copyAllLabel": "Copiar todos", "findInFolder": "Procurar na pasta...", "findInWorkspace": "Procurar no Espaço de Trabalho...", "showTriggerActions": "Ir para Símbolo no Espaço de Trabalho...", "name": "Pesquisar", - "search": "Pesquisar", "showSearchViewl": "Mostrar Busca", "view": "Exibir", "findInFiles": "Localizar nos Arquivos", @@ -24,5 +27,6 @@ "useIgnoreFiles": "Controla se utiliza arquivos .gitignore e .ignore por padrão ao fazer pesquisas de arquivos.", "search.quickOpen.includeSymbols": "Configurar para incluir resultados de uma pesquisa símbolo global nos resultados do arquivo para Abertura Rápida.", "search.followSymlinks": "Controla quando seguir symlinks ao realizar uma busca.", - "search.smartCase": "Faz pesquisas do tipo case-insensitive se o termo for totalmente minúsculo, caso contrário, faz pesquisas do tipo case-sensitive." + "search.smartCase": "Faz pesquisas do tipo case-insensitive se o termo for totalmente minúsculo, caso contrário, faz pesquisas do tipo case-sensitive.", + "search.globalFindClipboard": "Controla se a visualização de busca deve ler ou modificar a área de transferência de busca compartilhada no macOS" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 0dca83c74ee..79f168bdecb 100644 --- a/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Nos ajude a melhorar o nosso apoio para {0}", "takeShortSurvey": "Responda a uma pesquisa curta", "remindLater": "Lembrar mais tarde", - "neverAgain": "Não mostrar novamente", - "helpUs": "Nos ajude a melhorar o nosso apoio para {0}" + "neverAgain": "Não mostrar novamente" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 40d20b6cd54..0e5b3cbd493 100644 --- a/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Você deseja responder a uma pequena pesquisa?", "takeSurvey": "Responder a pesquisa", "remindLater": "Lembrar mais tarde", - "neverAgain": "Não mostrar novamente", - "surveyQuestion": "Você deseja responder a uma pequena pesquisa?" + "neverAgain": "Não mostrar novamente" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 739fd01f6dd..c3c8aff5499 100644 --- a/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,6 +11,7 @@ "totalErrors": "{0} Erros", "totalWarnings": "{0} Avisos", "totalInfos": "{0} Informações", + "problems": "Problemas", "building": "Compilando...", "manyProblems": "10K+", "runningTasks": "Mostrar tarefas em execução", @@ -30,8 +31,8 @@ "selectProblemMatcher": "Selecione quais tipos de erros e avisos da saída da tarefa você deseja verificar", "customizeParseErrors": "A configuração da tarefa atual tem erros. Por favor, corrija os erros primeiro antes de personalizar uma tarefa.", "moreThanOneBuildTask": "Há muitas tarefas de compilação definidas em tasks.json. Executando a primeira.\n", - "TaskSystem.activeSame.background": "A tarefa '{0}' já está ativa e executando em segundo plano. Para finalizá-la use 'Finalizar Tarefa' no menu Tarefas.", - "TaskSystem.activeSame.noBackground": "A tarefa '{0}' já está ativa. Para finalizá-la use 'Finalizar Tarefa' no menu Tarefas.", + "terminateTask": "Finalizar Tarefa", + "restartTask": "Reiniciar Tarefa", "TaskSystem.active": "Já existe uma tarefa sendo executada. Finalize-a antes de executar outra tarefa.", "TaskSystem.restartFailed": "Falha ao finalizar e reiniciar a tarefa {0}", "TaskService.noConfiguration": "Erro: A deteção de tarefa {0} não contribuiu para uma tarefa para a seguinte configuração: {1} a tarefa será ignorada.\n", diff --git a/i18n/ptb/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/ptb/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..eb2f070aafe --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "A cor de fundo do terminal, isso permite colorir o terminal com uma cor diferente do painel.", + "terminal.foreground": "A cor de primeiro plano do terminal.", + "terminal.ansiColor": "'{0}' cor ANSI no terminal." +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index a0dc8f3fbc0..ccb060cdd99 100644 --- a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -35,6 +35,7 @@ "terminal.integrated.env.linux": "Objeto com variáveis de ambiente que serão adicionadas ao VS Code e utilizadas pelo terminal no Linux", "terminal.integrated.env.windows": "Objeto com variáveis de ambiente que serão adicionadas ao VS Code e utilizadas pelo terminal no Windows", "terminal.integrated.showExitAlert": "Mostrar alerta 'O processo terminal foi encerrado com código de saída' quando o código de saída é diferente de zero.", + "terminal.integrated.experimentalRestore": "Se deseja restaurar sessões de terminal para a área de trabalho automaticamente quando executa o VS Code. Essa é uma configuração experimental; Ele pode ser falho e pode mudar no futuro.", "terminalCategory": "Terminal", "viewCategory": "Exibir" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 2e5bc67362f..5844af8cc38 100644 --- a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -22,6 +22,7 @@ "workbench.action.terminal.newInActiveWorkspace": "Criar Novo Terminal Integrado (No Espaço de Trabalho Ativo)", "workbench.action.terminal.split": "Dividir Terminal", "workbench.action.terminal.focusPreviousPane": "Focar Painel Anterior", + "workbench.action.terminal.focusNextPane": "Foco próximo painel", "workbench.action.terminal.resizePaneLeft": "Redimensionar Painel à Esquerda", "workbench.action.terminal.resizePaneRight": "Redimensionar Painel à Direita", "workbench.action.terminal.resizePaneUp": "Redimensionar Painel Superior", diff --git a/i18n/ptb/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index de16a43b9aa..c77824faf3b 100644 --- a/i18n/ptb/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Esta área de trabalho contém configurações que só podem ser definidas nas configurações do usuário. ({0}). Clique [aqui]({1}) para mais informações.", "openWorkspaceSettings": "Abrir as configurações do espaço de trabalho", - "dontShowAgain": "Não mostrar novamente", - "unsupportedWorkspaceSettings": "Esta área de trabalho contém configurações que só podem ser definidas nas configurações do usuário. ({0}). Clique [aqui]({1}) para mais informações." + "dontShowAgain": "Não mostrar novamente" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 6b7eb5e33c4..0f2f852e685 100644 --- a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Mais tarde", "releaseNotes": "Notas da Versão", "showReleaseNotes": "Mostrar Notas da Versão", "read the release notes": "Bem-vindo a {0} v{1}! Gostaria de ler as Notas da Versão?", @@ -16,13 +15,12 @@ "updateIsReady": "Nova atualização de {0} disponível.", "noUpdatesAvailable": "Não há nenhuma atualização disponível no momento.", "ok": "OK", - "download now": "Baixar agora", "thereIsUpdateAvailable": "Há uma atualização disponível.", + "download now": "Baixar agora", + "later": "Mais tarde", "installUpdate": "Instalar Atualização", - "updateAvailable": "Há uma atualização disponível: {0} {1}", "updateInstalling": "{0} {1} está sendo instalado no plano de fundo, nós te avisaremos quando estiver pronto.", "updateNow": "Atualizar Agora", - "updateAvailableAfterRestart": "{0} será atualizado após reiniciar.", "commandPalette": "Paleta de comandos...", "settings": "Configurações", "keyboardShortcuts": "Atalhos de Teclado", diff --git a/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 4498984aac3..0169a443115 100644 --- a/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "editor webview" + "webview.editor.label": "editor webview", + "developer": "Desenvolvedor" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..3533d84f530 --- /dev/null +++ b/i18n/ptb/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Abrir Ferramentas de Desenvolvedor do Webview", + "refreshWebviewLabel": "Recarregar Webviews" +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/ptb/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 0e1241ddfa4..39c7626f423 100644 --- a/i18n/ptb/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Ferramentas e linguagens", "welcomePage.installExtensionPacksDescription": "Instalar o suporte para {0} e {1}", "welcomePage.moreExtensions": "mais", - "welcomePage.installKeymapDescription": "Instalar atalhos de teclado", - "welcomePage.installKeymapExtension": "Instalar os atalhos de teclado de {0} e {1}", "welcomePage.others": "outros", "welcomePage.colorTheme": "Tema de cores", "welcomePage.colorThemeDescription": "Fazer o editor e seu código parecer do jeito que você gosta", diff --git a/i18n/ptb/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/ptb/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 988b848fc4e..68215b632ce 100644 --- a/i18n/ptb/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,11 @@ "errorInvalidWorkspaceTarget": "Não é possível gravar as configurações do espaço de trabalho porque {0} não oferece suporte para o escopo de espaço de trabalho em um espaço de trabalho de múltiplas pastas.", "errorInvalidFolderTarget": "Não é possível gravar as configurações da pasta porque nenhum recurso é fornecido.", "errorNoWorkspaceOpened": "Não é possível gravar {0} porque nenhum espaço de trabalho está aberto. Por favor, abra um espaço de trabalho primeiro e tente novamente.", + "errorInvalidTaskConfiguration": "Não é possível escrever no arquivo de configuração de tarefas. Por favor, abra o arquivo para corrigir erros/avisos e tente novamente.", + "errorInvalidLaunchConfiguration": "Não é possível escrever no arquivo de configuração de lançamento. Por favor, abra o arquivo para corrigir erros/avisos e tente novamente.", + "errorInvalidConfiguration": "Não é possível escrever nas configurações do usuário. Por favor, abra as configurações do usuário para corrigir erros/avisos e tente novamente.", + "errorInvalidConfigurationWorkspace": "Não é possível escrever nas configurações do espaço de trabalho. Por favor, abra as configurações do espaço de trabalho para corrigir erros/avisos no arquivo e tente novamente.", + "errorInvalidConfigurationFolder": "Não é possível escrever nas configurações de pasta. Por favor, abra as configurações da pasta '{0}' para corrigir erros/avisos e tente novamente.", "userTarget": "Configurações de Usuário", "workspaceTarget": "Configurações de Espaço de Trabalho", "folderTarget": "Configurações de pasta" diff --git a/i18n/ptb/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/ptb/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..54475988a3a --- /dev/null +++ b/i18n/ptb/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "Essa configuração não pode ser aplicada agora. Será aplicada quando você abrir esta pasta diretamente." +} \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/ptb/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index f12b0743598..4dbdaaac4b5 100644 --- a/i18n/ptb/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Descrição do emblema.", "vscode.extension.extensionDependencies": "Dependências para outras extensões. O identificador de uma extensão sempre é ${publisher}. ${nome}. Por exemplo: vscode.csharp.", "vscode.extension.scripts.prepublish": "Script a ser executado antes do pacote ser publicado como uma extensão VS Code.", + "vscode.extension.scripts.uninstall": "Desinstala o hook para a extensão do VS Code. O script que é executado quando a extensão é completamente desinstalada do VS Code e é quando o VS Code é reiniciado (desligar e iniciar) depois que a extensão for desinstalada. Somente scripts Node são suportados.", "vscode.extension.icon": "O caminho para um ícone de 128x128 pixels." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/ptb/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 34d4e413217..f274e33cf84 100644 --- a/i18n/ptb/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "Host de extensão foi encerrado inesperadamente.", "extensionHostProcess.unresponsiveCrash": "Host de extensão encerrado porque não foi responsivo.", - "devTools": "Ferramentas do Desenvolvedor", "restart": "Reinicie o Host de extensão", "overwritingExtension": "Sobrescrevendo extensão {0} por {1}.", "extensionUnderDevelopment": "Carregando extensão de desenvolvimento em {0}", diff --git a/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 36971b11ff8..f77f09d67b9 100644 --- a/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,22 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "O Microsoft .NET Framework 4.5 é necessário. Por favor siga o link para instalá-lo.", "installNet": "Baixar o .NET Framework 4.5", "neverShowAgain": "Não mostrar novamente", - "netVersionError": "O Microsoft .NET Framework 4.5 é necessário. Por favor siga o link para instalá-lo.", "learnMore": "Instruções", + "fileInvalidPath": "Recurso de arquivo inválido ({0})", + "fileIsDirectoryError": "Arquivo é um diretório", + "fileNotModifiedError": "Arquivo não modificado desde", + "fileTooLargeError": "Arquivo muito grande para abrir", + "fileNotFoundError": "Arquivo não encontrado ({0})", + "fileBinaryError": "Arquivo parece ser binário e não pode ser aberto como texto", + "filePermission": "Permissão negada ao escrever no arquivo ({0})", + "fileExists": "Arquivo a ser criado já existe ({0})", + "fileModifiedError": "Arquivo Modificado Desde", + "fileReadOnlyError": "Arquivo é Somente Leitura", + "fileMoveConflict": "Não é possível mover/copiar. Arquivo já existe no destino.", + "unableToMoveCopyError": "Não é possível mover/copiar. Arquivo poderia substituir a pasta em que está contida.", "binFailed": "Falha ao mover '{0}' para a lixeira", "trashFailed": "Falha em mover '{0}' para a lixeira" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/ptb/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index a3887e88897..ea2af2d0060 100644 --- a/i18n/ptb/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Arquivo não encontrado ({0})", "fileIsDirectoryError": "Arquivo é um diretório", "fileNotModifiedError": "Arquivo não modificado desde", "fileBinaryError": "Arquivo parece ser binário e não pode ser aberto como texto" diff --git a/i18n/ptb/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/ptb/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index 7913d843913..a1c9ed8158f 100644 --- a/i18n/ptb/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/ptb/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,7 @@ "schema.token.settings": "Cores e estilos para o token.", "schema.token.foreground": "Cor do primeiro plano para o token.", "schema.token.background.warning": "Atualmente as cores de fundo do token não são suportadas.", + "schema.token.fontStyle": "Estilo da fonte da regra: 'itálico', 'negrito', 'sublinhado' ou uma combinação. Cadeia de caracteres vazia desfaz configurações herdadas.", "schema.token.fontStyle.none": "Nenhum (limpar estilo herdado)", "schema.properties.name": "Descrição da regra.", "schema.properties.scope": "Seletor de escopo que bate com esta regra.", diff --git a/i18n/rus/extensions/css-language-features/package.i18n.json b/i18n/rus/extensions/css-language-features/package.i18n.json index c5c8a90070b..13b750e8b52 100644 --- a/i18n/rus/extensions/css-language-features/package.i18n.json +++ b/i18n/rus/extensions/css-language-features/package.i18n.json @@ -8,6 +8,7 @@ ], "displayName": "Возможности языка CSS", "description": "Предоставляет широкую поддержку языка для файлов CSS, LESS и SCSS.", + "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Недопустимое число параметров", "css.lint.boxModel.desc": "Не использовать ширину или высоту при использовании поля или границы", "css.lint.compatibleVendorPrefixes.desc": "При использовании зависящего от поставщика префикса также указывайте все остальные свойства поставщика", diff --git a/i18n/rus/extensions/css/package.i18n.json b/i18n/rus/extensions/css/package.i18n.json index 35229bd6699..f94884afe4a 100644 --- a/i18n/rus/extensions/css/package.i18n.json +++ b/i18n/rus/extensions/css/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка CSS", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах CSS, LESS и SCSS." } \ No newline at end of file diff --git a/i18n/rus/extensions/emmet/package.i18n.json b/i18n/rus/extensions/emmet/package.i18n.json index b9e88e5f37b..c6570b949da 100644 --- a/i18n/rus/extensions/emmet/package.i18n.json +++ b/i18n/rus/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Путь к папке, содержащей профили Emmet и фрагменты кода.", "emmetShowExpandedAbbreviation": "Отображает развернутые сокращения Emmet в виде предложений.\nПараметр \"inMarkupAndStylesheetFilesOnly\" применяется к html, haml, jade, slim, xml, xsl, css, scss, sass, less и stylus .\nПараметр \"always\" применяется ко всем частям файла независимо от разметки и стилей.", "emmetShowAbbreviationSuggestions": "Отображает возможные сокращения Emmet в виде предложений. Не применяется в таблицах стилей или если параметр emmet.showExpandedAbbreviation имеет значение \"never\".", - "emmetIncludeLanguages": "Включает сокращения Emmet в языках, которые не поддерживаются по умолчанию. Здесь можно указать связь между не поддерживаемым и поддерживаемым языками.\nПример: {\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}", "emmetVariables": "Переменные, которые будут использоваться во фрагментах Emmet", "emmetTriggerExpansionOnTab": "Если этот параметр установлен, сокращения Emmet разворачиваются при нажатии клавиши TAB.", "emmetPreferences": "Настройки, которые используются для изменения поведения некоторых действий и сопоставителей Emmet.", @@ -59,5 +58,6 @@ "emmetPreferencesCssWebkitProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"webkit\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"webkit\" никогда не подставлялся, установите в качестве этого параметра пустое значение.", "emmetPreferencesCssMozProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"moz\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"moz\" никогда не подставлялся, установите в качестве этого параметра пустое значение. ", "emmetPreferencesCssOProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"o\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"o\" никогда не подставлялся, установите в качестве этого параметра пустое значение. ", - "emmetPreferencesCssMsProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"ms\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"ms\" никогда не подставлялся, установите в качестве этого параметра пустое значение. " + "emmetPreferencesCssMsProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"ms\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"ms\" никогда не подставлялся, установите в качестве этого параметра пустое значение. ", + "emmetPreferencesCssFuzzySearchMinScore": "Минимальное количество очков для нечеткого соответствия сокращения (от 0 до 1). При указании более низких значений возможно увеличение числа ложных срабатываний, при указании более высоких значений - уменьшение числа возможных соответствий." } \ No newline at end of file diff --git a/i18n/rus/extensions/git/out/commands.i18n.json b/i18n/rus/extensions/git/out/commands.i18n.json index 5e347fa36d0..c7863b7c963 100644 --- a/i18n/rus/extensions/git/out/commands.i18n.json +++ b/i18n/rus/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "ОК", "push with tags success": "Файлы с тегами успешно отправлены.", "pick remote": "Выберите удаленный сервер, на котором нужно опубликовать ветвь \"{0}\":", + "sync is unpredictable": "Это действие отправляет фиксации в \"{0}/{1}\" и извлекает их из этого расположения.", "never again": "ОК, больше не показывать", "no remotes to publish": "Для вашего репозитория не настроены удаленные репозитории для публикации.", "no changes stash": "Отсутствуют изменения, которые необходимо спрятать.", diff --git a/i18n/rus/extensions/git/package.i18n.json b/i18n/rus/extensions/git/package.i18n.json index 9b69c39a76d..f033330e3d5 100644 --- a/i18n/rus/extensions/git/package.i18n.json +++ b/i18n/rus/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Определяет, должно ли отображаться интерактивное действие \"Открыть файл\" в представлении \"Изменения Git\".", "config.inputValidation": "Определяет, следует ли проверять введенные данные в сообщении фиксации.", "config.detectSubmodules": "Определяет, следует ли автоматически определять подмодули Git.", + "config.detectSubmodulesLimit": "Управляет ограничением на количество обнаруженных подмодулей Git.", "colors.modified": "Цвет измененных ресурсов.", "colors.deleted": "Цвет удаленных ресурсов.", "colors.untracked": "Цвет неотслеживаемых ресурсов.", diff --git a/i18n/rus/extensions/html/package.i18n.json b/i18n/rus/extensions/html/package.i18n.json index 35229bd6699..42837cfec9d 100644 --- a/i18n/rus/extensions/html/package.i18n.json +++ b/i18n/rus/extensions/html/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка HTML", + "description": "Обеспечивает подсветку синтаксиса, выделение парных скобок и сниппеты в HTML-файлах." } \ No newline at end of file diff --git a/i18n/rus/extensions/json-language-features/package.i18n.json b/i18n/rus/extensions/json-language-features/package.i18n.json index 762d0d1b54d..c12c7e1110d 100644 --- a/i18n/rus/extensions/json-language-features/package.i18n.json +++ b/i18n/rus/extensions/json-language-features/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка JSON", "description": "Предоставляет широкую поддержку языка для файлов JSON.", "json.schemas.desc": "Связь схем с JSON-файлами в текущем проекте", "json.schemas.url.desc": "URL-адрес схемы или относительный путь к ней в текущем каталоге", diff --git a/i18n/rus/extensions/json/package.i18n.json b/i18n/rus/extensions/json/package.i18n.json index 35229bd6699..85f61bdfc1a 100644 --- a/i18n/rus/extensions/json/package.i18n.json +++ b/i18n/rus/extensions/json/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка JSON", + "description": "Обеспечивает подсветку синтаксиса и выделение парных скобок в файлах JSON." } \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json b/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json index e3a2c915436..5788adc61fe 100644 --- a/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json +++ b/i18n/rus/extensions/markdown-language-features/out/features/preview.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "lockedPreviewTitle": "[Предварительный просмотр] {0}" + "lockedPreviewTitle": "[Предварительный просмотр] {0}", + "previewTitle": "Открыть {0} для предварительного просмотра" } \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-language-features/out/security.i18n.json b/i18n/rus/extensions/markdown-language-features/out/security.i18n.json index 0cab268e7a8..d51d2ea286d 100644 --- a/i18n/rus/extensions/markdown-language-features/out/security.i18n.json +++ b/i18n/rus/extensions/markdown-language-features/out/security.i18n.json @@ -6,7 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "strict.title": "Строгий", "strict.description": "Загружать только безопасное содержимое", + "insecureLocalContent.title": "Разрешить небезопасное локальное содержимое", + "insecureLocalContent.description": "Включить загрузку содержимого через HTTP из localhost", "insecureContent.title": "Разрешить небезопасное содержимое", "insecureContent.description": "Включить загрузку содержимого через HTTP", "disable.title": "Отключить", diff --git a/i18n/rus/extensions/markdown-language-features/package.i18n.json b/i18n/rus/extensions/markdown-language-features/package.i18n.json index 021c2c0fa8c..0c205858212 100644 --- a/i18n/rus/extensions/markdown-language-features/package.i18n.json +++ b/i18n/rus/extensions/markdown-language-features/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка Markdown", "description": "Предоставляет широкую поддержку языка для Markdown.", "markdown.preview.breaks.desc": "Определяет, как переносы строк отображаются в области предварительного просмотра файла Markdown. Если установить этот параметр в значение 'true', <br>будут создаваться для каждой новой строки.", "markdown.preview.linkify": "Включить или отключить преобразование текста в URL для предварительного просмотра Markdown.", diff --git a/i18n/rus/extensions/php-language-features/package.i18n.json b/i18n/rus/extensions/php-language-features/package.i18n.json index e520e862551..b0eb11ff036 100644 --- a/i18n/rus/extensions/php-language-features/package.i18n.json +++ b/i18n/rus/extensions/php-language-features/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Запускается ли анализатор кода при сохранении или при печати.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)" + "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)", + "displayName": "Функции языка PHP", + "description": "Предоставляет широкую поддержку возможностей языка для файлов PHP." } \ No newline at end of file diff --git a/i18n/rus/extensions/php/package.i18n.json b/i18n/rus/extensions/php/package.i18n.json index 5e16df11f06..f980f6e45a4 100644 --- a/i18n/rus/extensions/php/package.i18n.json +++ b/i18n/rus/extensions/php/package.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Функции языка PHP" + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах PHP." } \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/commands.i18n.json b/i18n/rus/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..c2ebfd19241 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Откройте папку в VS Code, чтобы использовать проект JavaScript или TypeScript.", + "typescript.projectConfigUnsupportedFile": "Не удалось определить проект TypeScript или JavaScript. Неподдерживаемый тип файла", + "typescript.projectConfigCouldNotGetInfo": "Не удалось определить проект TypeScript или JavaScript.", + "typescript.noTypeScriptProjectConfig": "Файл не является частью проекта TypeScript. Дополнительные сведения см. [здесь]({0}).", + "typescript.noJavaScriptProjectConfig": "Файл не является частью проекта JavaScript. Дополнительные сведения см. [здесь]({0}).", + "typescript.configureTsconfigQuickPick": "Настроить tsconfig.json", + "typescript.configureJsconfigQuickPick": "Настроить jsconfig.json" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..3df8eafb051 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Выберите применяемое действие кода", + "acquiringTypingsLabel": "Получение typings...", + "acquiringTypingsDetail": "Получение определений typings для IntelliSense.", + "autoImportLabel": "Автоматический импорт из {0}" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..3add3405e17 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Включает семантическую проверку в JavaScript файле. Необходимо расположить в самом начале файла.", + "ts-nocheck": "Отключает семантическую проверку в JavaScript файле. Необходимо расположить в самом начале файла.", + "ts-ignore": "Отключает вывод ошибок @ts-check для следующей строки файла." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..8f5e9d5ec4f --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 реализация", + "manyImplementationLabel": "Реализации {0}", + "implementationsErrorLabel": "Не удалось определить реализации." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..b4cad43043f --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "Комментарий JSDoc" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..1787a125fae --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "Организация импортов" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..72b696f9b0a --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Исправить все в файле)" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..63583231cd7 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 ссылка", + "manyReferenceLabel": "Ссылок: {0}", + "referenceErrorLabel": "Не удалось определить ссылки." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..a641634e077 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "сборка – {0}", + "buildAndWatchTscLabel": "отслеживание – {0}" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/rus/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..0a42c8c6746 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "Путь {0} не указывает на допустимый файл программы установки tsserver. Выполняется откат до пакетной версии TypeScript.", + "serverCouldNotBeStarted": "Не удалось запустить языковой сервер TypeScript. Сообщение об ошибке: \"{0}\".", + "typescript.openTsServerLog.notSupported": "Для ведения журнала сервера TS требуется TS 2.2.2+", + "typescript.openTsServerLog.loggingNotEnabled": "Вход в TS Server отключен. Задайте \"typescript.tsserver.log\" и перезагрузите VS Code, чтобы включить ведение журнала", + "typescript.openTsServerLog.enableAndReloadOption": "Войдите и перезагрузите TS server", + "typescript.openTsServerLog.noLogFile": "Сервер TS не начал ведение журнала.", + "openTsServerLog.openFileFailedFailed": "Не удалось открыть файл журнала сервера TS", + "serverDiedAfterStart": "Языковая служба TypeScript пять раз завершила работу сразу после запуска. Служба не будет перезапущена.", + "serverDiedReportIssue": "Сообщить об ошибке", + "serverDied": "Языковая служба TypeScript пять раз непредвиденно завершила работу за последние пять минут." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..54d1199165b --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Чтобы включить языковые функции JavaScript/TypeScript IntelliSense во всем проекте, исключите папки с большим числом файлов, например: {0}.", + "hintExclude.generic": "Чтобы включить языковые функции JavaScript/TypeScript IntelliSense во всем проекте, исключите большие папки с исходными файлами, с которыми вы не работаете.", + "large.label": "Настройка исключений", + "hintExclude.tooltip": "Чтобы включить языковые функции JavaScript/TypeScript IntelliSense во всем проекте, исключите большие папки с исходными файлами, с которыми вы не работаете." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..f5ffd76a57b --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Получение данных для повышения эффективности IntelliSense TypeScript", + "typesInstallerInitializationFailed.title": "Не удалось установить файлы типизации для языка JavaScript. Убедитесь, что NPM установлен или укажите путь к файлу 'typescript.npm' в параметрах среды пользователя. Дополнительные сведения см. [здесь]({0}).", + "typesInstallerInitializationFailed.doNotCheckAgain": "Больше не показывать" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..f475eb8cead --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "Использовать версию VS Code", + "useWorkspaceVersionOption": "Использовать версию рабочей области", + "learnMore": "Дополнительные сведения", + "selectTsVersion": "Выберите версию TypeScript, используемую для языковых функций JavaScript и TypeScript." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/rus/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..5de17783d56 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Не удалось загрузить версию TypeScript по этому пути", + "noBundledServerFound": "Файл tsserver VSCode был удален другим приложением, например, в результате ошибочного срабатывания средства обнаружения вирусов. Переустановите VSCode." +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-language-features/package.i18n.json b/i18n/rus/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..52fae6d2583 --- /dev/null +++ b/i18n/rus/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,58 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Возможности языков TypeScript и JavaScript", + "description": "Предоставляет широкую поддержку языка для JavaScript и TypeScript.", + "typescript.reloadProjects.title": "Перезагрузить проект", + "javascript.reloadProjects.title": "Перезагрузить проект", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "Дополните функции сигнатурами их параметров.", + "typescript.tsdk.desc": "Указывает путь к папке, содержащей файлы tsserver и lib*.d.ts, которые необходимо использовать.", + "typescript.disableAutomaticTypeAcquisition": "Отключает автоматическое получение типов. Требуется TypeScript 2.0.6 и более поздней версии.", + "typescript.tsserver.log": "Включает ведение журнала для сервера TS. Этот журнал можно использовать для диагностики проблем сервера TS. В журнале могут содержаться пути к файлам, исходный код и другие сведения из вашего проекта, в том числе носящие конфиденциальный характер.", + "typescript.tsserver.trace": "Включает трассировку сообщений, отправляемых на сервер TS. Эту трассировку можно использовать для диагностики проблем сервера TS. Трассировка может содержать пути к файлам, исходный код и другие сведения из вашего проекта, в том числе конфиденциальные данные.", + "typescript.validate.enable": "Включение или отключение проверки TypeScript.", + "typescript.format.enable": "Включение или отключение модуля форматирования TypeScript по умолчанию.", + "javascript.format.enable": "Включение или отключение модуля форматирования JavaScript по умолчанию.", + "format.insertSpaceAfterCommaDelimiter": "Определяет метод обработки пробелов после разделителя-запятой.", + "format.insertSpaceAfterConstructor": "Определяет метод обработки пробелов после ключевого слова constructor. Требуется TypeScript 2.3.0 или более поздней версии.", + "format.insertSpaceAfterSemicolonInForStatements": " Определяет метод обработки пробелов после точки с запятой в операторе for.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Определяет метод обработки пробелов после двоичного оператора.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Определяет метод обработки пробелов после ключевых слов в операторе управления потоком выполнения.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Определяет метод обработки пробелов после ключевого слова function у анонимных функций.", + "format.insertSpaceBeforeFunctionParenthesis": "Определяет метод обработки пробелов перед скобками аргумента функции. Требует TypeScript >= 2.1.5.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Определяет метод обработки пробелов после открытия и до закрытия скобок в строке шаблона. Требуется TypeScript 2.0.6 или более поздней версии.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "Определяет метод обработки пробелов после открытия и до закрытия скобок выражения JSX. Требуется TypeScript 2.0.6 или более поздней версии.", + "format.insertSpaceAfterTypeAssertion": "Определяет метод обработки пробелов после утверждений типа в TypeScript. Требуется TypeScript 2.4 или более поздней версии.", + "format.placeOpenBraceOnNewLineForFunctions": "Определяет, ставится ли открывающая фигурная скобка с новой строки в функциях.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Определяет, ставится ли открывающая фигурная скобка с новой строки в блоках управления.", + "javascript.validate.enable": "Включение или отключение проверки JavaScript.", + "typescript.goToProjectConfig.title": "Перейти к конфигурации проекта", + "javascript.goToProjectConfig.title": "Перейти к конфигурации проекта", + "javascript.referencesCodeLens.enabled": "Включить/отключить ссылки CodeLens для файлов JavaScript.", + "typescript.referencesCodeLens.enabled": "Включить/отключить ссылки CodeLens для файлов TypeScript. Требуется TypeScript версии 2.0.6 или более поздней версии.", + "typescript.implementationsCodeLens.enabled": "Включить или отключить CodeLens для реализаций. Требуется TypeScript >= 2.2.0.", + "typescript.openTsServerLog.title": "Открыть журнал сервера TS", + "typescript.restartTsServer": "Перезапустить сервер TS", + "typescript.selectTypeScriptVersion.title": "Выберите версию TypeScript.", + "typescript.reportStyleChecksAsWarnings": "Отображать ошибки при проверке стиля в виде предупреждений", + "jsDocCompletion.enabled": "Включить или отключить JSDoc коментарии", + "javascript.implicitProjectConfig.checkJs": "Включает/отключает семантическую проверку файлов JavaScript. Этот параметр может переопределяться в файле jsconfig.json или tsconfig.json. Требуется TypeScript 2.3.1 или более поздней версии.", + "typescript.npm": "Указывает путь к исполняемому файлу NPM, используемому для автоматического получения типа. Требуется TypeScript версии 2.3.4 или более поздней версии.", + "typescript.check.npmIsInstalled": "Проверяет, установлен ли NPM для автоматического получения типов.", + "javascript.nameSuggestions": "Включить/отключить использование уникальных имен из файла в списках предложений JavaScript.", + "typescript.tsc.autoDetect": "Управляет автоматическим обнаружением задач tsc. При указании значения 'off' эта функция отключается. При указании значения 'build' создаются задачи компиляции для однократного запуска. При указании значения 'watch' создаются только задачи компиляции и наблюдения. При указании значения 'on' создаются как задачи сборки, так и задачи наблюдения. По умолчанию используется значение 'on'.", + "typescript.problemMatchers.tsc.label": "Проблемы TypeScript", + "typescript.problemMatchers.tscWatch.label": "Проблемы TypeScript (режим наблюдения)", + "typescript.quickSuggestionsForPaths": "Включить/отключить краткие предложения при вводе пути импорта.", + "typescript.locale": "Устанавливает языковой стандарт, используемый для сообщений об ошибках TypeScript. Требуется TypeScript 2.6.0 или более поздней версии. Значение по умолчанию — 'null'. При указании значения null для сообщений об ошибках TypeScript используется языковой стандарт VS Code.", + "javascript.implicitProjectConfig.experimentalDecorators": "Включает/отключает параметр 'experimentalDecorators' для файлов JavaScript, которые не являются частью проекта. Этот параметр может переопределяться в файле jsconfig.json или tsconfig.json. Требуется TypeScript 2.3.1 или более поздней версии.", + "typescript.autoImportSuggestions.enabled": "Включить/отключить предложения автоматического импорта. Требуется TypeScript 2.6.1 или более поздней версии", + "typescript.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса.", + "taskDefinition.tsconfig.description": "Файл tsconfig, который определяет сборку TS." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/base/node/processes.i18n.json b/i18n/rus/src/vs/base/node/processes.i18n.json index 56d7d224726..35229bd6699 100644 --- a/i18n/rus/src/vs/base/node/processes.i18n.json +++ b/i18n/rus/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "Невозможно выполнить команду оболочки на диске UNC." + ] } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 36bef0368cd..12574bacd03 100644 --- a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -11,7 +11,6 @@ "similarIssues": "Похожие проблемы", "open": "Открыть", "closed": "Закрыто", - "noResults": "Результаты не найдены", "settingsSearchIssue": "Проблема с параметрами поиска", "bugReporter": "Отчет об ошибках", "featureRequest": "Запрос функции", diff --git a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 6954a9f7442..bda3982524f 100644 --- a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "Заполните форму на английском языке.", "issueTypeLabel": "Это", + "vscode": "Visual Studio Code", + "disableExtensions": "отключение всех расширений и перезагрузка окна", + "chooseExtension": "Расширение", "issueTitleLabel": "Название", "issueTitleRequired": "Введите название.", "titleLengthValidation": "Название слишком длинное.", @@ -18,13 +21,6 @@ "extensions": "Мои расширения", "searchedExtensions": "Расширения, для которых выполнялся поиск", "settingsSearchDetails": "Сведения о параметрах поиска", - "tryDisablingExtensions": "Сохраняется ли проблема после отключения расширений?", - "yes": "Да", - "no": "Нет", - "disableExtensionsLabelText": "Попробуйте воспроизвести проблему после {0}.", - "disableExtensions": "отключение всех расширений и перезагрузка окна", - "showRunningExtensionsLabelText": "Если вы подозреваете, что проблема связана с расширениями, сообщите о проблеме с расширением с помощью {0}.", - "showRunningExtensions": "просмотр всех запущенных расширений", "details": "Укажите сведения.", "loadingData": "Загрузка данных..." } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/rus/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..a3507419036 --- /dev/null +++ b/i18n/rus/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Имя" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/rus/src/vs/editor/browser/widget/diffReview.i18n.json index a40d32e1219..dfe5ffc5276 100644 --- a/i18n/rus/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/rus/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Закрыть", - "header": "Различие {0} из {1}; исходная версия: {2}, строки: {3}, измененная версия: {4}, строки: {5}", "blankLine": "пустой", "equalLine": "Исходная версия: {0}, измененная версия: {1}: {2}", "insertLine": "+ измененная версия: {0}: {1}", diff --git a/i18n/rus/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/rus/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json index 44453977d44..1acfd70b90b 100644 --- a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -28,6 +28,9 @@ "warningBorder": "Цвет границ волнистой линии для выделения предупреждений в редакторе.", "infoForeground": "Цвет волнистой линии для выделения информационных сообщений в редакторе.", "infoBorder": "Цвет границ волнистой линии для выделения информационных сообщений в редакторе. ", + "hintForeground": "Цвет волнистой линии для выделения подсказок в редакторе.", + "hintBorder": "Цвет границ волнистой линии для выделения подсказок в редакторе. ", + "overviewRulerRangeHighlight": "Цвет метки линейки в окне просмотра для выделений диапазонов. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", "overviewRuleError": "Цвет метки линейки в окне просмотра для ошибок.", "overviewRuleWarning": "Цвет метки линейки в окне просмотра для предупреждений.", "overviewRuleInfo": "Цвет метки линейки в окне просмотра для информационных сообщений." diff --git a/i18n/rus/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/rus/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..8fa3a1ad468 --- /dev/null +++ b/i18n/rus/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Показать исправления ({0})", + "quickFix": "Показать исправления", + "organizeImports.label": "Организация импортов" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/rus/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json b/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json index 35229bd6699..5831d974e53 100644 --- a/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/snippet/snippetVariables.i18n.json @@ -5,5 +5,43 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "Sunday": "Воскресенье", + "Monday": "Понедельник", + "Tuesday": "Вторник", + "Wednesday": "Среда", + "Thursday": "Четверг", + "Friday": "Пятница", + "Saturday": "Суббота", + "SundayShort": "Вс", + "MondayShort": "Пн", + "TuesdayShort": "Вт", + "WednesdayShort": "Ср", + "ThursdayShort": "Чт", + "FridayShort": "Пт", + "SaturdayShort": "Сб", + "January": "Январь", + "February": "Февраль", + "March": "Март", + "April": "Апрель", + "May": "Май", + "June": "Июнь", + "July": "Июль", + "August": "Август", + "September": "Сентябрь", + "October": "Октябрь", + "November": "Ноябрь", + "December": "Декабрь", + "JanuaryShort": "Янв", + "FebruaryShort": "Фев", + "MarchShort": "Мар", + "AprilShort": "Апр", + "MayShort": "Май", + "JuneShort": "Июн", + "JulyShort": "Июл", + "AugustShort": "Авг", + "SeptemberShort": "Сен", + "OctoberShort": "Окт", + "NovemberShort": "Ноя", + "DecemberShort": "Дек" } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 89e24cb0c6f..5b31b385ffd 100644 --- a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -10,6 +10,8 @@ "wordHighlightStrong": "Фон символа при доступе для записи, например при записи переменной. Цвет должен быть прозрачным чтобы не перекрывать основных знаков отличия.", "wordHighlightBorder": "Цвет границы символа при доступе на чтение, например, при считывании переменной.", "wordHighlightStrongBorder": "Цвет границы символа при доступе на запись, например, при записи переменной. ", + "overviewRulerWordHighlightForeground": "Цвет метки линейки в окне просмотра для выделения символов. Цвет не должен был прозрачным, чтобы не перекрывать основные знаки отличия.", + "overviewRulerWordHighlightStrongForeground": "Цвет метки линейки в окне просмотра для выделения символов с доступом на запись. Цвет не должен был прозрачным, чтобы не перекрывать основные знаки отличия.", "wordHighlight.next.label": "Перейти к следующему выделению символов", "wordHighlight.previous.label": "Перейти к предыдущему выделению символов" } \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/environment/node/argv.i18n.json b/i18n/rus/src/vs/platform/environment/node/argv.i18n.json index 60e5e887ae4..d214cf140db 100644 --- a/i18n/rus/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/rus/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "Запустите с включенной командой \"Developer: Startup Performance\".", "prof-startup": "Запустить профилировщик ЦП при запуске", "disableExtensions": "Отключить все установленные расширения.", - "inspect-extensions": "Разрешить отладку и профилирование расширений. Проверьте URI подключения для инструментов разработчика.", - "inspect-brk-extensions": "Разрешить отладку и профилирование расширений, когда узел расширения приостановлен после запуска. Проверьте URI подключения для инструментов разработчика. ", "disableGPU": "Отключить аппаратное ускорение GPU.", "uploadLogs": "Отправляет журналы из текущего сеанса в защищенную конечную точку.", "maxMemory": "Максимальный размер памяти для окна (в МБ).", diff --git a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 908048ebb5a..61b52ee878a 100644 --- a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -14,12 +14,15 @@ "errorInstallingDependencies": "Ошибка при установке зависимостей. {0}", "MarketPlaceDisabled": "Marketplace не включен", "removeError": "Ошибка при удалении расширения: {0}. Закройте и снова откройте VS Code, затем повторите попытку.", + "Not a Marketplace extension": "Можно переустановить только расширения из Marketplace", "notFoundCompatible": "Невозможно установить '{0}'; нет версии, совместимой с VS Code '{1}'.", "malicious extension": "Не удается установить расширение, так как оно помечено как проблемное.", "notFoundCompatibleDependency": "Не удается выполнить установку, так как не найдено зависимое расширение '{0}', совместимое с текущей версией VS Code '{1}'. ", "quitCode": "Невозможно установить расширение. Пожалуйста, выйдите и зайдите в VS Code перед переустановкой.", "exitCode": "Невозможно установить расширение. Пожалуйста, выйдите и зайдите в VS Code перед переустановкой.", "uninstallDependeciesConfirmation": "Вы хотите удалить \"{0}\" отдельно или вместе с зависимостями?", + "uninstallOnly": "Только расширение", + "uninstallAll": "Удалить все", "uninstallConfirmation": "Вы действительно хотите удалить \"{0}\"?", "ok": "ОК", "singleDependentError": "Не удается удалить расширение \"{0}\". От него зависит расширение \"{1}\".", diff --git a/i18n/rus/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/rus/src/vs/platform/extensions/node/extensionValidator.i18n.json index a7a3fc36a7d..6fc7fb30591 100644 --- a/i18n/rus/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/rus/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "Не удалось проанализировать значение engines.vscode {0}. Используйте, например, ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x и т. д.", "versionSpecificity1": "Версия, указанная в engines.vscode ({0}), недостаточно конкретная. Для версий vscode до 1.0.0 укажите по крайней мере основной и дополнительный номер версии. Например, 0.10.0, 0.10.x, 0.11.0 и т. д.", "versionSpecificity2": "Версия, указанная в engines.vscode ({0}), недостаточно конкретная. Для версий vscode после 1.0.0 укажите по крайней мере основной номер версии. Например, 1.10.0, 1.10.x, 1.x.x, 2.x.x и т. д.", "versionMismatch": "Расширение несовместимо с кодом \"{0}\". Расширению требуется: {1}." diff --git a/i18n/rus/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/rus/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index ccf4c0564b8..954eb473437 100644 --- a/i18n/rus/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/rus/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "Похоже, ваша установка {0} повреждена. Повторите установку.", "integrity.moreInformation": "Дополнительные сведения", - "integrity.dontShowAgain": "Больше не показывать", - "integrity.prompt": "Похоже, ваша установка {0} повреждена. Повторите установку." + "integrity.dontShowAgain": "Больше не показывать" } \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/list/browser/listService.i18n.json b/i18n/rus/src/vs/platform/list/browser/listService.i18n.json index a5965b1f141..b9fbce4eef3 100644 --- a/i18n/rus/src/vs/platform/list/browser/listService.i18n.json +++ b/i18n/rus/src/vs/platform/list/browser/listService.i18n.json @@ -12,5 +12,6 @@ "multiSelectModifier": "Модификатор, который будет использоваться для добавления элементов в деревьях и списках в элемент множественного выбора с помощью мыши (например, в проводнике, в открытых редакторах и в представлении scm). \"ctrlCmd\" соответствует клавише CTRL в Windows и Linux и клавише COMMAND в macOS. Жесты мыши \"Открыть сбоку\" (если они поддерживаются), будут изменены таким образом, чтобы они не конфликтовали с модификатором элемента множественного выбора.", "openMode.singleClick": "Открывает элемент одним щелчком мыши.", "openMode.doubleClick": "Открывает элемент двойным щелчком мыши.", - "openModeModifier": "Управляет тем, как открывать элементы в деревьях и списках с помощью мыши (если поддерживается). Укажите значение \"singleClick\", чтобы открывать элементы одним щелчком мыши, и \"doubleClick\", чтобы открывать их только двойным щелчком мыши. Для родительских элементов с дочерними элементами в деревьях этот параметр управляет тем, будет ли родительский элемент разворачиваться по одинарному или по двойному щелчку мыши. Обратите внимание, что этот параметр может игнорироваться в некоторых деревьях и списках, если он не применяется к ним. " + "openModeModifier": "Управляет тем, как открывать элементы в деревьях и списках с помощью мыши (если поддерживается). Укажите значение \"singleClick\", чтобы открывать элементы одним щелчком мыши, и \"doubleClick\", чтобы открывать их только двойным щелчком мыши. Для родительских элементов с дочерними элементами в деревьях этот параметр управляет тем, будет ли родительский элемент разворачиваться по одинарному или по двойному щелчку мыши. Обратите внимание, что этот параметр может игнорироваться в некоторых деревьях и списках, если он не применяется к ним. ", + "horizontalScrolling setting": "Определяет, поддерживают ли древа горизонтальную прокрутку в рабочей области." } \ No newline at end of file diff --git a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json index 4fd13e76a7a..681bcf8d8ed 100644 --- a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -92,5 +92,7 @@ "mergeBorder": "Цвет границы заголовков и разделителя во внутренних конфликтах слияния.", "overviewRulerCurrentContentForeground": "Цвет переднего плана линейки текущего окна во внутренних конфликтах слияния.", "overviewRulerIncomingContentForeground": "Цвет переднего плана линейки входящего окна во внутренних конфликтах слияния.", - "overviewRulerCommonContentForeground": "Цвет переднего плана для обзорной линейки для общего предка во внутренних конфликтах слияния. " + "overviewRulerCommonContentForeground": "Цвет переднего плана для обзорной линейки для общего предка во внутренних конфликтах слияния. ", + "overviewRulerFindMatchForeground": "Цвет метки линейки в окне просмотра для результатов поиска. Цвет не должен был прозрачным, чтобы не перекрывать основные знаки отличия.", + "overviewRulerSelectionHighlightForeground": "Цвет метки линейки в окне просмотра для выделения. Цвет не должен был прозрачным, чтобы не перекрывать основные знаки отличия." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/rus/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..5a602cb684a --- /dev/null +++ b/i18n/rus/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "свойство \"{0}\" является обязательным и должно иметь тип string", + "showViewlet": "Показать {0}", + "view": "Просмотр" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/rus/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 99c3d895cf3..ea28349cd88 100644 --- a/i18n/rus/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/rus/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Добавляет представления в редактор", "views.explorer": "Представление проводника", "views.debug": "Представление отладки", - "locationId.invalid": "\"{0}\" не является допустимым расположением представления", "duplicateView1": "Не удается зарегистрировать несколько представлений с одинаковым идентификатором '{0}' в расположении '{1}'", "duplicateView2": "Представление с идентификатором '{0}' уже зарегистрировано в расположении '{1}'" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 37bcdaf055d..4e0cc0deeb3 100644 --- a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Форматирование при сохранении прервано через {0} мс", + "timeout.onWillSave": "Событие onWillSaveTextDocument-event прервано по истечении 1750 мс", "saveParticipants": "Сохранение участников..." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 79967c51d9e..35229bd6699 100644 --- a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "Редактор веб-представления" + ] } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json b/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json index 35229bd6699..06bdf111ede 100644 --- a/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json +++ b/i18n/rus/src/vs/workbench/api/node/extHostProgress.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "extensionSource": "{0} (расширение)" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index 0b2da1baa17..f9f5adc30ce 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,7 +17,6 @@ "screenReaderDetectedExtra": "Если вы не используете средство чтения с экрана, измените значение параметра \"editor.accessibilitySupport\" на \"off\".", "disableTabMode": "Отключить режим специальных возможностей", "gotoLine": "Перейти к строке", - "indentation": "Отступ", "selectEncoding": "Выберите кодировку", "selectEOL": "Выберите последовательность конца строки", "selectLanguageMode": "Выберите языковой режим", diff --git a/i18n/rus/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 096f82a9a51..1bf380ec2e5 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0} МБ", "sizeGB": "{0} ГБ", "sizeTB": "{0} ТБ", - "largeImageError": "Изображение имеет слишком большой размер для отображения в редакторе (более 1 МБ). ", "resourceOpenExternalButton": "Открыть изображение с помощью внешней программы?", - "nativeBinaryError": "Файл не будет отображен в редакторе, так как он двоичный, очень большой или использует неподдерживаемую кодировку текста.", "zoom.action.fit.label": "Все изображение", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index a5d906fdd98..d6c896929e7 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationsEmpty": "Новые уведомления отсутствуют", "notifications": "Уведомления", "notificationsToolbar": "Действия центра уведомлений", "notificationsList": "Список уведомлений" diff --git a/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..c7537efab64 --- /dev/null +++ b/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "ОК" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json index 7a4ee2d7def..12656d83a09 100644 --- a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "Окно", "window.openFilesInNewWindow.on": "Файлы будут открываться в новом окне.", "window.openFilesInNewWindow.off": "Файлы будут открываться в окне с открытой папкой файлов или последнем активном окне.", + "window.openFilesInNewWindow.defaultMac": "Файлы будут открыты в новом окне с открытой папкой файлов или в последнем активном окне, если они не были открыты с помощью панели Dock или поиска", + "window.openFilesInNewWindow.default": "Файлы будут открыты в новом окне, если они не были выбраны в приложении (например, из меню \"Файл\")", + "openFilesInNewWindowMac": "Определяет, будут ли файлы открываться в новом окне.\n- default: файлы будут открываться в окне с открытой папкой файлов или последнем активном окне, если они не открываются из панели Dock или системы поиска.\n- on: файлы будут открываться в новом окне.\n- off: файлы будут открываться в окне с открытой папкой файлов или последнем активном окне.\nОбратите внимание, что возможны случаи, когда этот параметр игнорируется (например, при использовании параметра командной строки -new-window или -reuse-window).", + "openFilesInNewWindow": "Определяет, будут ли файлы открываться в новом окне.\n- default: файлы будут открываться в новом окне, если они не выбраны в приложении (например, из меню \"Файл\").\n- on: файлы будут открываться в новом окне.\n- off: файлы будут открываться в окне с открытой папкой файлов или последнем активном окне.\nОбратите внимание, что возможны случаи, когда этот параметр игнорируется (например, при использовании параметра командной строки -new-window или -reuse-window).", "window.openFoldersInNewWindow.on": "Папки будут открываться в новом окне.", "window.openFoldersInNewWindow.off": "Папки будут заменять последнее активное окно.", "window.openFoldersInNewWindow.default": "Папки будут открываться в новом окне, если папка не выбрана в приложении (например, в меню \"Файл\").", "openFoldersInNewWindow": "Определяет, будут ли папки открываться в новом окне или заменять последнее активное окно.\n- default: папки будут открываться в новом окне, если папка не выбрана из приложения (например, из меню \"Файл\").\n- on: папки будут открываться в новом окне.\n- off: папки будут заменять последнее активное окно.\nОбратите внимание, что возможны случаи, когда этот параметр игнорируется (например, при использовании параметра командной строки -new-window или -reuse-window).", + "window.openWithoutArgumentsInNewWindow.on": "Открыть новое пустое окно", + "window.openWithoutArgumentsInNewWindow.off": "Перенести фокус на последний активный запущенный экземпляр", + "openWithoutArgumentsInNewWindow": "Определяет, следует ли открыть второй активный экземпляр без аргументов или перевести выделение на последний запущенный экземпляр.\n- on: открыть новое пустое окно.\n- off: перевести выделение на последний запущенный экземпляр.\nОбратите внимание, что возможны случаи, когда этот параметр игнорируется (например, при использовании параметра командной строки -new-window или -reuse-window).", "window.reopenFolders.all": "Повторно открыть все окна.", "window.reopenFolders.folders": "Повторно откройте все папки. Пустые рабочие области не будут восстановлены.", "window.reopenFolders.one": "Повторно открыть последнее активное окно.", @@ -56,6 +63,7 @@ "restoreWindows": "Управляет повторным открытием окон после перезапуска. Выберите 'none', чтобы всегда начинать с пустой рабочей области; 'one', чтобы открыть последнее окно, с которым вы работали; 'folders', чтобы открыть все окна с открытыми папками, и 'all', чтобы открыть все окна последнего сеанса.", "restoreFullscreen": "Определяет, должно ли окно восстанавливаться в полноэкранном режиме, если оно было закрыто в полноэкранном режиме.", "zoomLevel": "Настройте масштаб окна. Исходный размер равен 0. Увеличение или уменьшение значения на 1 означает увеличение или уменьшение окна на 20 %. Чтобы более точно задать масштаб, можно также ввести десятичное число.", + "title": "Определяет заголовок окна в зависимости от активного редактора. Подстановка переменных выполняется на основе контекста:\n${activeEditorShort}: имя файла (например, myFile.txt)\n${activeEditorMedium}: путь к файлу относительно папки рабочей области (например, myFolder/myFile.txt)\n${activeEditorLong}: полный путь к файлу (например, /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: имя папки рабочей области, в которой находится файл (например, myFolder)\n${folderPath}: путь к папке рабочей области, в которой находится файл (например, /Users/Development/myFolder)\n${rootName}: имя рабочей области (например, myFolder или myWorkspace)\n${rootPath}: путь к папке рабочей области (например, /Users/Development/myWorkspace)\n${appName}: например, VS Code\n${dirty}: индикатор изменения файла в активном редакторе\n${separator}: условный разделитель (\" - \"), который отображается, только если окружен переменными со значениями или статическим текстом", "window.newWindowDimensions.default": "Открывать новые окна в центре экрана.", "window.newWindowDimensions.inherit": "Открывать новые окна того же размера, что и последнее активное окно.", "window.newWindowDimensions.maximized": "Открывать новые окна в развернутом состоянии.", @@ -71,6 +79,7 @@ "autoDetectHighContrast": "Если включено, будет выполняться автоматический переход к высококонтрастной теме, если в Windows используется тема высокой контрастности, или к темной теме при выходе из темы высокой контрастности Windows.", "titleBarStyle": "Настройка внешнего вида заголовка окна. Чтобы применить изменения, потребуется полный перезапуск.", "window.nativeTabs": "Включает вкладки окна macOS Sierra. Обратите внимание, что для применения этих изменений потребуется полная перезагрузка, и что для всех внутренних вкладок будет отключен пользовательский стиль заголовка, если он был настроен.", + "window.smoothScrollingWorkaround": "Включите это обходное решение, если после восстановления свернутого окна кода VS Code прокрутка не выполняется плавно. Это обходное решение для проблемы (https://github.com/Microsoft/vscode/issues/13612), при которой возникают задержки прокрутки на устройствах с сенсорными панелями высокой точности, такими как устройства Surface от Майкрософт. Включение этого обходного решения может привести к небольшому дрожанию элементов окна во время восстановления, но не имеет других негативных последствий.", "zenModeConfigurationTitle": "Режим Zen", "zenMode.fullScreen": "Определяет, будет ли переключение в режим Zen переключать рабочее пространство в полноэкранный режим.", "zenMode.centerLayout": "Определяет, будет ли также выполняться выравнивание по центру при включении режима Zen.", diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 3a211dd7bc4..24e8426f8cc 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Изменить точку останова…", + "breakpoint": "Точка останова", "functionBreakpointsNotSupported": "Точки останова функций не поддерживаются в этом типе отладки", "functionBreakpointPlaceholder": "Функция, в которой производится останов", "functionBreakPointInputAriaLabel": "Введите точку останова в функции", @@ -14,6 +14,7 @@ "breakpointUnverifieddHover": "Непроверенная точка останова", "functionBreakpointUnsupported": "Точки останова функций не поддерживаются в этом типе отладки", "breakpointDirtydHover": "Непроверенная точка останова. Файл был изменен, перезапустите сеанс отладки.", + "logBreakpointUnsupported": "Точки журнала не поддерживаются для этого типа отладки", "conditionalBreakpointUnsupported": "Условные точки останова не поддерживаются этим типом отладки", "hitBreakpointUnsupported": "Останавливаться на условных точках останова, которые не поддерживаются этим типом отладки" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index 83f5638058a..63b8dbd0104 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Отладка: переключить точку останова", "conditionalBreakpointEditorAction": "Отладка: добавить условную точку останова…", + "logPointEditorAction": "Отладка: Добавить точку журнала...", "runToCursor": "Выполнить до курсора", "debugEvaluate": "Отладка: вычисление", "debugAddToWatch": "Отладка: добавить контрольное значение", diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 93dc323939d..9324196d9e7 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,7 @@ ], "breakpointWidgetHitCountPlaceholder": "Прервать при определенном количестве обращений. Нажмите клавишу ВВОД, чтобы принять, или ESC для отмены.", "breakpointWidgetExpressionPlaceholder": "Прервать выполнение, если выражение равно true. Нажмите клавишу ВВОД, чтобы принять, или ESC для отмены.", - "breakpointWidgetHitCountAriaLabel": "Выполнение программы прервется в этом месте, только если достигнуто определенное количество обращений. Нажмите клавишу ВВОД для принятия или ESC для отмены.", - "breakpointWidgetAriaLabel": "Выполнение программы прервется в этом месте, только если условие выполнится. Нажмите клавишу ВВОД для принятия или ESC для отмены.", "expression": "Выражение", - "hitCount": "Количество обращений" + "hitCount": "Количество обращений", + "logMessage": "Сообщение журнала" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index 718232647ac..cce426f1e59 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Используйте уникальное имя конфигурации.", "app.launch.json.compound.folder": "Имя папки, в которой расположен составной объект.", "app.launch.json.compounds.configurations": "Имена конфигураций, которые будут запущены как часть этого составного объекта.", - "debugNoType": "Параметр type адаптера отладки не может быть опущен и должен иметь тип string.", "selectDebug": "Выбор среды", "DebugConfig.failed": "Не удается создать файл launch.json в папке .vscode ({0}).", "workspace": "рабочая область", diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index a53c820ee79..c00bc52781c 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Изменить точку останова…", - "disableBreakpoint": "Выключить точку останова", - "enableBreakpoint": "Включить точку останова", + "breakpoint": "Точка останова", "removeBreakpoints": "Удалить точки останова", "removeBreakpointOnColumn": "Удалить точку останова из столбца {0}", "removeLineBreakpoint": "Удалить точку останова из строки", @@ -21,6 +19,8 @@ "enableBreakpoints": "Включить точку останова в столбце {0}", "enableBreakpointOnLine": "Включить точку останова в строке", "addBreakpoint": "Добавить точку останова", - "conditionalBreakpoint": "Добавить условную точку останова…", + "addConditionalBreakpoint": "Добавить условную точку останова…", + "addLogPoint": "Добавить точку журнала...", + "cancel": "Отмена", "addConfiguration": "Добавить конфигурацию..." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 2f1cd08a60b..23eb63e486d 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,5 +28,7 @@ "preLaunchTaskExitCode": "Выполнение предварительной задачи \"{0}\" завершено с кодом выхода {1}.", "showErrors": "Показывать ошибки", "noFolderWorkspaceDebugError": "Нельзя выполнить отладку активного файла. Убедитесь, что файл сохранен на диске и установлено расширение отладки для этого типа файла.", - "cancel": "Отмена" + "cancel": "Отмена", + "DebugTaskNotFound": "Не удалось найти задачу \"{0}\".", + "taskNotTracked": "Не удается отследить задачу \"{0}\"." } \ No newline at end of file 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 8fa346a7b25..b28b6560832 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 @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Подробнее", - "unableToLaunchDebugAdapter": "Не удается запустить адаптер отладки из \"{0}\".", - "unableToLaunchDebugAdapterNoArgs": "Не удается запустить адаптер отладки.", - "stoppingDebugAdapter": "{0}. Адаптер отладки останавливается.", "debugAdapterCrash": "Процесс адаптера отладки неожиданно завершился" } \ No newline at end of file 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 352c6d32543..4d4a7ed83f0 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 @@ -8,18 +8,6 @@ ], "debugAdapterBinNotFound": "Исполняемый файл адаптера отладки \"{0}\" не существует.", "debugAdapterCannotDetermineExecutable": "Невозможно определить исполняемый файл для адаптера отладки \"{0}\".", - "launch.config.comment1": "Используйте IntelliSense, чтобы узнать о возможных атрибутах.", - "launch.config.comment2": "Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.", - "launch.config.comment3": "Для получения дополнительной информации посетите: {0}", - "debugType": "Тип конфигурации.", - "debugTypeNotRecognised": "Не удается распознать тип отладки. Убедитесь, что соответствующее расширение отладки установлено и включено.", - "node2NotSupported": "Значение \"node2\" больше не поддерживается; используйте \"node\" и задайте для атрибута \"protocol\" значение \"inspector\".", - "debugName": "Имя конфигурации; отображается в раскрывающемся меню конфигурации запуска.", - "debugRequest": "Запросите тип конфигурации. Возможные типы: \"запуск\" и \"подключение\".", - "debugServer": "Только для разработки расширений отладки: если указан порт, VS Code пытается подключиться к адаптеру отладки, запущенному в режиме сервера.", - "debugPrelaunchTask": "Задача, выполняемая перед началом сеанса отладки.", - "debugWindowsConfiguration": "Атрибуты конфигурации запуска для Windows.", - "debugOSXConfiguration": "Атрибуты конфигурации запуска для OS X.", - "debugLinuxConfiguration": "Атрибуты конфигурации запуска для Linux.", - "deprecatedVariables": "\"env.\", \"config.\" и \"command.\" устарели, используйте \"env:\", \"config:\" и \"command:\"." + "unableToLaunchDebugAdapter": "Не удается запустить адаптер отладки из \"{0}\".", + "unableToLaunchDebugAdapterNoArgs": "Не удается запустить адаптер отладки." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..3ac477e5e53 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,24 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Используйте IntelliSense, чтобы узнать о возможных атрибутах.", + "launch.config.comment2": "Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.", + "launch.config.comment3": "Для получения дополнительной информации посетите: {0}", + "debugType": "Тип конфигурации.", + "debugTypeNotRecognised": "Не удается распознать тип отладки. Убедитесь, что соответствующее расширение отладки установлено и включено.", + "node2NotSupported": "Значение \"node2\" больше не поддерживается; используйте \"node\" и задайте для атрибута \"protocol\" значение \"inspector\".", + "debugName": "Имя конфигурации; отображается в раскрывающемся меню конфигурации запуска.", + "debugRequest": "Запросите тип конфигурации. Возможные типы: \"запуск\" и \"подключение\".", + "debugServer": "Только для разработки расширений отладки: если указан порт, VS Code пытается подключиться к адаптеру отладки, запущенному в режиме сервера.", + "debugPrelaunchTask": "Задача, выполняемая перед началом сеанса отладки.", + "debugPostDebugTask": "Задача, которая будет запущена после завершения сеанса отладки.", + "debugWindowsConfiguration": "Атрибуты конфигурации запуска для Windows.", + "debugOSXConfiguration": "Атрибуты конфигурации запуска для OS X.", + "debugLinuxConfiguration": "Атрибуты конфигурации запуска для Linux.", + "deprecatedVariables": "\"env.\", \"config.\" и \"command.\" устарели, используйте \"env:\", \"config:\" и \"command:\"." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..1402209c14c --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "Консоль VS Code", + "mac.terminal.script.failed": "Сбой скрипта \"{0}\" с кодом выхода {1}", + "mac.terminal.type.not.supported": "\"{0}\" не поддерживается", + "press.any.key": "Для продолжения нажмите любую клавишу...", + "linux.term.failed": "Сбой \"{0}\" с кодом выхода {1}" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index af8481a7c6b..bd475832dcf 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -58,6 +58,9 @@ "configureWorkspaceFolderRecommendedExtensions": "Настроить рекомендуемые расширения (папка рабочей области)", "malicious tooltip": "Это расширение помечено как проблемное.", "malicious": "Вредоносный", + "disabled": "Отключено", + "disabled globally": "Отключено", + "disabled workspace": "Отключено для этой рабочей области", "disableAll": "Отключить все установленные расширения", "disableAllWorkspace": "Отключить все установленные расширения для этой рабочей области", "enableAll": "Включить все расширения", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index 65c42dfa32b..9dfffd351b8 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -8,10 +8,12 @@ ], "name": "Имя расширения", "extension id": "Идентификатор расширений", + "preview": "Предварительный просмотр", "builtin": "Встроенное", "publisher": "Имя издателя", "install count": "Число установок", "rating": "Оценка", + "repository": "Репозиторий", "license": "Лицензия", "details": "Подробности", "contributions": "Вклады", @@ -32,15 +34,18 @@ "view id": "Идентификатор", "view name": "Имя", "view location": "Где", + "localizations": "Локализации ({0})", "localizations language id": "Идентификатор языка", - "localizations language name": "Название языка", - "localizations localized language name": "Название языка (локализованное)", + "colorThemes": "Цветовые темы ({0})", "iconThemes": "Темы значков ({0})", + "colors": "Цвета ({0})", + "colorId": "Идентификатор", "defaultDark": "Темная по умолчанию", "defaultLight": "Светлая по умолчанию", "defaultHC": "С высоким контрастом по умолчанию", "JSON Validation": "Проверка JSON ({0})", "fileMatch": "Сопоставление файла", + "schema": "Схема", "commands": "Команды ({0})", "command name": "Имя", "keyboard shortcuts": "Сочетания клавиш", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 885c2235791..fdfbc72c290 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Это расширение рекомендуется пользователями текущей рабочей области.", "reallyRecommended2": "Для этого типа файлов рекомендуется использовать расширение '{0}'.", "reallyRecommendedExtensionPack": "Для этого типа файлов рекомендуется использовать пакет расширений '{0}'.", - "showRecommendations": "Показать рекомендации", "install": "Установить", + "showRecommendations": "Показать рекомендации", "showLanguageExtensions": "В Marketplace есть расширения для работы с файлами '.{0}'", "workspaceRecommended": "Эта рабочая область включает рекомендации по расширениям.", "installAll": "Установить все", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index 3604f1b2e8d..dbb0453fcc6 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Отключить другие раскладки клавиатуры ({0}), чтобы избежать конфликта между настраиваемыми сочетаниями клавиш?", "yes": "Да", - "no": "Нет", - "betterMergeDisabled": "В текущую версию встроено средство слияния с лучшей функциональностью. Установленное расширение было отключено и не может быть удалено.", - "uninstall": "Удаление" + "no": "Нет" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index fc2676c541b..8bb1f5d04bf 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "Рекомендуемое", "otherRecommendedExtensions": "Другие рекомендации", "workspaceRecommendedExtensions": "Рекомендации рабочей области", + "builtInExtensions": "Функции", + "builtInThemesExtensions": "Темы", "searchExtensions": "Поиск расширений в Marketplace", "sort by installs": "Сортировать по: числу установок", "sort by rating": "Сортировать по: рейтинг", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index a22ecce0eb3..e5c218fb1d5 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,17 @@ "confirmMoveTrashMessageMultiple": "Вы действительно хотите удалить следующие файлы ({0})?", "confirmMoveTrashMessageFolder": "Вы действительно хотите удалить папку \"{0}\" и ее содержимое?", "confirmMoveTrashMessageFile": "Вы действительно хотите удалить \"{0}\"?", + "undoBin": "Вы можете выполнить восстановление из корзины.", + "undoTrash": "Вы можете выполнить восстановление из корзины.", "doNotAskAgain": "Больше не спрашивать", "confirmDeleteMessageMultiple": "Вы действительно хотите удалить следующие файлы ({0}) без возможности восстановления?", "confirmDeleteMessageFolder": "Вы действительно хотите удалить папку \"{0}\" и ее содержимое без возможности восстановления?", "confirmDeleteMessageFile": "Вы действительно хотите удалить \"{0}\" без возможности восстановления?", "irreversible": "Это действие необратимо.", - "importFiles": "Импорт файлов", + "binFailed": "Не удалось выполнить удаление в корзину. Вы хотите выполнить удаление навсегда?", + "trashFailed": "Не удалось выполнить удаление в корзину. Вы действительно хотите выполнить удаление навсегда?", + "deletePermanentlyButtonLabel": "&&Удалить навсегда", + "retryButtonLabel": "&&Повторить", "confirmOverwrite": "Файл или папка с таким именем уже существует в конечной папке. Заменить их?", "replaceButtonLabel": "Заменить", "fileIsAncestor": "Файл для вставки является предком папки назначения", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 7864917b59e..124b190523e 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "Режим языка по умолчанию, который назначается новым файлам.", "editorConfigurationTitle": "Редактор", "formatOnSave": "Форматирование файла при сохранении. Модуль форматирования должен быть доступен, файл не должен сохраняться автоматически, а работа редактора не должна завершаться.", + "formatOnSaveTimeout": "Время ожидания форматирования при сохранении. Указывает ограничение времени в миллисекундах для команд форматирования при сохранении. Команды, выполнение которых превышает указанное время ожидания, будут отменены.", "explorerConfigurationTitle": "Проводник", "openEditorsVisible": "Число редакторов, отображаемых на панели \"Открытые редакторы\".", "autoReveal": "Определяет, будет ли проводник автоматически отображать и выбирать файлы при их открытии.", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 4d9d86ce6f1..37cc4f97cc6 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Введите имя файла. Нажмите клавишу ВВОД, чтобы подтвердить введенные данные, или ESCAPE для отмены.", - "constructedPath": "Создать {0} в **{1}**", "filesExplorerViewerAriaLabel": "{0}, Проводник", "dropFolders": "Вы хотите действительно добавить папки в эту рабочую область?", "dropFolder": "Вы хотите действительно добавить папку в эту рабочую область?", "addFolders": "&&Добавить папки", "addFolder": "&&Добавить папку", + "confirmRootsMove": "Вы действительно хотите изменить порядок нескольких корневых папок в рабочей области?", "confirmMultiMove": "Вы действительно хотите переместить следующие файлы ({0})?", + "confirmRootMove": "Вы действительно хотите изменить порядок корневой папки \"{0}\" в рабочей области?", "confirmMove": "Вы действительно хотите переместить '{0}'?", "doNotAskAgain": "Больше не спрашивать", "moveButtonLabel": "&&Переместить", diff --git a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index fdff5585e45..a63d4097358 100644 --- a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,9 +6,10 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "Вы хотели бы изменить язык пользовательского интерфейса VS Code на {0} и перезапустить VS Code?", "yes": "Да", "no": "Нет", - "doNotAskAgain": "Больше не спрашивать", + "neverAgain": "Больше не показывать", "JsonSchema.locale": "Язык пользовательского интерфейса.", "vscode.extension.contributes.localizations": "Добавляет локализации в редактор", "vscode.extension.contributes.localizations.languageId": "Идентификатор языка, на который будут переведены отображаемые строки.", diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 5c59b0255d7..8bfb35ec63c 100644 --- a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "Копировать", - "copyMarkerMessage": "Копировать сообщение" + "copyMessage": "Копировать сообщение" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 9f1e9238a73..44eeaa06f3b 100644 --- a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Всего проблем: {0}", - "filteredProblems": "Показано проблем: {0} из {1}" + "totalProblems": "Всего проблем: {0}" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 939ceca5ae7..e7a5379738c 100644 --- a/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Проблемы", "markers.panel.aria.label.problems.tree": "Проблемы, сгруппированные по файлам", "markers.panel.no.problems.build": "В рабочей области проблемы пока не обнаружены.", - "markers.panel.no.problems.filters": "Для указанного условия фильтра результаты не обнаружены", "markers.panel.action.filter": "Фильтр проблем", - "markers.panel.filter.placeholder": "Фильтровать по типу или тексту", + "markers.panel.filter.ariaLabel": "Фильтр проблем", "markers.panel.filter.errors": "ошибки", "markers.panel.filter.warnings": "предупреждения", "markers.panel.filter.infos": "сообщения", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "Неизвестные: {0}", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} с проблемами ({1})", + "problems.tree.aria.label.marker.relatedInformation": "У этой проблемы есть ссылки на несколько расположений ({0}).", + "problems.tree.aria.label.error.marker": "Ошибка выдана {0}: {1}, строка {2}, символ {3}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Ошибка: {0}, строка {1}, символ {2}.{3}", + "problems.tree.aria.label.warning.marker": "Предупреждение выдано {0}: {1}, строка {2}, символ {3}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Предупреждение: {0}, строка {1}, символ {2}.{3} ", + "problems.tree.aria.label.info.marker": "Информационное сообщение выдано {0}: {1}, строка {2}, символ {3}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Информационное сообщение: {0}, строка {1}, символ {2}.{3} ", + "problems.tree.aria.label.marker": "Проблема выдана {0}: {1}, строка {2}, символ {3}.{4}", + "problems.tree.aria.label.marker.nosource": "Проблема: {0}, строка {1}, символ {2}.{3} ", + "problems.tree.aria.label.relatedinfo.message": "{0}, строка {1}, символ {2} в {3}", "errors.warnings.show.label": "Показать ошибки и предупреждения" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/rus/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 9cba91c70e4..67574542705 100644 --- a/i18n/rus/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Переключить выходные данные", "clearOutput": "Очистить выходные данные", "toggleOutputScrollLock": "Включить/отключить SCROLL LOCK для вывода", - "switchToOutput.label": "Переключиться на выходные данные" + "switchToOutput.label": "Переключиться на выходные данные", + "openInLogViewer": "Открыть файл журнала" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json index e357345cb24..66e8e86a36d 100644 --- a/i18n/rus/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/output/electron-browser/output.contribution.i18n.json @@ -9,5 +9,6 @@ "output": "Вывод", "logViewer": "Средство просмотра журналов", "viewCategory": "Просмотр", - "clearOutput.label": "Очистить выходные данные" + "clearOutput.label": "Очистить выходные данные", + "openActiveLogOutputFile": "Просмотр: открыть активный выходной файл журнала" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 1199d8b1427..b1ff2f3c4a2 100644 --- a/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Сочетания клавиш", + "showDefaultKeybindings": "Показать сочетания клавиш по умолчанию", + "showUserKeybindings": "Показать пользовательские сочетания клавиш", "SearchKeybindings.AriaLabel": "Поиск настраиваемых сочетаний клавиш", "SearchKeybindings.Placeholder": "Поиск настраиваемых сочетаний клавиш", "sortByPrecedene": "Сортировать по приоритету", diff --git a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index b6e5dd2331c..301f65925ac 100644 --- a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Открыть исходные параметры по умолчанию", + "openSettings": "Открыть параметры", "openGlobalSettings": "Открыть пользовательские параметры", "openGlobalKeybindings": "Открыть сочетания клавиш", "openGlobalKeybindingsFile": "Открыть файл сочетаний клавиш", diff --git a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index d1d27d53dda..b589e13bf13 100644 --- a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Параметры по умолчанию", "SearchSettingsWidget.AriaLabel": "Параметры поиска", "SearchSettingsWidget.Placeholder": "Параметры поиска", "noSettingsFound": "Нет результатов", diff --git a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 1a2779a2e10..b457921fc6f 100644 --- a/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "Показать расширение «{0}»", "editTtile": "Изменить", "replaceDefaultValue": "Заменить в параметрах", - "copyDefaultValue": "Копировать в параметры", - "unsupportedPHPExecutablePathSetting": "Этот параметр должен быть параметром пользователя. Чтобы настроить в рабочей области PHP, откройте PHP-файл и щелкните \"Путь PHP\" в строке состояния.", - "unsupportedWorkspaceSetting": "Этот параметр должен быть параметром пользователя.", - "unsupportedWorkbenchSetting": "Сейчас применить этот параметр нельзя. Он будет применен, когда вы откроете эту папку напрямую.", - "unsupportedWorkbenchSettingDevMode": "Сейчас применить этот параметр нельзя. Он будет применен, когда вы определите область параметра как 'resource' при регистрации или когда вы откроете эту папку напрямую." + "copyDefaultValue": "Копировать в параметры" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 53719eca157..6b3cd3ed9a8 100644 --- a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "Установить дополнительных поставщиков SCM...", "no open repo": "Отсутствуют активные поставщики систем управления версиями.", "source control": "Система управления версиями", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Скрыть" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json index e62c40fea26..769a0432529 100644 --- a/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Показать следующий шаблон включения в поиск", "previousSearchIncludePattern": "Показать предыдущий шаблон включения в поиск ", + "nextSearchExcludePattern": "Показать следующий шаблон исключения из поиска", + "previousSearchExcludePattern": "Показать предыдущий шаблон исключения из поиска", "nextSearchTerm": "Показать следующее условие поиска", "previousSearchTerm": "Показать предыдущее условие поиска", - "showSearchViewlet": "Показать средство поиска", "findInFiles": "Найти в файлах", "replaceInFiles": "Заменить в файлах", "RefreshAction.label": "Обновить", diff --git a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json index a577a42bfc0..b197ab3521e 100644 --- a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Переключить сведения о поиске", + "searchScope.includes": "включаемые файлы", + "label.includes": "Шаблоны включения в поиск", + "searchScope.excludes": "исключаемые файлы", + "label.excludes": "Шаблоны исключения из поиска", "replaceAll.confirmation.title": "Заменить все", "replaceAll.confirm.button": "Заменить", "replaceAll.occurrence.file.message": "Вхождение {0} заменено в {1} файле на \"{2}\".", diff --git a/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index f4733a91f5a..75cbba61a06 100644 --- a/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Поиск", + "copyMatchLabel": "Копировать", + "copyPathLabel": "Скопировать путь", + "copyAllLabel": "Копировать все", "findInFolder": "Найти в папке...", "findInWorkspace": "Найти в рабочей области...", "showTriggerActions": "Перейти к символу в рабочей области...", "name": "Поиск", - "search": "Поиск", "showSearchViewl": "Показать средство поиска", "view": "Просмотр", "findInFiles": "Найти в файлах", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Настройте для включения результатов поиска глобальных символов в файлы по запросу для Quick Open.", "search.followSymlinks": "Определяет, нужно ли следовать символическим ссылкам при поиске.", "search.smartCase": "Выполняет поиск без учета регистра, если шаблон состоит только из букв нижнего регистра; в противном случае выполняет поиск с учетом регистра", - "search.globalFindClipboard": "Определяет, должно ли представление поиска считывать или изменять общий буфер обмена поиска в macOS", - "search.location": "Предварительная версия: управляет тем, будет ли панель поиска отображаться в виде представления в боковой колонке или в виде панели в области панели для освобождения пространства по горизонтали. В следующем выпуске горизонтальное расположение поиска в панели будет улучшено, и этот параметр больше не будет находиться в предварительной версии." + "search.globalFindClipboard": "Определяет, должно ли представление поиска считывать или изменять общий буфер обмена поиска в macOS" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 7fdf8781d53..794340391f4 100644 --- a/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "Помогите нам улучшить поддержку {0}", "takeShortSurvey": "Пройдите краткий опрос", "remindLater": "Напомнить мне позже", - "neverAgain": "Больше не показывать", - "helpUs": "Помогите нам улучшить поддержку {0}" + "neverAgain": "Больше не показывать" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index e4287fa366a..ac0dc50d4a0 100644 --- a/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Вас не затруднит пройти краткий опрос?", "takeSurvey": "Пройти опрос", "remindLater": "Напомнить мне позже", - "neverAgain": "Больше не показывать", - "surveyQuestion": "Вас не затруднит пройти краткий опрос?" + "neverAgain": "Больше не показывать" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index ccc1b54893d..9e1a9301226 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Шаблон проблем либо имя добавленного или предопределенного шаблона проблем. Его можно опустить, если указано базовое значение.", "ProblemMatcherSchema.base": "Имя используемого базового сопоставителя проблем.", "ProblemMatcherSchema.owner": "Владелец проблемы в Code. Можно опустить, если указан элемент base. Если владелец опущен, а элемент base не указан, значение по умолчанию — \"внешний\".", + "ProblemMatcherSchema.source": "Строка, описывающая источник диагностических сведений, в удобном формате, например, \"typescript\" или \"super lint\".", "ProblemMatcherSchema.severity": "Серьезность по умолчанию для выявленных проблем. Используется, если в шаблоне не определена группа сопоставления для серьезности.", "ProblemMatcherSchema.applyTo": "Определяет, относится ли проблема, о которой сообщается для текстового документа, только к открытым, только к закрытым или ко всем документам.", "ProblemMatcherSchema.fileLocation": "Определяет способ интерпретации имен файлов, указываемых в шаблоне проблемы.", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index e2928ed26bf..f9fa20a44cf 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "Отменяет связь задачи со всеми группами", "JsonSchema.tasks.group": "Определяет, к какой группе выполнения принадлежит эта задача. Поддерживаемые значения: \"build\" для добавления задачи к группе сборки и \"test\" для добавления задачи к группе тестирования.", "JsonSchema.tasks.type": "Определяет, выполняется ли задача в виде процесса или в виде команды оболочки.", + "JsonSchema.command.quotedString.value": "Фактическое значение команды", + "JsonSchema.tasks.quoting.escape": "Экранирует символы с помощью escape-символа оболочки (например, \"`\" в PowerShell и\"\\\" в bash).", + "JsonSchema.tasks.quoting.strong": "Заключает аргумент в кавычки с использованием символа двойной кавычки (например, \" в PowerShell и bash).", + "JsonSchema.tasks.quoting.weak": "Заключает аргумент в кавычки с использованием символа одинарной кавычки (например, ' в PowerShell и bash).", + "JsonSchema.command.quotesString.quote": "Указывает, как значение команды должно быть заключено в кавычки.", "JsonSchema.command": "Выполняемая команда. Это может быть внешняя программа или команда оболочки.", + "JsonSchema.args.quotedString.value": "Фактическое значение аргумента.", + "JsonSchema.args.quotesString.quote": "Указывает, как значение аргумента должно быть заключено в кавычки.", "JsonSchema.tasks.args": "Аргументы, передаваемые в команду при вызове этой задачи.", "JsonSchema.tasks.label": "Метка пользовательского интерфейса задачи", "JsonSchema.version": "Номер версии конфигурации.", 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 9699d3ddc6b..874c52d41c7 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 @@ -11,7 +11,9 @@ "totalErrors": "Ошибок: {0}", "totalWarnings": "Предупреждения: {0}", "totalInfos": "Сообщения: {0}", + "problems": "Проблемы", "building": "Сборка...", + "manyProblems": "Более 10 тысяч", "runningTasks": "Показать выполняемые задачи", "tasks": "Задачи", "TaskSystem.noHotSwap": "Чтобы изменить подсистему выполнения задач, в которой запущена активная задача, необходимо перезагрузить окно", @@ -29,8 +31,8 @@ "selectProblemMatcher": "Выберите, на какие ошибки и предупреждения следует проверять выходные данные задачи", "customizeParseErrors": "В конфигурации текущей задачи есть ошибки. Исправьте ошибки перед изменением задачи.", "moreThanOneBuildTask": "В файле tasks.json определено несколько задач сборки. Выполняется первая задача.\n", - "TaskSystem.activeSame.background": "Задача '{0}' уже активна и находится в фоновом режиме. Чтобы завершить задачу, выберите \"Завершить задачу\" в меню \"Задачи\".", - "TaskSystem.activeSame.noBackground": "Задача '{0}' уже активна. Чтобы завершить задачу, выберите \"Завершить задачу\" из меню \"Задачи\".", + "terminateTask": "Завершить задачу", + "restartTask": "Перезапустить задачу", "TaskSystem.active": "Уже выполняется задача. Завершите ее, прежде чем выполнять другую задачу.", "TaskSystem.restartFailed": "Не удалось завершить и перезапустить задачу {0}", "TaskService.noConfiguration": "Ошибка: в определении задачи {0} не выявлена задача для следующей конфигурации:\n{1}\nЗадача будет проигнорирована.\n", @@ -47,8 +49,8 @@ "recentlyUsed": "недавно использованные задачи", "configured": "настроенные задачи", "detected": "обнаруженные задачи", - "TaskService.notAgain": "Больше не показывать", "TaskService.ignoredFolder": "Следующие папки рабочей области будут проигнорированы, так как в них используется версия задач 0.1.0: {0}", + "TaskService.notAgain": "Больше не показывать", "TaskService.pickRunTask": "Выберите задачу для запуска", "TaslService.noEntryToRun": "Задача для запуска не найдена. Настройте задачи...", "TaskService.fetchingBuildTasks": "Получение задач сборки...", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 76a6659cb9e..b7b348484d2 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Предупреждение: options.cwd должен иметь тип string. Игнорируется значение {0}\n", + "ConfigurationParser.inValidArg": "Ошибка: аргумент команды должен представлять строку или строку в кавычках. Указанное значение:\n{0}", "ConfigurationParser.noargs": "Ошибка: аргументы команды должны представлять собой массив строк. Указанное значение:\n{0}", "ConfigurationParser.noShell": "Предупреждение: конфигурация оболочки поддерживается только при выполнении задач в терминале.", "ConfigurationParser.noName": "Ошибка: сопоставитель проблем в области объявления должен иметь имя:\n{0}\n", diff --git a/i18n/rus/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..aca12bf1061 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "Цвет фона терминала. С его помощью можно указать цвет терминала, отличный от цвета панели.", + "terminal.foreground": "Цвет переднего плана терминала.", + "terminalCursor.foreground": "Цвет переднего плана курсора терминала.", + "terminalCursor.background": "Цвет фона курсора терминала. Позволяет выбрать цвет символа, который перекрывается блочным курсором.", + "terminal.selectionBackground": "Цвет фона выделения терминала.", + "terminal.border": "Цвет границы, которая отделяет области в терминале. По умолчанию используется panel.border.", + "terminal.ansiColor": "Цвет ANSI \"{0}\" в терминале." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 17bf9786dc4..e484fadb360 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,7 @@ "workbench.action.terminal.hideFindWidget": "Скрыть мини-приложение поиска", "nextTerminalFindTerm": "Показать следующий найденный термин", "previousTerminalFindTerm": "Показать предыдущий найденный термин", - "quickOpenTerm": "Переключить активный терминал" + "quickOpenTerm": "Переключить активный терминал", + "workbench.action.terminal.selectToPreviousCommand": "Выбрать предыдущую команду", + "workbench.action.terminal.selectToNextCommand": "Выбрать следующую команду" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index a9d5c44acd5..005e94e4f73 100644 --- a/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Эта рабочая область содержит параметры, которые можно задать только в параметрах пользователя. ({0}) Дополнительные сведения см. [здесь]({1}).", "openWorkspaceSettings": "Открыть параметры рабочей области", - "dontShowAgain": "Больше не показывать", - "unsupportedWorkspaceSettings": "Эта рабочая область содержит параметры, которые можно задать только в параметрах пользователя. ({0}) Дополнительные сведения см. [здесь]({1})." + "dontShowAgain": "Больше не показывать" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json index f279da23009..c0275a6fc93 100644 --- a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Позже", "releaseNotes": "Заметки о выпуске", "showReleaseNotes": "Показать заметки о выпуске", "read the release notes": "Вас приветствует {0} v{1}! Вы хотите прочитать заметки о выпуске?", @@ -16,13 +15,12 @@ "updateIsReady": "Доступно новое обновление {0}.", "noUpdatesAvailable": "Доступные обновления отсутствуют.", "ok": "ОК", - "download now": "Скачать сейчас", "thereIsUpdateAvailable": "Доступно обновление.", + "download now": "Скачать сейчас", + "later": "Позже", "installUpdate": "Установить обновление", - "updateAvailable": "Доступно обновление: {0} {1}", "updateInstalling": "{0} {1} устанавливается в фоновом режиме, мы сообщим вам о завершении.", "updateNow": "Обновить сейчас", - "updateAvailableAfterRestart": "{0} будет обновлен после перезапуска.", "commandPalette": "Палитра команд...", "settings": "Параметры", "keyboardShortcuts": "Сочетания клавиш", diff --git a/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 79967c51d9e..dfb29cabd85 100644 --- a/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "Редактор веб-представления" + "webview.editor.label": "Редактор веб-представления", + "developer": "Разработчик" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..18d62a09459 --- /dev/null +++ b/i18n/rus/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Открыть инструменты разработчика веб-представлений", + "refreshWebviewLabel": "Перезагрузить веб-представления" +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index 5cafb4b89da..1f214477976 100644 --- a/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Помогите улучшить VS Code, разрешив корпорации Майкрософт сбор данных об использовании. Прочтите наше [заявление о конфиденциальности]({0}) и узнайте, как [явно отказаться от него]({1}).", + "telemetryOptOut.optInNotice": "Помогите улучшить VS Code, разрешив корпорации Майкрософт сбор данных об использовании. Прочтите наше [заявление о конфиденциальности]({0}) и узнайте, как [его принять]({1}). ", "telemetryOptOut.readMore": "Подробнее" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/rus/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index 98a88920d3f..fd358ddceed 100644 --- a/i18n/rus/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Средства и языки", "welcomePage.installExtensionPacksDescription": "Установить поддержку для {0} и {1}", "welcomePage.moreExtensions": "Еще", - "welcomePage.installKeymapDescription": "Установка сочетаний клавиш", - "welcomePage.installKeymapExtension": "Настроить сочетания клавиш для {0} и {1}", "welcomePage.others": "Другие", "welcomePage.colorTheme": "Цветовая тема", "welcomePage.colorThemeDescription": "Настройте редактор и код удобным образом.", diff --git a/i18n/rus/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/rus/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..c171e724326 --- /dev/null +++ b/i18n/rus/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "Сейчас применить этот параметр нельзя. Он будет применен, когда вы откроете эту папку напрямую." +} \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/rus/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 91121ed66f9..f7305a5fe40 100644 --- a/i18n/rus/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "Хост-процесс для расширений неожиданно завершил работу.", "extensionHostProcess.unresponsiveCrash": "Работа хост-процесса для расширений была завершена, так как он перестал отвечать на запросы.", - "devTools": "Средства разработчика", "restart": "Перезапустить хост-процесс для расширений", "overwritingExtension": "Идет перезапись расширения {0} на {1}.", "extensionUnderDevelopment": "Идет загрузка расширения разработки в {0}.", diff --git a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index c3b0dd46f65..1e6d5f9b9b9 100644 --- a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Требуется платформа Microsoft .NET Framework 4.5. Нажмите ссылку, чтобы установить ее.", "installNet": "Скачать .NET Framework 4.5", "neverShowAgain": "Больше не показывать", - "netVersionError": "Требуется платформа Microsoft .NET Framework 4.5. Нажмите ссылку, чтобы установить ее.", + "enospcError": "{0} не удалось проследить изменения файлов в этой большой рабочей области. Для решения проблемы воспользуйтесь ссылкой на инструкции.", "learnMore": "Инструкции", + "fileInvalidPath": "Недопустимый ресурс файла ({0})", + "fileIsDirectoryError": "Файл является каталогом", + "fileNotModifiedError": "undefined", + "fileTooLargeError": "Не удается открыть файл, так как он имеет слишком большой размер", + "fileNotFoundError": "Файл не найден ({0})", + "fileBinaryError": "Похоже, файл является двоичным, и его нельзя открыть как текстовый.", + "filePermission": "Отсутствует разрешение на запись в файл ({0})", + "fileExists": "Создаваемый файл уже существует ({0})", + "fileModifiedError": "Файл изменен с", + "fileReadOnlyError": "Файл доступен только для чтения", + "fileMoveConflict": "Невозможно переместить или скопировать файл, так как он уже существует в папке назначения.", + "unableToMoveCopyError": "Невозможно переместить или скопировать файл, так как он заменил бы папку, в которой содержится.", "binFailed": "Не удалось переместить \"{0}\" в корзину", "trashFailed": "Не удалось переместить \"{0}\" в корзину." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index b754ce1af13..ca3f9e887a1 100644 --- a/i18n/rus/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Файл не найден ({0})", "fileIsDirectoryError": "Файл является каталогом", "fileNotModifiedError": "undefined", "fileBinaryError": "Похоже, файл является двоичным, и его нельзя открыть как текстовый." diff --git a/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 4ac6ac13d25..a51daf45d2b 100644 --- a/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -11,5 +11,6 @@ "vscode.extension.contributes.grammars.scopeName": "Имя области TextMate, используемое в файле tmLanguage.", "vscode.extension.contributes.grammars.path": "Путь к файлу tmLanguage. Путь указывается относительно папки расширения и обычно начинается с \"./syntaxes/\".", "vscode.extension.contributes.grammars.embeddedLanguages": "Сопоставление имени области и идентификатора языка, если грамматика содержит внедренные языки.", + "vscode.extension.contributes.grammars.tokenTypes": "Сопоставление имени области с типами маркеров.", "vscode.extension.contributes.grammars.injectTo": "Список имен языковых областей, в которые вставляется эта грамматика." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index 5b8cb3c808b..40ffdebf725 100644 --- a/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/rus/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "В contributes.{0}.path требуется строка. Указанное значение: {1}", "invalid.injectTo": "Недопустимое значение в \"contributes.{0}.injectTo\". Должен быть задан массив имен языковых областей. Указанное значение: {1}", "invalid.embeddedLanguages": "Недопустимое значение в \"contributes.{0}.embeddedLanguages\". Оно должно быть сопоставлением объекта между именем области и языком. Указанное значение: {1}.", + "invalid.tokenTypes": "Недопустимое значение в \"contributes.{0}.tokenTypes\". Необходимо указать сопоставление объекта между именем объекта и типом маркера. Указанное значение: {1}.", "invalid.path.1": "contributes.{0}.path ({1}) должен был быть включен в папку расширения ({2}). Это может сделать расширение непереносимым.", "no-tm-grammar": "Нет грамматики TM, зарегистрированной для этого языка." } \ No newline at end of file diff --git a/i18n/trk/extensions/css-language-features/package.i18n.json b/i18n/trk/extensions/css-language-features/package.i18n.json index 16d27b93d73..5a93ed1e786 100644 --- a/i18n/trk/extensions/css-language-features/package.i18n.json +++ b/i18n/trk/extensions/css-language-features/package.i18n.json @@ -17,7 +17,7 @@ "css.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", "css.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", "css.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "css.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "css.lint.idSelector.desc": " ID'ler HTML'e çok sıkı bağlı olduğundan, seçiciler ID içermemelidir. ", "css.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", "css.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", "css.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", @@ -39,7 +39,7 @@ "less.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", "less.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", "less.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "less.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "less.lint.idSelector.desc": " ID'ler HTML'e çok sıkı bağlı olduğundan, seçiciler ID içermemelidir. ", "less.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", "less.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", "less.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", @@ -60,7 +60,7 @@ "scss.lint.float.desc": "'float' kullanmaktan kaçının. Float'lar, düzenin herhangi bir unsuru değiştiğinde kolayca bozulan kırılgan CSS ile sonuçlanır.", "scss.lint.fontFaceProperties.desc": "@font-face kuralı 'src' ve 'font-family' özelliklerini tanımlamalıdır", "scss.lint.hexColorLength.desc": "Onaltılık renkler üç veya altı onaltılık sayıdan oluşmalıdır", - "scss.lint.idSelector.desc": "Bu kurallar HTML'ye çok sıkı bağlı olduğundan seçiciler kimlikleri içermemelidir.", + "scss.lint.idSelector.desc": " ID'ler HTML'e çok sıkı bağlı olduğundan, seçiciler ID içermemelidir. ", "scss.lint.ieHack.desc": "IE izinsiz girişleri yalnızca IE7 ve daha eski sürümler desteklenirken gereklidir", "scss.lint.important.desc": "!important kullanmaktan kaçının. Tüm CSS'nin belirginlik düzeyi üzerindeki denetimin kaybedildiğinin ve yeniden düzenlenmesi gerektiğinin bir belirtisidir.", "scss.lint.importStatement.desc": "İçe aktarma deyimleri paralel olarak yüklenmez", diff --git a/i18n/trk/extensions/emmet/package.i18n.json b/i18n/trk/extensions/emmet/package.i18n.json index f11753f3076..e3403b912e2 100644 --- a/i18n/trk/extensions/emmet/package.i18n.json +++ b/i18n/trk/extensions/emmet/package.i18n.json @@ -35,7 +35,6 @@ "emmetExtensionsPath": "Emmet profileri ve parçacıklarını içeren bir klasör yolu.'", "emmetShowExpandedAbbreviation": "Genişletilmiş Emmet kısaltmalarını öneriler olarak gösterir.\n\"inMarkupAndStylesheetFilesOnly\" seçeneği\" html, haml, jade, xml, xsl, css, scss, sass, less ve stylus'a uygulanır.\n\"always\" seçeneği işaretleme/css'den bağımsız olarak dosyanın tüm bölümlerine uygulanır.", "emmetShowAbbreviationSuggestions": "Olası Emmet kısaltmalarını öneriler olarak gösterir. Stil dosyalarında veya emmet.showExpandedAbbreviation, \"never\" olarak ayarlandığında uygulanamaz.", - "emmetIncludeLanguages": "Varsayılan olarak desteklenmeyen dillerde Emmet kısaltmalarını etkinleştirin. Burada dil ile desteklenen emmet destekli dil arasında eşleme ekleyin.", "emmetVariables": "Emmet parçacıklarında kullanılacak değişkenler", "emmetTriggerExpansionOnTab": "Etkinleştirildiğinde, Emmet kısaltmaları TAB tuşuna basıldığında genişletilir.", "emmetPreferences": "Emmet'in bazı eylemleri ve çözümleyicilerinin davranışını değiştirmek için kullanılacak tercihler.", @@ -59,5 +58,6 @@ "emmetPreferencesCssWebkitProperties": "`-` ile başlayan Emmet kısaltmasında kullanıldığında 'webkit' önekini alacak virgülle ayrılmış CSS özellikleri. 'webkit' önekinden her zaman kaçınmak için boş bir dize olarak ayarlayın.", "emmetPreferencesCssMozProperties": "`-` ile başlayan Emmet kısaltmasında kullanıldığında 'moz' önekini alacak virgülle ayrılmış CSS özellikleri. 'moz' önekinden her zaman kaçınmak için boş bir dize olarak ayarlayın.", "emmetPreferencesCssOProperties": "`-` ile başlayan Emmet kısaltmasında kullanıldığında 'o' önekini alacak virgülle ayrılmış CSS özellikleri. 'o' önekinden her zaman kaçınmak için boş bir dize olarak ayarlayın.", - "emmetPreferencesCssMsProperties": "`-` ile başlayan Emmet kısaltmasında kullanıldığında 'ms' önekini alacak virgülle ayrılmış CSS özellikleri. 'ms' önekinden her zaman kaçınmak için boş bir dize olarak ayarlayın." + "emmetPreferencesCssMsProperties": "`-` ile başlayan Emmet kısaltmasında kullanıldığında 'ms' önekini alacak virgülle ayrılmış CSS özellikleri. 'ms' önekinden her zaman kaçınmak için boş bir dize olarak ayarlayın.", + "emmetPreferencesCssFuzzySearchMinScore": "Bulanık eşleştirilmiş kısaltmaların elde etmesi gereken minimum puan (0'dan 1'e kadar). Düşük değerler birçok yanlış pozitif eşleşme oluşturabilir, daha yüksek değerler olası eşleşmeleri azaltabilir." } \ No newline at end of file diff --git a/i18n/trk/extensions/git/out/commands.i18n.json b/i18n/trk/extensions/git/out/commands.i18n.json index 1feaf1cddaf..2883a4dafdf 100644 --- a/i18n/trk/extensions/git/out/commands.i18n.json +++ b/i18n/trk/extensions/git/out/commands.i18n.json @@ -75,6 +75,7 @@ "ok": "Tamam", "push with tags success": "Başarılı bir şekilde etiketlerle gönderildi.", "pick remote": "'{0}' dalının yayınlanacağı bir uzak uçbirim seçin:", + "sync is unpredictable": "Bu eylem, '{0}/{1}' deposuna commitleri gönderecek ve alacaktır.", "never again": "Tamam, Tekrar Gösterme", "no remotes to publish": "Deponuzda yayınlamanın yapılacağı hiçbir uzak uçbirim yapılandırılmamış.", "no changes stash": "Geçici olarak saklanacak bir değişiklik yok.", diff --git a/i18n/trk/extensions/git/package.i18n.json b/i18n/trk/extensions/git/package.i18n.json index b96aca8151e..c440a7230c6 100644 --- a/i18n/trk/extensions/git/package.i18n.json +++ b/i18n/trk/extensions/git/package.i18n.json @@ -77,6 +77,7 @@ "config.showInlineOpenFileAction": "Git değişiklikleri görünümünde satır içi Dosyayı Aç eyleminin gösterilip gösterilmeyeceğini denetler.", "config.inputValidation": "Commit mesajı doğrulamasının ne zaman gösterileceğini kontrol eder.", "config.detectSubmodules": "Git alt modüllerin otomatik olarak tespit edilip edilmeyeceğini denetler.", + "config.detectSubmodulesLimit": "Algılanan git alt modüllerinin limitini denetler.", "colors.modified": "Değiştirilen kaynakların rengi.", "colors.deleted": "Silinen kaynakların rengi.", "colors.untracked": "İzlenmeyen kaynakların rengi.", diff --git a/i18n/trk/extensions/php/package.i18n.json b/i18n/trk/extensions/php/package.i18n.json index 002f7c0d2d7..20718b8a0e7 100644 --- a/i18n/trk/extensions/php/package.i18n.json +++ b/i18n/trk/extensions/php/package.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "PHP Dil Özellikleri", "description": "PHP dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/commands.i18n.json b/i18n/trk/extensions/typescript-language-features/out/commands.i18n.json new file mode 100644 index 00000000000..8893bf346b3 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/commands.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.projectConfigNoWorkspace": "Bir TypeScript veya JavaScript projesini kullanmak için lütfen bir klasör açın", + "typescript.projectConfigUnsupportedFile": "TypeScript mi yoksa JavaScript mi projesi olduğu tespit edilemedi. Desteklenmeyen dosya türü", + "typescript.projectConfigCouldNotGetInfo": "TypeScript mi yoksa JavaScript mi projesi olduğu tespit edilemedi", + "typescript.noTypeScriptProjectConfig": "Dosya bir TypeScript projesinin parçası değil. Daha fazla bilgi almak için [buraya]({0}) tıklayın.", + "typescript.noJavaScriptProjectConfig": "Dosya bir JavaScript projesinin parçası değil. Daha fazla bilgi almak için [buraya]({0}) tıklayın.", + "typescript.configureTsconfigQuickPick": "tsconfig.json'u yapılandır", + "typescript.configureJsconfigQuickPick": "jsconfig.json'u yapılandır" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json new file mode 100644 index 00000000000..73c28f59b2d --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/completionItemProvider.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "selectCodeAction": "Uygulanacak kod eylemini seçin", + "acquiringTypingsLabel": "Tuşlamalar alınıyor...", + "acquiringTypingsDetail": "IntelliSense için tuşlama tanımları alınıyor...", + "autoImportLabel": "{0} kaynağından otomatik içe aktar" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json new file mode 100644 index 00000000000..9125b191bf7 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/directiveCommentCompletionProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ts-check": "Bir JavaScript dosyasının anlamsal kontrolünü etkinleştirir. Bir dosyanın en üstünde olmalıdır.", + "ts-nocheck": "Bir JavaScript dosyasının anlamsal kontrolünü devre dışı bırakır. Bir dosyanın en üstünde olmalıdır.", + "ts-ignore": "Bir dosyanın sonraki satırında @ts-check hatalarını bastırır." +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json new file mode 100644 index 00000000000..3561a581bac --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/implementationsCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneImplementationLabel": "1 uygulama", + "manyImplementationLabel": "{0} uygulama", + "implementationsErrorLabel": "Uygulamalar belirlenemedi" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json new file mode 100644 index 00000000000..d6c29560283 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/jsDocCompletionProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "typescript.jsDocCompletionItem.documentation": "JSDoc yorumu" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/organizeImports.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/organizeImports.i18n.json new file mode 100644 index 00000000000..4f692e9af12 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/organizeImports.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oraganizeImportsAction.title": "İçe Aktarımları Düzenle" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json new file mode 100644 index 00000000000..323d1a99391 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/quickFixProvider.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "fixAllInFileLabel": "{0} (Dosyadaki tümünü düzelt)" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json new file mode 100644 index 00000000000..48ebde68477 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/referencesCodeLensProvider.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "oneReferenceLabel": "1 başvuru", + "manyReferenceLabel": "{0} başvuru", + "referenceErrorLabel": "Başvurular belirlenemedi" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/features/taskProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/features/taskProvider.i18n.json new file mode 100644 index 00000000000..e69846fe634 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/features/taskProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "buildTscLabel": "derleme - {0}", + "buildAndWatchTscLabel": "izleme - {0}" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json b/i18n/trk/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json new file mode 100644 index 00000000000..d378e70d327 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/typescriptServiceClient.i18n.json @@ -0,0 +1,19 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "noServerFound": "{0} yolu geçerli bir tsserver kurulumuna işaret etmiyor. Paketlenmiş TypeScript sürümüne geri dönülüyor.", + "serverCouldNotBeStarted": "TypeScript dil sunucusu başlatılamadı. Hata mesajı: {0}", + "typescript.openTsServerLog.notSupported": "TS Sunucu günlüğü için TS 2.2.2+ gerekiyor", + "typescript.openTsServerLog.loggingNotEnabled": "TS Sunucu günlüğü kapalı. Lütfen `typescript.tsserver.log` ögesini ayarlayın ve günlüğe yazmayı etkinleştirmek için TS sunucusunu yeniden başlatın", + "typescript.openTsServerLog.enableAndReloadOption": "Günlüğe yazmayı etkinleştir ve TS sunucusunu yeniden başlat", + "typescript.openTsServerLog.noLogFile": "TS sunucu günlüğe yazmaya başlamadı.", + "openTsServerLog.openFileFailedFailed": "TS Sunucu günlük dosyası açılamadı", + "serverDiedAfterStart": "TypeScript dil hizmeti, başladıktan hemen sonra 5 kez kapandı. Hizmet yeniden başlatılmayacaktır.", + "serverDiedReportIssue": "Sorun Bildir", + "serverDied": "TypeScript dil hizmeti, son 5 dakikada 5 kez beklenmedik şekilde kapandı." +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/api.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/api.i18n.json new file mode 100644 index 00000000000..4a8a4fba715 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/api.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "invalidVersion": "geçersiz sürüm" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/logger.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/logger.i18n.json new file mode 100644 index 00000000000..8f5ef5415b9 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/logger.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "channelName": "TypeScript" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/projectStatus.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/projectStatus.i18n.json new file mode 100644 index 00000000000..61c40dd9a35 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/projectStatus.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "hintExclude": "Proje çapında JavaScript/TypeScript dil özelliklerini etkinleştirmek için, şunlar gibi birçok dosyaya sahip klasörleri hariç tutun: {0}", + "hintExclude.generic": "Proje çapında JavaScript/TypeScript dil özelliklerini etkinleştirmek için, üzerinde çalışmadığınız kaynak dosyalar içeren büyük klasörleri hariç tutun.", + "large.label": "Hariç Tutmaları Yapılandır", + "hintExclude.tooltip": "Proje çapında JavaScript/TypeScript dil özelliklerini etkinleştirmek için, üzerinde çalışmadığınız kaynak dosyalar içeren büyük klasörleri hariç tutun." +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json new file mode 100644 index 00000000000..6f7d1c56095 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/typingsStatus.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "installingPackages": "Daha iyi TypeScript IntelliSense için veri alınıyor", + "typesInstallerInitializationFailed.title": "JavaScript dil özellikleri için tuşlama dosyaları yüklenemedi. Lütfen NPM'in yüklenmiş olduğundan emin olun veya kullanıcı ayarlarınızdaki 'typescript.npm' ögesini yapılandırın. Daha fazla bilgi almak için [buraya]({0}) tıklayın.", + "typesInstallerInitializationFailed.doNotCheckAgain": "Tekrar Gösterme" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/versionPicker.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/versionPicker.i18n.json new file mode 100644 index 00000000000..bbccc6cfbc1 --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/versionPicker.i18n.json @@ -0,0 +1,13 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "useVSCodeVersionOption": "VS Code'un Sürümünü Kullan", + "useWorkspaceVersionOption": "Çalışma Alanı Sürümünü Kullan", + "learnMore": "Daha Fazla Bilgi Edin", + "selectTsVersion": "JavaScript ve TypeScript dil özellikleri için kullanılacak TypeScript sürümünü seçin" +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/out/utils/versionProvider.i18n.json b/i18n/trk/extensions/typescript-language-features/out/utils/versionProvider.i18n.json new file mode 100644 index 00000000000..86f606ebb3a --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/out/utils/versionProvider.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "couldNotLoadTsVersion": "Bu yolda TypeScript sürümü yüklenemedi", + "noBundledServerFound": "VS Code'un tsserver'ı hatalı bir virüs tespit aracı gibi bir uygulama tarafından silindi. Lütfen VS Code'u yeniden yükleyin." +} \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-language-features/package.i18n.json b/i18n/trk/extensions/typescript-language-features/package.i18n.json new file mode 100644 index 00000000000..452869e59fe --- /dev/null +++ b/i18n/trk/extensions/typescript-language-features/package.i18n.json @@ -0,0 +1,58 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "TypeScript ve JavaScript Dili Özellikleri", + "description": "JavaScript ve TypeScript için zengin dil desteği sağlar.", + "typescript.reloadProjects.title": "Projeyi Yeniden Yükle", + "javascript.reloadProjects.title": "Projeyi Yeniden Yükle", + "configuration.typescript": "TypeScript", + "typescript.useCodeSnippetsOnMethodSuggest.dec": "İşlevleri parametre imzalarıyla tamamlayın.", + "typescript.tsdk.desc": "Kullanılacak tsserver ve lib*.d.ts dosyalarını içeren klasör yolunu belirtir.", + "typescript.disableAutomaticTypeAcquisition": "Otomatik tür kazanımını devre dışı bırakır. TypeScript >= 2.0.6 gerektirir.", + "typescript.tsserver.log": "TS sunucusunun bir dosyaya günlük yazmasını etkinleştirir. Bu günlük, TS Sunucu sorunlarını teşhis etmek için kullanılabilir. Günlük dosya yollarını, kaynak kodunu ve projenizdeki diğer muhtemel hassas bilgileri içerebilir.", + "typescript.tsserver.trace": "TS sunucusuna gönderilen mesajları izlemeyi etkinleştirir. Bu izleme, TS Sunucu sorunlarını teşhis etmek için kullanılabilir. İzleme; dosya yollarını, kaynak kodunu ve projenizdeki diğer muhtemel hassas bilgileri içerebilir.", + "typescript.validate.enable": "TypeScript doğrulamasını etkinleştir veya devre dışı bırak.", + "typescript.format.enable": "Varsayılan TypeScript biçimlendiricisini etkinleştirin/devre dışı bırakın.", + "javascript.format.enable": "Varsayılan JavaScript biçimlendiricisini etkinleştir veya devre dışı bırak.", + "format.insertSpaceAfterCommaDelimiter": "Virgül sınırlayıcısından sonra boşluk eklenmesini tanımlar.", + "format.insertSpaceAfterConstructor": "Oluşturucu anahtar kelimesinden sonra boşluk eklenip eklenmeyeceğini tanımlar. TypeScript >= 2.3.0 gerektirir.", + "format.insertSpaceAfterSemicolonInForStatements": "Bir ifade için noktalı virgülden sonra boşluk eklenmesini tanımlar.", + "format.insertSpaceBeforeAndAfterBinaryOperators": "Bir ikili operatöründen sonra boşluk eklenmesini tanımlar.", + "format.insertSpaceAfterKeywordsInControlFlowStatements": "Bir kontrol akışı ifadesi için anahtar kelimelerden sonra boşluk eklenmesini tanımlar.", + "format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": "Anonim fonksiyonlar için \"function\" anahtar kelimesinden sonra boşluk eklenmesini tanımlar.", + "format.insertSpaceBeforeFunctionParenthesis": "Fonksiyon argüman parantezlerinden önce boşluk eklenmesini tanımlar. TypeScript >= 2.1.5 gerektirir.", + "format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": "Şablon dizesi ayraçları açıldıktan sonra ve kapatılmadan önce boşluk eklenmesini tanımlar. TypeScript >= 2.0.6 gerektirir.", + "format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": "JSX ifadesi ayraçları açıldıktan sonra ve kapatılmadan önce boşluk eklenmesini tanımlar. TypeScript >= 2.0.6 gerektirir.", + "format.insertSpaceAfterTypeAssertion": "TypeScript'te tür iddialarından sonra boşluk eklenip eklenmeyeceğini tanımlar. TypeScript >= 2.4 gerektirir.", + "format.placeOpenBraceOnNewLineForFunctions": "Fonksiyonlarda bir açılış ayracının yeni satıra koyulup koyulmayacağını tanımlar.", + "format.placeOpenBraceOnNewLineForControlBlocks": "Kontrol bloklarında bir açılış ayracının yeni satıra koyulup koyulmayacağını tanımlar.", + "javascript.validate.enable": "JavaScript doğrulamasını etkinleştir veya devre dışı bırak.", + "typescript.goToProjectConfig.title": "Proje Yapılandırmasına Git", + "javascript.goToProjectConfig.title": "Proje Yapılandırmasına Git", + "javascript.referencesCodeLens.enabled": "JavaScript dosyalarında başvuru kod objektifini etkinleştir veya devre dışı bırak.", + "typescript.referencesCodeLens.enabled": "TypeScript dosyalarında başvuru kod objektifini etkinleştir veya devre dışı bırak. TypeScript >= 2.0.6 gerektirir.", + "typescript.implementationsCodeLens.enabled": "Uygulama kod objektifini etkinleştir veya devre dışı bırak. TypeScript >= 2.2.0 gerektirir.", + "typescript.openTsServerLog.title": "TS Sunucu günlüğünü aç", + "typescript.restartTsServer": "TS sunucusunu yeniden başlat", + "typescript.selectTypeScriptVersion.title": "TypeScript Sürümünü Seç", + "typescript.reportStyleChecksAsWarnings": "Stil kontrollerini uyarı olarak bildir", + "jsDocCompletion.enabled": "Otomatik JSDoc yorumlarını etkinleştir veya devre dışı bırak.", + "javascript.implicitProjectConfig.checkJs": "JavaScript dosyalarının anlamsal kontrolünü etkinleştir veya devre dışı bırak. Mevcut jsconfig.json veya tsconfig.json dosyaları bu ayarı geçersiz kılar. TypeScript >= 2.3.1 gerektirir.", + "typescript.npm": "Otomatik Tür Kazanımı için kullanılacak NPM yürütülebilir dosyasının yolunu belirtir. TypeScript >= 2.3.4 gerektirir.", + "typescript.check.npmIsInstalled": "Otomatik Tür Kazanımı için NPM'in yüklü olup olmadığını kontrol et.", + "javascript.nameSuggestions": "JavaScript öneri listelerindeki dosyadan benzersiz adları eklemeyi etkinleştir veya devre dışı bırak.", + "typescript.tsc.autoDetect": "tsc görevlerinin otomatik algılanmasını denetler. 'off' bu özelliği devre dışı bırakır. 'build' sadece bir kez çalışan derleme görevleri oluşturur. 'watch' sadece derleme ve izleme görevleri oluşturur. 'on' derleme ve izleme görevlerinin her ikisini de oluşturur. Varsayılan 'on'dur. ", + "typescript.problemMatchers.tsc.label": "TypeScript sorunları", + "typescript.problemMatchers.tscWatch.label": "TypeScript sorunları (izleme modu)", + "typescript.quickSuggestionsForPaths": "Bir içe aktarım yolu girerken hızlı önerileri etkinleştir/devre dışı bırak.", + "typescript.locale": "TypeScript hatalarını bildirirken kullanılarak dili(bölgeyi) ayarlar. TypeScript >= 2.6.0 gerektirir. 'null' varsayılanı, TypeScript hataları için VS Code'un dil(bölge) ayarlarını kullanır.", + "javascript.implicitProjectConfig.experimentalDecorators": "Bir projenin parçası olmayan JavaScript dosyaları için deneysel dekoratörler ('experimentalDecorators') özelliğini etkinleştir veya devre dışı bırak. Mevcut jsconfig.json veya tsconfig.json dosyaları bu ayarı geçersiz kılar. TypeScript >= 2.3.1 gerektirir.", + "typescript.autoImportSuggestions.enabled": "Otomatik içe aktarım önerilerini etkinleştir/devre dışı bırak. TypeScript >= 2.6.1 gerektirir.", + "typescript.experimental.syntaxFolding": "Sözdimine duyarlı katlama işaretleyicilerini etkinleştirin/devre dışı bırakın.", + "taskDefinition.tsconfig.description": "TS derlemesini tanımlayan tsconfig dosyası." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/base/node/processes.i18n.json b/i18n/trk/src/vs/base/node/processes.i18n.json index 0debe2b0adb..35229bd6699 100644 --- a/i18n/trk/src/vs/base/node/processes.i18n.json +++ b/i18n/trk/src/vs/base/node/processes.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "TaskRunner.UNC": "UNC sürücüsünde kabuk komutu yürütülemez." + ] } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 285e792d6c3..bfc5cc5845c 100644 --- a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -11,7 +11,6 @@ "similarIssues": "Benzer sorunlar", "open": "Aç", "closed": "Kapalı", - "noResults": "Sonuç bulunamadı", "settingsSearchIssue": "Ayar Arama Sorunu", "bugReporter": "Hata Raporu", "featureRequest": "Özellik İsteği", diff --git a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 0045409477d..48797829bb8 100644 --- a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -8,6 +8,9 @@ ], "completeInEnglish": "Lütfen formu İngilizce olarak doldurunuz.", "issueTypeLabel": "Bu bir", + "vscode": "Visual Studio Code", + "disableExtensions": "tüm eklentileri devre dışı bırakıp pencereyi yeniden yükleyin", + "chooseExtension": "Eklenti", "issueTitleLabel": "Başlık", "issueTitleRequired": "Lütfen bir başlık girin.", "titleLengthValidation": "Başlık çok uzun.", @@ -18,13 +21,6 @@ "extensions": "Eklentilerim", "searchedExtensions": "Aranan Eklentiler", "settingsSearchDetails": "Ayar Arama Detayları", - "tryDisablingExtensions": "Eklentiler devre dışı bırakıldığında sorun yeniden oluşturulabiliyor mu?", - "yes": "Evet", - "no": "Hayır", - "disableExtensionsLabelText": "Sorunu {0} sonrasında yeniden oluşturmaya çalışın.", - "disableExtensions": "tüm eklentileri devre dışı bırakıp pencereyi yeniden yükleyin", - "showRunningExtensionsLabelText": "Bunun bir eklenti sorunu olduğundan şüpheleniyorsanız, eklentideki sorunu bildirmek için {0}.", - "showRunningExtensions": "çalışan tüm eklentileri göster", "details": "Lütfen detayları giriniz.", "loadingData": "Veri yükleniyor..." } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json b/i18n/trk/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json new file mode 100644 index 00000000000..d79aea5296a --- /dev/null +++ b/i18n/trk/src/vs/code/electron-browser/processExplorer/processExplorerMain.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "name": "Adı" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/editor/browser/widget/diffReview.i18n.json b/i18n/trk/src/vs/editor/browser/widget/diffReview.i18n.json index d8b434e3625..fb4e78feb3a 100644 --- a/i18n/trk/src/vs/editor/browser/widget/diffReview.i18n.json +++ b/i18n/trk/src/vs/editor/browser/widget/diffReview.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "label.close": "Kapat", - "header": "Farklılık {0}/{1}: orijinal {2}, {3} satırları, değiştirilen {4}, {5} satırları", "blankLine": "boş", "equalLine": "orijinal {0}, değiştirilen {1}: {2}", "insertLine": "+ değiştirilen {0}: {1}", diff --git a/i18n/trk/src/vs/editor/common/commonCodeEditor.i18n.json b/i18n/trk/src/vs/editor/common/commonCodeEditor.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/editor/common/commonCodeEditor.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json b/i18n/trk/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json new file mode 100644 index 00000000000..26213ddb84d --- /dev/null +++ b/i18n/trk/src/vs/editor/contrib/codeAction/codeActionCommands.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "quickFixWithKb": "Düzeltmeleri Göster ({0})", + "quickFix": "Düzeltmeleri Göster", + "organizeImports.label": "İçe Aktarımları Düzenle" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/editor/contrib/message/messageController.i18n.json b/i18n/trk/src/vs/editor/contrib/message/messageController.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/editor/contrib/message/messageController.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/platform/environment/node/argv.i18n.json b/i18n/trk/src/vs/platform/environment/node/argv.i18n.json index de45d35b28e..66361e3eb27 100644 --- a/i18n/trk/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/trk/src/vs/platform/environment/node/argv.i18n.json @@ -29,8 +29,6 @@ "performance": "'Geliştirici: Başlangıç Performansı' komutu etkinleştirilmiş olarak başlat.", "prof-startup": "Başlangıç sırasında CPU profil oluşturucusunu çalıştır", "disableExtensions": "Yüklü tüm eklentileri devre dışı bırak.", - "inspect-extensions": "Eklentilerde hata ayıklama ve ayrımlamaya izin ver. Bağlantı URI'ı için geliştirici araçlarını kontrol edin.", - "inspect-brk-extensions": "Eklentilerde hata ayıklama ve ayrımlamaya eklenti sunucusu başladıktan hemen sonra duraklatılacak şekilde izin ver. Bağlantı URI'ı için geliştirici araçlarını kontrol edin.", "disableGPU": "GPU donanım hızlandırmasını devre dışı bırak.", "uploadLogs": "Geçerli oturumdaki günlükleri güvenli bir uçbirime yükler.", "maxMemory": "Bir pencere için maksimum bellek miktarı (Mbyte olarak).", diff --git a/i18n/trk/src/vs/platform/extensions/node/extensionValidator.i18n.json b/i18n/trk/src/vs/platform/extensions/node/extensionValidator.i18n.json index cbe0edea7ae..6060ac3a06c 100644 --- a/i18n/trk/src/vs/platform/extensions/node/extensionValidator.i18n.json +++ b/i18n/trk/src/vs/platform/extensions/node/extensionValidator.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "versionSyntax": "`engines.vscode` değeri {0} ayrıştırılamadı. Lütfen örnekte verilenlere benzer ifadeler kullanın: ^0.10.0, ^1.2.3, ^0.11.0, ^0.10.x, vb.", "versionSpecificity1": "`engines.vscode`da belirtilen sürüm ({0}) yeterince belirli değil. vscode 1.0.0'dan önceki sürümler için, lütfen istenecek minimum majör ve minör sürüm numarasını tanımlayın. Örneğin: ^0.10.0, 0.10.x, 0.11.0, vb.", "versionSpecificity2": "`engines.vscode`da belirtilen sürüm ({0}) yeterince belirli değil. vscode 1.0.0'dan sonraki sürümler için, lütfen istenecek minimum majör sürüm numarasını tanımlayın. Örneğin: ^1.10.0, 1.10.x, 1.x.x, 2.x.x, vb.", "versionMismatch": "Eklenti, Code {0} ile uyumlu değil. Gereken sürüm: {1}." diff --git a/i18n/trk/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json b/i18n/trk/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json index e6399c3a740..6cac235b96e 100644 --- a/i18n/trk/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json +++ b/i18n/trk/src/vs/platform/integrity/node/integrityServiceImpl.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "integrity.prompt": "{0} kurulumunuz bozuk görünüyor. Lütfen yeniden yükleyin.", "integrity.moreInformation": "Daha Fazla Bilgi", - "integrity.dontShowAgain": "Tekrar Gösterme", - "integrity.prompt": "{0} kurulumunuz bozuk görünüyor. Lütfen yeniden yükleyin." + "integrity.dontShowAgain": "Tekrar Gösterme" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json b/i18n/trk/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json new file mode 100644 index 00000000000..dd01b6be52a --- /dev/null +++ b/i18n/trk/src/vs/workbench/api/browser/viewsContainersExtensionPoint.i18n.json @@ -0,0 +1,12 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "requirestring": "`{0}` özelliği zorunludur ve `string` türünde olmalıdır", + "showViewlet": "{0}'i Göster", + "view": "Görüntüle" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json b/i18n/trk/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json index 5b6a365ee4b..0369e1260ea 100644 --- a/i18n/trk/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json +++ b/i18n/trk/src/vs/workbench/api/browser/viewsExtensionPoint.i18n.json @@ -15,7 +15,6 @@ "vscode.extension.contributes.views": "Görünümleri düzenleyiciye ekler.", "views.explorer": "Gezgin Görünümü", "views.debug": "Hata Ayıklama Görünümü", - "locationId.invalid": "`{0}` geçerli bir görünüm konumu değil", - "duplicateView1": "`{1}` konumunda aynı `{0}` kimliğine sahip birden çok görünüm kaydedilemiyor", - "duplicateView2": "`{0}` kimliğine sahip bir görünüm `{1}` konumunda zaten kayıtlı" + "duplicateView1": "`{1}` konumunda aynı `{0}` id'sine sahip birden çok görünüm kaydedilemiyor", + "duplicateView2": "`{0}` id'sine sahip bir görünüm `{1}` konumunda zaten kayıtlı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json index 77c86b9a0b6..3f98c05062b 100644 --- a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json +++ b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "timeout.formatOnSave": "Kaydederken biçimlendirme {0}ms sonrasında durduruldu", + "timeout.onWillSave": "onWillSaveTextDocument olayı 1750ms sonrasında durduruldu", "saveParticipants": "Katılımcıların Kaydedilmesi İşlemi Çalıştırılıyor..." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 4c6d2775a03..35229bd6699 100644 --- a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,6 +5,5 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ], - "webview.editor.label": "web görünümü düzenleyicisi" + ] } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/node/extHostTreeViews.i18n.json b/i18n/trk/src/vs/workbench/api/node/extHostTreeViews.i18n.json index d8a7f990546..45dce70f0b9 100644 --- a/i18n/trk/src/vs/workbench/api/node/extHostTreeViews.i18n.json +++ b/i18n/trk/src/vs/workbench/api/node/extHostTreeViews.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "treeView.notRegistered": "Kayıtlı '{0}' Id'li ağaç görünümü yok.", - "treeView.duplicateElement": "{0} kimliğine sahip bir öge zaten kayıtlı" + "treeView.duplicateElement": "{0} id'sine sahip bir öge zaten kayıtlı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json index d89fb0f61b9..d7d8c7f9437 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/editor/editorStatus.i18n.json @@ -17,10 +17,9 @@ "screenReaderDetectedExtra": "Bir Ekran Okuyucu kullanmıyorsanız, lütfen `editor.accessibilitySupport` ayarını \"off\" olarak değiştirin", "disableTabMode": "Erişilebilirlik Modunu Devre Dışı Bırak", "gotoLine": "Satıra Git", - "indentation": "Girinti", "selectEncoding": "Kodlamayı Seç", "selectEOL": "Satır Sonu Sıralamasını Seç", - "selectLanguageMode": "Dil Modunu Seçin", + "selectLanguageMode": "Dil Modunu Seç", "fileInfo": "Dosya Bilgisi", "spacesSize": "Boşluk: {0}", "tabSize": "Sekme Boyutu: {0}", @@ -33,9 +32,9 @@ "configureModeSettings": "'{0}' dili tabanlı ayarları yapılandır...", "configureAssociationsExt": "'{0}' için Dosya İlişkilendirmesini Yapılandır...", "autoDetect": "Otomatik Algıla", - "pickLanguage": "Dil Modunu Seçin", + "pickLanguage": "Dil Modunu Seç", "currentAssociation": "Geçerli İlişkilendirme", - "pickLanguageToConfigure": " '{0}' ile İlişkilendirilecek Dil Modunu Seçin", + "pickLanguageToConfigure": "'{0}' ile İlişkilendirilecek Dil Modunu Seç", "changeIndentation": "Girintiyi Değiştir", "noWritableCodeEditor": "Aktif kod düzenleyici salt okunur.", "indentView": "görünümü değiştir", diff --git a/i18n/trk/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json index 4e305d89305..9428ff84bf5 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/editor/resourceViewer.i18n.json @@ -11,9 +11,7 @@ "sizeMB": "{0}MB", "sizeGB": "{0}GB", "sizeTB": "{0}TB", - "largeImageError": "Resim dosyası boyutu düzenleyicide görüntülemek için çok büyük (>1MB).", "resourceOpenExternalButton": "Harici program kullanarak resmi aç", - "nativeBinaryError": "Dosya ikili olduğu, çok büyük olduğu veya desteklenmeyen bir metin kodlaması kullandığı için düzenleyicide görüntülenemiyor.", "zoom.action.fit.label": "Resmin Tamamı", "imgMeta": "{0}x{1} {2}" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json new file mode 100644 index 00000000000..205a210e0cd --- /dev/null +++ b/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInput.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "ok": "Tamam" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/workbench/browser/parts/quickinput/quickInputBox.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/workbench/common/views.i18n.json b/i18n/trk/src/vs/workbench/common/views.i18n.json index 08f2962090b..352d616cb23 100644 --- a/i18n/trk/src/vs/workbench/common/views.i18n.json +++ b/i18n/trk/src/vs/workbench/common/views.i18n.json @@ -6,5 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "duplicateId": "'{0}' kimliğine sahip bir görünüm '{1}' konumunda zaten kayıtlı" + "duplicateId": "'{0}' id'sine sahip bir görünüm '{1}' konumunda zaten kayıtlı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json index 8653d808605..f55bdf21090 100644 --- a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -45,10 +45,17 @@ "windowConfigurationTitle": "Pencere", "window.openFilesInNewWindow.on": "Dosyalar yeni bir pencerede açılacak", "window.openFilesInNewWindow.off": "Dosyalar, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak", + "window.openFilesInNewWindow.defaultMac": "Dosyalar, Dock veya Finder'dan açılmadıkça, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak", + "window.openFilesInNewWindow.default": "Dosyalar, uygulama içinden seçilmedikçe (ör. Dosya menüsünden) yeni bir pencerede açılır", + "openFilesInNewWindowMac": "Dosyaların yeni bir pencerede açılıp açılmayacağını denetler.\n- default: dosyalar, Dock veya Finder'dan açılmadıkça, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak\n- on: dosyalar yeni bir pencerede açılacak\n- off: dosyalar, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılacak\nBu ayarın halen yok sayılacağı durumlar olabilir (ör. -new-window veya -reuse-window komut satırı seçenekleri kullanılırken).", + "openFilesInNewWindow": "Dosyaların yeni bir pencerede açılıp açılmayacağını denetler.\n- default: dosyalar, uygulama içinden seçilmedikçe (ör. Dosya menüsünden) yeni bir pencerede açılır\n- on: dosyalar yeni bir pencerede açılır\n- off: dosyalar, dosyaların klasörünün olduğu pencerede veya son aktif pencerede açılır\nBu ayarın halen yok sayılacağı durumlar olabilir (ör. -new-window veya -reuse-window komut satırı seçenekleri kullanılırken).", "window.openFoldersInNewWindow.on": "Klasörler yeni bir pencerede açılacak", "window.openFoldersInNewWindow.off": "Klasörler son aktif pencereyi değiştirir", "window.openFoldersInNewWindow.default": "Klasörler, bir klasör uygulama içinden seçilmedikçe (ör. Dosya menüsünden) yeni bir pencerede açılır", "openFoldersInNewWindow": "Klasörlerin yeni bir pencerede mi açılacağını yoksa son aktif pencereyi mi değiştireceğini denetler.\n- default: klasörler, bir klasör uygulama içinden seçilmedikçe (ör. Dosya menüsünden) yeni bir pencerede açılır\n- on: klasörler yeni bir pencerede açılır\n- off: klasörler son aktif pencereyi değiştirir\nBu ayarın halen yok sayılacağı durumlar olabilir (ör. -new-window veya -reuse-window komut satırı seçenekleri kullanılırken).", + "window.openWithoutArgumentsInNewWindow.on": "Yeni bir pencere aç", + "window.openWithoutArgumentsInNewWindow.off": "Son aktif çalışan örneğe odakla", + "openWithoutArgumentsInNewWindow": "Yeni bir örnek argümansız olarak başlatılırken boş bir yeni pencerenin açılıp açılmamasını veya son çalışan örneğe odaklanıp odaklanmamasını denetler.\n- on: boş bir yeni pencere aç\n- off: son çalışan örneğe odakla\nBu ayarın halen yok sayılacağı durumlar olabilir (ör. -new-window veya -reuse-window komut satırı seçenekleri kullanılırken).", "window.reopenFolders.all": "Tüm pencereleri yeniden aç.", "window.reopenFolders.folders": "Tüm klasörleri yeniden aç. Boş çalışma alanları geri yüklenmeyecektir.", "window.reopenFolders.one": "Son aktif pencereyi yeniden aç.", @@ -56,6 +63,7 @@ "restoreWindows": "Pencerelerin, bir yeniden başlatma sonrası nasıl yeniden açılacağını denetler. Her zaman boş bir çalışma alanı ile başlamak için 'none', üzerinde çalıştığınız son pencereyi yeniden açmak için 'one', açık klasör bulunduran tüm pencereleri yeniden açmak için 'folders' veya son oturumunuzdaki tüm pencereleri yeniden açmak için 'all' seçeneğini seçin.", "restoreFullscreen": "Bir pencere tam ekran modundayken çıkıldıysa, bu pencerenin tam ekran moduna geri dönüp dönmeyeceğini denetler.", "zoomLevel": "Pencerenin yakınlaştırma düzeyini ayarlayın. Orijinal boyut 0'dır ve üstündeki (ör. 1) veya altındaki (ör. -1) her artırma 20% daha fazla veya az yakınlaştırmayı temsil eder. Yakınlaştırma düzeyini daha ince ayrıntılarla ayarlamak için ondalık değerler de girebilirsiniz.", + "title": "Pencere başlığını aktif düzenleyiciye bağlı olarak denetler. Değişkenler, bağlama göre değiştirilir:\n${activeEditorShort}: dosyanın adı (ör. myFile.txt)\n${activeEditorMedium}: çalışma alanı klasörüne göreli dosyanın yolu (ör. myFolder/myFile.txt)\n${activeEditorLong}: dosyanın tam yolu (ör. /Users/Development/myProject/myFolder/myFile.txt)\n${folderName}: dosyayı içeren çalışma alanı klasörünün adı (ör. myFolder)\n${folderPath}: dosyayı içeren çalışma alanı klasörünün yolu (ör. /Users/Development/myFolder)\n${rootName}: çalışma alanının adı (ör. myFolder veya myWorkspace)\n${rootPath}: çalışma alanının yolu (ör. /Users/Development/myWorkspace)\n${appName}: ör. VS Code\n${dirty}: etkin düzenleyici kaydedilmemiş değişiklikler içeriyorsa, değişiklik göstergesi\n${separator}: şartlı ayırıcı (\" - \") yalnızca değer veya statik metin içeren değişkenlerle çevrili olduğunda gösterilir", "window.newWindowDimensions.default": "Yeni pencereleri ekranın ortasında açın.", "window.newWindowDimensions.inherit": "Yeni pencereleri son aktif pencere ile aynı ölçülerde açın.", "window.newWindowDimensions.maximized": "Yeni pencereleri ekranı kapla modunda açın.", @@ -71,6 +79,7 @@ "autoDetectHighContrast": "Etkinleştirilirse; eğer Windows bir yüksek karşıtlık teması kullanıyorsa, otomatik olarak yüksek karşıtlık temasına geçiş yapılır; ve Windows, yüksek karşıtlık temasını kullanmayı bıraktığında koyu temaya geçiş yapılır.", "titleBarStyle": "Pencere başlık çubuğunun görünümünü ayarlayın. Değişikliklerin uygulanması için tam yeniden başlatma gerekir.", "window.nativeTabs": "macOS Sierra pencere sekmelerini etkinleştirir. Değişikliklerin uygulanması için tam yeniden başlatma gerekeceğini ve yerel sekmelerin, eğer yapılandırılmışsa özel başlık çubuğu stilini devre dışı bıracağını unutmayın.", + "window.smoothScrollingWorkaround": "Simge durumuna küçültülmüş bir VS Code penceresini tekrar açtıktan sonra kaydırma artık pürüzsüz değilse bu geçici çözümü etkinleştirin. Bu, Microsoft'un Surface cihazları gibi hassas trackpad'ler içeren cihazlarda yaşanan kaydırma gecikmesi sorunu (https://github.com/Microsoft/vscode/issues/13612) için geçici bir çözümdür.", "zenModeConfigurationTitle": "Zen Modu", "zenMode.fullScreen": "Zen Moduna geçmenin ayrıca çalışma ekranını tam ekran moduna geçirip geçirmeyeceğini denetler.", "zenMode.centerLayout": "Zen Modu'nun aktif edilmesinin düzeni ortalayıp ortalamayacağını denetler.", diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 7be66e01426..8b50a979878 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editConditionalBreakpoint": "Kesme Noktasını Düzenle...", "functionBreakpointsNotSupported": "Fonksiyon kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", "functionBreakpointPlaceholder": "Mola verilecek fonksiyon", "functionBreakPointInputAriaLabel": "Fonksiyon kesme noktasını girin", @@ -14,6 +13,7 @@ "breakpointUnverifieddHover": "Doğrulanmamış kesme noktası", "functionBreakpointUnsupported": "Fonksiyon kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", "breakpointDirtydHover": "Doğrulanmamış Kesme Noktası Dosya düzenlendi, lütfen hata ayıklama oturumunu yeniden başlatın.", + "logBreakpointUnsupported": "Günlük noktaları bu hata ayıklama türü tarafından desteklenmiyor", "conditionalBreakpointUnsupported": "Koşullu kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", "hitBreakpointUnsupported": "Koşullu kesme noktalarına isabet etme bu hata ayıklama türü tarafından desteklenmiyor" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json index b06dcece797..015958ac4d9 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/debugEditorActions.i18n.json @@ -8,6 +8,7 @@ ], "toggleBreakpointAction": "Hata Ayıklama: Kesme Noktası Ekle/Kaldır", "conditionalBreakpointEditorAction": "Hata Ayıklama: Koşullu Kesme Noktası Ekle...", + "logPointEditorAction": "Hata Ayıklama: Günlük Noktası Ekle...", "runToCursor": "İmlece Kadar Çalıştır", "debugEvaluate": "Hata Ayıklama: Değerlendir", "debugAddToWatch": "Hata Ayıklama: İzlemeye Ekle", diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json index 30a355a88d6..d8d0b352bf7 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/breakpointWidget.i18n.json @@ -8,8 +8,6 @@ ], "breakpointWidgetHitCountPlaceholder": "İsabet sayısı koşulu sağlandığında mola ver. Kabul etmek için 'Enter', iptal etmek için 'Esc' tuşuna basın.", "breakpointWidgetExpressionPlaceholder": "İfade değerlendirmesi doğru olduğunda mola ver. Kabul etmek için 'Enter', iptal etmek için 'Esc' tuşuna basın.", - "breakpointWidgetHitCountAriaLabel": "Program, burada sadece isabet sayısı koşulu sağlandığında durur. Kabul etmek için Enter veya iptal etmek için Escape tuşuna basın. ", - "breakpointWidgetAriaLabel": "Program, burada sadece bu koşul doğruysa durur. Kabul etmek için Enter veya iptal etmek için Escape tuşuna basın. ", "expression": "İfade", "hitCount": "İsabet Sayısı", "logMessage": "Günlük Mesajı" diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json index a8cf3c979b7..a208d169e68 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.i18n.json @@ -35,7 +35,6 @@ "useUniqueNames": "Lütfen benzersiz yapılandırma adları kullanın.", "app.launch.json.compound.folder": "Bileşiğin bulunduğu klasörün adı.", "app.launch.json.compounds.configurations": "Bu bileşiğin parçası olarak başlatılacak yapılandırmaların adları.", - "debugNoType": "Hata ayıklama bağdaştırıcısının 'type' ögesi atlanabilir veya 'dize' türünde olmalıdır.", "selectDebug": "Ortam Seçin", "DebugConfig.failed": " '.vscode' klasörü içinde 'launch.json' dosyası oluşturulamıyor ({0}).", "workspace": "çalışma alanı", diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json index 05751eef2fe..ad2bc971edf 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.i18n.json @@ -6,9 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editBreakpoint": "Kesme Noktasını Düzenle...", - "disableBreakpoint": "Kesme Noktasını Devre Dışı Bırak", - "enableBreakpoint": "Kesme Noktasını Etkinleştir", "removeBreakpoints": "Kesme Noktalarını Kaldır", "removeBreakpointOnColumn": "{0}. Sütundaki Kesme Noktasını Kaldır", "removeLineBreakpoint": "Satır Kesme Noktasını Kaldır", @@ -21,6 +18,8 @@ "enableBreakpoints": "{0}. Sütundaki Kesme Noktasını Etkinleştir", "enableBreakpointOnLine": "Satır Kesme Noktasını Etkinleştir", "addBreakpoint": "Kesme Noktası Ekle", - "conditionalBreakpoint": "Koşullu Kesme Noktası Ekle...", + "addConditionalBreakpoint": "Koşullu Kesme Noktası Ekle...", + "addLogPoint": "Günlük Noktası Ekle...", + "cancel": "İptal", "addConfiguration": "Yapılandırma Ekle..." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 7a4c4a13ddb..3b4248d45e7 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -28,5 +28,7 @@ "preLaunchTaskExitCode": "'{0}' ön başlatma görevi {1} çıkış koduyla sonlandı.", "showErrors": "Hataları Göster", "noFolderWorkspaceDebugError": "Aktif dosyada hata ayıklama yapılamıyor. Lütfen, dosyanın diskte kayıtlı olduğundan ve bu dosya türü için hata ayıklama eklentinizin olduğundan emin olun.", - "cancel": "İptal" + "cancel": "İptal", + "DebugTaskNotFound": "'{0}' görevi bulunamadı.", + "taskNotTracked": "'{0}' görevi izlenemez." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 4a7eda0e464..9ae9577ae78 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -7,8 +7,5 @@ "Do not edit this file. It is machine generated." ], "moreInfo": "Daha Fazla Bilgi", - "unableToLaunchDebugAdapter": "'{0}' tarafından hata ayıklama bağdaştırıcısı başlatılamadı.", - "unableToLaunchDebugAdapterNoArgs": "Hata ayıklama bağdaştırıcısı başlatılamıyor.", - "stoppingDebugAdapter": "{0}. Hata ayıklama bağdaştırıcısı durduruluyor.", "debugAdapterCrash": "Hata ayıklama bağdaştırıcısı beklenmeyen biçimde sonlandırıldı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index cf227b35676..a61ef28f2c1 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -8,19 +8,6 @@ ], "debugAdapterBinNotFound": "Hata ayıklama bağdaştırıcısı yürütülebilir dosyası '{0}', mevcut değil.", "debugAdapterCannotDetermineExecutable": "Hata ayıklama bağdaştırıcısı yürütülebilir dosyası '{0}' belirlenemedi.", - "launch.config.comment1": "Olası öznitelikler hakkında bilgi edinmek için IntelliSense kullanın.", - "launch.config.comment2": "Mevcut özniteliklerin açıklamalarını görmek için fare ile üzerine gelin.", - "launch.config.comment3": "Daha fazla bilgi için ziyaret edin: {0}", - "debugType": "Yapılandırma türü.", - "debugTypeNotRecognised": "Hata ayıklama türü tanınmıyor. Karşılık gelen hata ayıklama uzantısı yüklemiş olduğunuzdan ve etkinleştirildiğinden emin olun.", - "node2NotSupported": "\"node2\" artık desteklenmiyor, bunun yerine \"node\" kullanın ve \"protocol\" özniteliğini \"inspector\" olarak ayarlayın.", - "debugName": "Yapılandırmanın adı; başlatma yapılandırması açılır kutu menüsünde görünür.", - "debugRequest": "Yapılandırmanın istek türü. \"launch\" veya \"attach\" olabilir.", - "debugServer": "Sadece eklenti geliştirme hata ayıklaması için: eğer port belirtildiyse; Vs Code, bir hata ayıklama bağdaştırıcısına sunucu modunda bağlanmayı dener", - "debugPrelaunchTask": "Hata ayıklama oturumu başlamadan önce çalıştırılacak görev.", - "debugPostDebugTask": "Hata ayıklama oturumu sona erdikten sonra çalıştırılacak görev.", - "debugWindowsConfiguration": "Windows'a özel başlangıç yapılandırması öznitelikleri.", - "debugOSXConfiguration": "OS X'e özel başlangıç yapılandırması öznitelikleri.", - "debugLinuxConfiguration": "Linux'a özel başlangıç yapılandırması öznitelikleri.", - "deprecatedVariables": "'env.', 'config.' ve 'command.' kullanım dışıdır, bunların yerine 'env:', 'config:' ve 'command:' kulanın." + "unableToLaunchDebugAdapter": "'{0}' tarafından hata ayıklama bağdaştırıcısı başlatılamadı.", + "unableToLaunchDebugAdapterNoArgs": "Hata ayıklama bağdaştırıcısı başlatılamıyor." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/node/debugger.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/node/debugger.i18n.json new file mode 100644 index 00000000000..7c6fe0bcc31 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/debug/node/debugger.i18n.json @@ -0,0 +1,23 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "launch.config.comment1": "Olası öznitelikler hakkında bilgi edinmek için IntelliSense kullanın.", + "launch.config.comment2": "Mevcut özniteliklerin açıklamalarını görmek için fare ile üzerine gelin.", + "launch.config.comment3": "Daha fazla bilgi için ziyaret edin: {0}", + "debugType": "Yapılandırma türü.", + "debugTypeNotRecognised": "Hata ayıklama türü tanınmıyor. Karşılık gelen hata ayıklama uzantısı yüklemiş olduğunuzdan ve etkinleştirildiğinden emin olun.", + "node2NotSupported": "\"node2\" artık desteklenmiyor, bunun yerine \"node\" kullanın ve \"protocol\" özniteliğini \"inspector\" olarak ayarlayın.", + "debugName": "Yapılandırmanın adı; başlatma yapılandırması açılır kutu menüsünde görünür.", + "debugRequest": "Yapılandırmanın istek türü. \"launch\" veya \"attach\" olabilir.", + "debugServer": "Sadece eklenti geliştirme hata ayıklaması için: eğer port belirtildiyse; Vs Code, bir hata ayıklama bağdaştırıcısına sunucu modunda bağlanmayı dener", + "debugPrelaunchTask": "Hata ayıklama oturumu başlamadan önce çalıştırılacak görev.", + "debugWindowsConfiguration": "Windows'a özel başlangıç yapılandırması öznitelikleri.", + "debugOSXConfiguration": "OS X'e özel başlangıç yapılandırması öznitelikleri.", + "debugLinuxConfiguration": "Linux'a özel başlangıç yapılandırması öznitelikleri.", + "deprecatedVariables": "'env.', 'config.' ve 'command.' kullanım dışıdır, bunların yerine 'env:', 'config:' ve 'command:' kulanın." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/node/terminals.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/node/terminals.i18n.json new file mode 100644 index 00000000000..4fbca0dfa72 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/debug/node/terminals.i18n.json @@ -0,0 +1,14 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "console.title": "VS Code Konsolu", + "mac.terminal.script.failed": "'{0}' betiği, {1} çıkış koduyla başarısız oldu", + "mac.terminal.type.not.supported": "'{0}' desteklenmiyor", + "press.any.key": "Devam etmek için bir tuşa basın ...", + "linux.term.failed": "'{0}', {1} çıkış koduyla başarısız oldu" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index ef58948ca49..69722eca3ee 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -60,6 +60,7 @@ "malicious": "Kötü amaçlı", "disabled": "Devre Dışı", "disabled globally": "Devre Dışı", + "disabled workspace": "Bu Çalışma Alanı için Devre Dışı Bırakılmış", "disableAll": "Yüklü Tüm Eklentileri Devre Dışı Bırak", "disableAllWorkspace": "Bu Çalışma Alanı için Yüklü Tüm Eklentileri Devre Dışı Bırak", "enableAll": "Tüm Eklentileri Etkinleştir", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json index e72bf637256..dececc5e110 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.i18n.json @@ -35,13 +35,11 @@ "view name": "Adı", "view location": "Yeri", "localizations": "Çeviriler ({0})", - "localizations language id": "Dil Kimliği", - "localizations language name": "Dil Adı", - "localizations localized language name": "Dil Adı (Çevrilen Dilde)", + "localizations language id": "Dil Id'si", "colorThemes": "Renk Temaları ({0})", "iconThemes": "Simge Temaları ({0})", "colors": "Renkler ({0})", - "colorId": "Kimlik", + "colorId": "Id", "defaultDark": "Koyu Varsayılan", "defaultLight": "Açık Varsayılan", "defaultHC": "Yüksek Karşıtlık Varsayılan", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index f497a3c8bb1..61f68f56bb4 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -15,8 +15,8 @@ "workspaceRecommendation": "Bu eklenti geçerli çalışma alanı kullanıcıları tarafından tavsiye ediliyor.", "reallyRecommended2": "'{0}' eklentisi bu dosya türü için tavsiye edilir.", "reallyRecommendedExtensionPack": "'{0}' eklenti paketi bu dosya türü için tavsiye edilir.", - "showRecommendations": "Tavsiyeleri Göster", "install": "Yükle", + "showRecommendations": "Tavsiyeleri Göster", "showLanguageExtensions": "Markette '.{0}' dosyaları için yardımcı olabilecek eklentiler bulunuyor", "workspaceRecommended": "Bu çalışma alanı bazı eklentileri tavsiye ediyor.", "installAll": "Tümünü Yükle", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json index f2540380575..30c88b423ce 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.i18n.json @@ -8,7 +8,5 @@ ], "disableOtherKeymapsConfirmation": "Tuş bağlamlarında çakışmalardan kaçınmak için diğer tuş haritaları ({0}) devre dışı bırakılsın mı?", "yes": "Evet", - "no": "Hayır", - "betterMergeDisabled": "\"Better Merge\" artık yerleşik bir eklenti, yüklenen eklendi devre dışı bırakıldı ve kaldırılabilir.", - "uninstall": "Kaldır" + "no": "Hayır" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 8a7b64b5ad3..0a617d5d5c3 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,8 @@ "recommendedExtensions": "Tavsiye Edilen", "otherRecommendedExtensions": "Diğer Tavsiyeler", "workspaceRecommendedExtensions": "Çalışma Alanı Tavsiyeleri", + "builtInExtensions": "Özellikler", + "builtInThemesExtensions": "Temalar", "searchExtensions": "Markette Eklenti Ara", "sort by installs": "Sırala: Yüklenme Sayısına Göre", "sort by rating": "Sırala: Derecelendirmeye Göre", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index e0b425c8efd..5867f17bd1f 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -27,12 +27,17 @@ "confirmMoveTrashMessageMultiple": "Aşağıdaki {0} dosyayı silmek istediğinizden emin misiniz?", "confirmMoveTrashMessageFolder": "'{0}' ve içindekileri silmek istediğinizden emin misiniz?", "confirmMoveTrashMessageFile": "'{0}' öğesini silmek istediğinize emin misiniz?", + "undoBin": "Geri Dönüşüm Kutusu'ndan geri alabilirsiniz.", + "undoTrash": "Çöp Kutusu'ndan geri alabilirsiniz.", "doNotAskAgain": "Bir daha sorma", "confirmDeleteMessageMultiple": "Aşağıdaki {0} dosyayı kalıcı olarak silmek istediğinizden emin misiniz?", "confirmDeleteMessageFolder": "'{0}' öğesini ve içindekileri kalıcı olarak silmek istediğinizden emin misiniz?", "confirmDeleteMessageFile": "'{0}' öğesini kalıcı olarak silmek istediğinizden emin misiniz?", "irreversible": "Bu eylem geri döndürülemez!", - "importFiles": "Dosya İçe Aktar", + "binFailed": "Geri Dönüşüm Kutusu'nu kullanarak silme başarısız oldu. Bunun yerine, kalıcı olarak silmek ister misiniz?", + "trashFailed": "Çöp Kutusu'nu kullanarak silme başarısız oldu. Bunun yerine, kalıcı olarak silmek ister misiniz?", + "deletePermanentlyButtonLabel": "&&Kalıcı Olarak Sil", + "retryButtonLabel": "&&Yeniden Dene", "confirmOverwrite": "Hedef klasörde aynı ada sahip bir dosya veya klasör zaten var. Değiştirmek istiyor musunuz?", "replaceButtonLabel": "&&Değiştir", "fileIsAncestor": "Yapıştırılacak dosya hedef klasörün atalarından biridir", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json index 16f13358790..b2f872d687b 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/files.contribution.i18n.json @@ -37,6 +37,7 @@ "defaultLanguage": "Yeni dosyalara atanan varsayılan dil modu.", "editorConfigurationTitle": "Düzenleyici", "formatOnSave": "Dosyayı kaydederken biçimlendir. Bir biçimlendirici mevcut olmalıdır, dosya otomatik olarak kaydedilmemelidir, ve düzenleyici kapanmıyor olmalıdır.", + "formatOnSaveTimeout": "Dosyayı kaydederken biçimlendirme zaman aşımı. formatOnSave komutlarında kullanılacak milisaniye cinsinden zaman limiti. Belirtilen zaman aşımından daha uzun süren komutlar iptal edilecektir.", "explorerConfigurationTitle": "Dosya Gezgini", "openEditorsVisible": "Açık Düzenleyiciler bölmesinde gösterilen düzenleyici sayısı.", "autoReveal": "Gezginin dosyaları açarken, onları otomatik olarak ortaya çıkartmasını ve seçmesini denetler.", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index cc968719081..8953d418928 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,13 +7,14 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Dosya adı girin. Onaylamak için Enter'a, iptal etmek için Escape tuşuna basın.", - "constructedPath": "**{1}** içinde {0} oluştur", "filesExplorerViewerAriaLabel": "{0}, Dosya Gezgini", "dropFolders": "Klasörleri çalışma alanına eklemek istiyor musunuz?", "dropFolder": "Klasörü çalışma alanına eklemek istiyor musunuz?", "addFolders": "Klasörleri &&Ekle", "addFolder": "Klasörü &&Ekle", + "confirmRootsMove": "Çalışma alanınızdaki birden çok kök dizinin sırasını değiştirmek istediğinizden emin misiniz?", "confirmMultiMove": "Aşağıdaki {0} dosyayı taşımak istediğinizden emin misiniz?", + "confirmRootMove": "Çalışma alanınızdaki '{0}' kök dizininin sırasını değiştirmek istediğinizden emin misiniz?", "confirmMove": "'{0}' ögesini taşımak istediğinizden emin misiniz?", "doNotAskAgain": "Bir daha sorma", "moveButtonLabel": "&&Taşı", diff --git a/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 7fe7d2ea049..ea26bcd9db3 100644 --- a/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -6,16 +6,17 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "updateLocale": "VS Code'un kullanıcı arayüzü dilini {0} olarak değiştirip yeniden başlatmak ister misiniz?", "yes": "Evet", "no": "Hayır", - "doNotAskAgain": "Bir daha sorma", + "neverAgain": "Tekrar Gösterme", "JsonSchema.locale": "Kullanılacak Kullanıcı Arayüzü Dili.", "vscode.extension.contributes.localizations": "Düzenleyiciye yerelleştirmeleri ekler", - "vscode.extension.contributes.localizations.languageId": "Görüntülenen dizelerin çevrileceği dilin kimliği.", + "vscode.extension.contributes.localizations.languageId": "Görüntülenen dizelerin çevrileceği dilin id'si.", "vscode.extension.contributes.localizations.languageName": "Dilin İngilizcedeki adı.", "vscode.extension.contributes.localizations.languageNameLocalized": "Dilin eklenen dildeki adı.", "vscode.extension.contributes.localizations.translations": "Bu dille ilişkili çevirilerin listesi.", - "vscode.extension.contributes.localizations.translations.id": "Bu çevirinin ekleneceği VS Code veya Eklenti kimliği. VS Code kimliği her zaman `vscode` şeklindedir ve eklenti ise `yayinciAdi.eklentiAdi` biçiminde olmalıdır.", - "vscode.extension.contributes.localizations.translations.id.pattern": "Kimlik, VS Code çevirisi için `vscode` olmalı veya eklenti çevirisi için `yayinciAdi.eklentiAdi` biçiminde olmalıdır.", + "vscode.extension.contributes.localizations.translations.id": "Bu çevirinin ekleneceği VS Code veya Eklenti id'si. VS Code id'si her zaman`vscode` şeklindedir ve eklenti `yayinciAdi.eklentiAdi` formatında olmalıdır.", + "vscode.extension.contributes.localizations.translations.id.pattern": "Id, VS Code çevirisi için `vscode` olmalı veya eklenti çevirisi için `yayinciAdi.eklentiAdi` biçiminde olmalıdır.", "vscode.extension.contributes.localizations.translations.path": "Dilin çevirilerini içeren dosyaya göreli yol." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json index 0bdba9b12bf..45570f731d6 100644 --- a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.contribution.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "copyMarker": "Kopyala", - "copyMarkerMessage": "Mesajı Kopyala" + "copyMessage": "Mesajı Kopyala" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json index 03c12e0efce..a84cf939af0 100644 --- a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markers.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "totalProblems": "Toplam {0} Sorun", - "filteredProblems": "{1} Sorundan {0} Tanesi Gösteriliyor" + "totalProblems": "Toplam {0} Sorun" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanel.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "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 diff --git a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json index 8910520ca78..2835343e395 100644 --- a/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/markers/electron-browser/messages.i18n.json @@ -14,9 +14,8 @@ "markers.panel.title.problems": "Sorunlar", "markers.panel.aria.label.problems.tree": "Dosyalara göre gruplandırılmış sorunlar", "markers.panel.no.problems.build": "Şu ana kadar çalışma alanında herhangi bir sorun tespit edilmedi.", - "markers.panel.no.problems.filters": "Belirtilen süzgeç ölçütleriyle sonuç bulunamadı", "markers.panel.action.filter": "Sorunları Süz", - "markers.panel.filter.placeholder": "Türe veya metne göre süz", + "markers.panel.filter.ariaLabel": "Sorunları Süz", "markers.panel.filter.errors": "hatalar", "markers.panel.filter.warnings": "uyarılar", "markers.panel.filter.infos": "bilgilendirmeler", @@ -30,5 +29,15 @@ "markers.panel.multiple.unknowns.label": "{0} Bilinmeyen", "markers.panel.at.ln.col.number": "({0}, {1})", "problems.tree.aria.label.resource": "{0} {1} sorun içeriyor", + "problems.tree.aria.label.marker.relatedInformation": "Bu sorun {0} konumla ilişkilidir.", + "problems.tree.aria.label.error.marker": "{0} tarafından oluşturulan hata: {2}. satırın {3}. karakterinde {1}.{4}", + "problems.tree.aria.label.error.marker.nosource": "Hata: {1}. satırın {2}. karakterinde {0}.{3}", + "problems.tree.aria.label.warning.marker": "{0} tarafından oluşturulan uyarı: {2}. satırın {3}. karakterinde {1}.{4}", + "problems.tree.aria.label.warning.marker.nosource": "Uyarı: {1}. satırın {2}. karakterinde {0}.{3}", + "problems.tree.aria.label.info.marker": "{0} tarafından oluşturulan bilgilendirme: {2}. satırın {3}. karakterinde {1}.{4}", + "problems.tree.aria.label.info.marker.nosource": "Bilgilendirme: {1}. satırın {2}. karakterinde {0}.{3}", + "problems.tree.aria.label.marker": "{0} tarafından oluşturulan sorun: {2}. satırın {3}. karakterinde {1}.{4}", + "problems.tree.aria.label.marker.nosource": "Sorun: {1}. satırın {2}. karakterinde {0}.{3}", + "problems.tree.aria.label.relatedinfo.message": "{3} dosyasının {1}. satırın {2}. karakterinde {0}", "errors.warnings.show.label": "Hataları ve Uyarıları Göster" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/output/browser/outputActions.i18n.json b/i18n/trk/src/vs/workbench/parts/output/browser/outputActions.i18n.json index 4659e728e08..3d310c952c0 100644 --- a/i18n/trk/src/vs/workbench/parts/output/browser/outputActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/output/browser/outputActions.i18n.json @@ -9,5 +9,6 @@ "toggleOutput": "Çıktıyı Aç/Kapat", "clearOutput": "Çıktıyı Temizle", "toggleOutputScrollLock": "Çıktı Kaydırma Kilidini Aç/Kapat", - "switchToOutput.label": "Çıktıya Geçiş Yap" + "switchToOutput.label": "Çıktıya Geçiş Yap", + "openInLogViewer": "Günlük Dosyasını Aç" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 1cd086b7e38..467358d0b9f 100644 --- a/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -6,7 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "keybindingsInputName": "Klavye Kısayolları", + "showDefaultKeybindings": "Varsayılan Tuş Bağlarını Göster", + "showUserKeybindings": "Kullanıcı Tuş Bağlarını Göster", "SearchKeybindings.AriaLabel": "Tuş bağlarını ara", "SearchKeybindings.Placeholder": "Tuş bağlarını ara", "sortByPrecedene": "Önceliğe Göre Sırala", diff --git a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json index be9fd552833..019d3ded95f 100644 --- a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "openRawDefaultSettings": "Ham Varsayılan Ayarları Aç", + "openSettings": "Ayarları Aç", "openGlobalSettings": "Kullanıcı Ayarlarını Aç", "openGlobalKeybindings": "Klavye Kısayollarını Aç", "openGlobalKeybindingsFile": "Klavye Kısayolları Dosyasını Aç", diff --git a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 5205b6b6f58..b660c1e4f87 100644 --- a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "settingsEditorName": "Varsayılan Ayarlar", "SearchSettingsWidget.AriaLabel": "Ayarları ara", "SearchSettingsWidget.Placeholder": "Ayarları Ara", "noSettingsFound": "Sonuç Yok", diff --git a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json index 22428848192..a0bd993aafd 100644 --- a/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/preferences/browser/preferencesRenderers.i18n.json @@ -13,9 +13,5 @@ "newExtensionLabel": "\"{0}\" Eklentisini Göster", "editTtile": "Düzenle", "replaceDefaultValue": "Ayarlarda Değiştir", - "copyDefaultValue": "Ayarlara Kopyala", - "unsupportedPHPExecutablePathSetting": "Bu ayar, bir Kullanıcı Ayarı olmalıdır. PHP'yi çalışma alanı için yapılandırmak için bir PHP dosyasını açın ve durum çubuğundaki 'PHP Yolu'na tıklayın.", - "unsupportedWorkspaceSetting": "Bu ayar, bir Kullanıcı Ayarı olmalıdır.", - "unsupportedWorkbenchSetting": "Bu ayar şu an uygulanamıyor. Ayar, bu klasörü açtığınızda uygulanacaktır.", - "unsupportedWorkbenchSettingDevMode": "Bu ayar şu an uygulanamıyor. Ayar, kaydederken kapsamını 'resource' olarak tanımladığınızda veya bu klasörü direkt olarak açtığınızda uygulanacaktır." + "copyDefaultValue": "Ayarlara Kopyala" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json index 860dab87f7f..d7ca189ea44 100644 --- a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scmViewlet.i18n.json @@ -11,5 +11,6 @@ "installAdditionalSCMProviders": "Ek SCM Sağlayıcıları Yükle...", "no open repo": "Aktif bir kaynak kontrolü sağlayıcısı yok.", "source control": "Kaynak Kontrolü", - "viewletTitle": "{0}: {1}" + "viewletTitle": "{0}: {1}", + "hideView": "Gizle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json b/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json index c9272a2cea6..79f2510cc1f 100644 --- a/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/browser/searchActions.i18n.json @@ -8,9 +8,10 @@ ], "nextSearchIncludePattern": "Sonraki Aramaya Dahil Edilen Kalıbı Göster", "previousSearchIncludePattern": "Önceki Aramaya Dahil Edilen Kalıbı Göster", + "nextSearchExcludePattern": "Sonraki Aramada Hariç Tutulan Kalıbı Göster", + "previousSearchExcludePattern": "Önceki Aramada Hariç Tutulan Kalıbı Göster", "nextSearchTerm": "Sonraki Arama Terimini Göster", "previousSearchTerm": "Önceki Arama Terimini Göster", - "showSearchViewlet": "Aramayı Göster", "findInFiles": "Dosyalarda Bul", "replaceInFiles": "Dosyalardakileri Değiştir", "RefreshAction.label": "Yenile", diff --git a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json index cb483fdd910..fc38590cc30 100644 --- a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -7,6 +7,10 @@ "Do not edit this file. It is machine generated." ], "moreSearch": "Arama Detaylarını Aç/Kapat", + "searchScope.includes": "dahil edilecek dosyalar", + "label.includes": "Aramaya Dahil Edilen Kalıplar", + "searchScope.excludes": "hariç tutulacak klasörler", + "label.excludes": "Aramada Hariç Tutulan Kalıplar", "replaceAll.confirmation.title": "Tümünü Değiştir", "replaceAll.confirm.button": "&&Değiştir", "replaceAll.occurrence.file.message": "{1} dosyadaki {0} tekrarlama '{2}' ile değiştirildi.", diff --git a/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 63b497714c2..5042337767a 100644 --- a/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -6,11 +6,14 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "search": "Ara", + "copyMatchLabel": "Kopyala", + "copyPathLabel": "Yolu Kopyala", + "copyAllLabel": "Tümünü Kopyala", "findInFolder": "Klasörde Bul...", "findInWorkspace": "Çalışma Alanında Bul...", "showTriggerActions": "Çalışma Alanında Sembole Git...", "name": "Ara", - "search": "Ara", "showSearchViewl": "Aramayı Göster", "view": "Görüntüle", "findInFiles": "Dosyalarda Bul", @@ -25,6 +28,5 @@ "search.quickOpen.includeSymbols": "Dosya sonuçlarındaki bir global sembol aramasının sonuçlarının Hızlı Aç'a dahil edilip edilmeyeceğini yapılandırın.", "search.followSymlinks": "Arama yaparken sembolik linklerin takip edilip edilmeyeceğini denetler.", "search.smartCase": "Örüntü tamamen küçük harflerden oluşuyorsa büyük küçük harf duyarlılığı olmadan arar, diğer durumda ise büyük küçük harf duyarlılığı ile arar", - "search.globalFindClipboard": "macOS'de arama görünümünün paylaşılan panoyu okuyup okumamasını veya değiştirip değiştirmemesini denetler", - "search.location": "Önizleme: aramanın kenar çubuğunda bir görünüm olarak mı yoksa daha fazla yatay boşluk için panel alanında bir panel olarak mı gösterileceğini denetler. Bir sonraki sürümde paneldeki arama, geliştirilmiş yatay düzene sahip olacak ve bu bir önizleme olmaktan çıkacaktır." + "search.globalFindClipboard": "macOS'de arama görünümünün paylaşılan panoyu okuyup okumamasını veya değiştirip değiştirmemesini denetler" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json index 6ad8b1e4112..bcad8d50b1f 100644 --- a/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "helpUs": "{0} için hizmetimizi iyileştirmemize yardımcı olun", "takeShortSurvey": "Kısa Ankete Katıl", "remindLater": "Daha Sonra Hatırlat", - "neverAgain": "Tekrar Gösterme", - "helpUs": "{0} için hizmetimizi iyileştirmemize yardımcı olun" + "neverAgain": "Tekrar Gösterme" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json index 8e3a8985829..eea9d76b733 100644 --- a/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.i18n.json @@ -6,8 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "surveyQuestion": "Hızlı bir geri bildirim anketine katılmak ister misiniz?", "takeSurvey": "Ankete Katıl", "remindLater": "Daha Sonra Hatırlat", - "neverAgain": "Tekrar Gösterme", - "surveyQuestion": "Hızlı bir geri bildirim anketine katılmak ister misiniz?" + "neverAgain": "Tekrar Gösterme" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 8a3fbfaad65..02224d40eaf 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -45,6 +45,7 @@ "PatternTypeSchema.description": "Bir sorun modeli veya bir katkıda bulunulan veya ön tanımlı sorun modelinin adı. Temel model belirtildiyse atlanabilir.", "ProblemMatcherSchema.base": "Kullanılacak temel sorun eşleştiricisinin adı.", "ProblemMatcherSchema.owner": "Code'un içindeki sorunun sahibi. Temel model belirtildiyse atlanabilir. Atlanırsa ve temel belirtilmemişse 'external' varsayılır.", + "ProblemMatcherSchema.source": "Bu tanılama bilgilerinin kaynağını açıklayan insan tarafından okunabilir bir dize, ör. 'typescript' veya 'super lint'.", "ProblemMatcherSchema.severity": "Sorun yakalamanın varsayılan önem derecesi. Model, önem derecesi için bir eşleme grubu tanımlamazsa kullanılır.", "ProblemMatcherSchema.applyTo": "Bir metin belgesinde bildirilen bir sorunun sadece açık, kapalı veya tüm belgelere uygulanıp uygulanmadığını denetler.", "ProblemMatcherSchema.fileLocation": "Bir sorun modelinde bildirilen dosya adlarının nasıl yorumlanacağını tanımlar.", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json index 5eeb3e4000b..2af5738ee5a 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/jsonSchema_v2.i18n.json @@ -28,7 +28,14 @@ "JsonSchema.tasks.group.none": "Görevi grupsuz olarak atar", "JsonSchema.tasks.group": "Bu görevin ait olduğu çalıştırma grubunu tanımlar. Derleme grubuna eklemek için \"build\"ı ve test grubuna eklemek için \"test\"i destekler.", "JsonSchema.tasks.type": "Görevin bir işlem olarak veya bir kabukta komut olarak çalıştırılıp çalıştırılmayacağını tanımlar.", + "JsonSchema.command.quotedString.value": "Gerçek komut değeri", + "JsonSchema.tasks.quoting.escape": "Kaçış karakteri olarak kabuğun kaçış karakterini kullanır (ör. PowerShell için ` ve bash için \\).", + "JsonSchema.tasks.quoting.strong": "Argümanı kabuğun güçlü alıntı karakteri ile alıntı haline getirir (ör. PowerShell ve bash için \").", + "JsonSchema.tasks.quoting.weak": "Argümanı kabuğun zayıf alıntı karakteri ile alıntı haline getirir (ör. PowerShell ve bash için ').", + "JsonSchema.command.quotesString.quote": "Komut değerinin tırnak içine nasıl alınacağı.", "JsonSchema.command": "Çalıştırılacak komut. Harici bir program veya bir kabuk komutu olabilir.", + "JsonSchema.args.quotedString.value": "Gerçek argüman değeri", + "JsonSchema.args.quotesString.quote": "Gerçek argüman değerinin tırnak içine nasıl alınacağı.", "JsonSchema.tasks.args": "Bu görev çağrıldığında, komuta iletilecek argümanlar.", "JsonSchema.tasks.label": "Görevin kullanıcı arayüzü etiketi", "JsonSchema.version": "Yapılandırmanın sürüm numarası.", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 88cc53075e4..19ebebef075 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -11,6 +11,7 @@ "totalErrors": "{0} Hata", "totalWarnings": "{0} Uyarı", "totalInfos": "{0} Bilgilendirme", + "problems": "Sorunlar", "building": "Derleniyor...", "manyProblems": "10b+", "runningTasks": "Çalışan Görevleri Göster", @@ -30,8 +31,8 @@ "selectProblemMatcher": "Görev çıktısında taranacak hata ve uyarı türlerini seçin", "customizeParseErrors": "Geçerli görev yapılandırmasında hatalar var. Lütfen, bir görevi özelleştirmeden önce ilk olarak hataları düzeltin.", "moreThanOneBuildTask": "tasks.json dosyasında tanımlı çok fazla derleme görevi var. İlk görev çalıştırılıyor.", - "TaskSystem.activeSame.background": "'{0}' görevi zaten aktif ve arka plan modunda. Görevi sonlandırmak için Görevler menüsünden 'Görevi Sonlandır...'ı kullanın.", - "TaskSystem.activeSame.noBackground": " '{0}' görevi zaten aktif. Görevi sonlandırmak için Görevler menüsünden 'Görevi Sonlandır...'ı kullanın. ", + "terminateTask": "Görevi Sonlandır", + "restartTask": "Görevi Yeniden Başlat", "TaskSystem.active": "Çalışan bir görev zaten var. Bir başkasını çalıştırmadan önce bu görevi sonlandırın.", "TaskSystem.restartFailed": "{0} görevini sonlandırma ve yeniden başlatma başarısız oldu", "TaskService.noConfiguration": "Hata: {0} görev algılaması aşağıdaki yapılandırma için bir görev eklemesi yapmıyor:\n{1}\nYapılandırma yok sayılacaktır.\n", @@ -48,8 +49,8 @@ "recentlyUsed": "yakınlarda kullanılan görevler", "configured": "yapılandırılmış görevler", "detected": "algılanan görevler", - "TaskService.notAgain": "Tekrar Gösterme", "TaskService.ignoredFolder": "0.1.0 görev sürümünü kullandıkları için şu çalışma alanı klasörleri yok sayıldı: {0}", + "TaskService.notAgain": "Tekrar Gösterme", "TaskService.pickRunTask": "Çalıştırılacak görevi seçin", "TaslService.noEntryToRun": "Çalıştırılacak hiçbir görev bulunamadı. Görevleri Yapılandır...", "TaskService.fetchingBuildTasks": "Derleme görevleri alınıyor...", diff --git a/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json index 707fc6758f4..22ab290691f 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/node/taskConfiguration.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "ConfigurationParser.invalidCWD": "Uyarı: options.cwd dize türünde olmalıdır. {0} değeri yok sayıldı.\n", + "ConfigurationParser.inValidArg": "Hata: komut argümanı bir dize veya tırnak içinde bir dize olmalıdır. Belirtilen değer:\n{0}", "ConfigurationParser.noargs": "Hata: komut argümanları dizelerden oluşan bir dizi olmalıdır. Belirtilen değer:\n{0}", "ConfigurationParser.noShell": "Uyarı: kabuk yapılandırması sadece görevler terminalde çalıştırılırken desteklenir.", "ConfigurationParser.noName": "Hata: Kapsam bildiriminde Sorun Eşleştirici'nin bir adı olmalıdır:\n{0}\n", diff --git a/i18n/trk/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json new file mode 100644 index 00000000000..9ae8066e173 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/terminal/common/terminalColorRegistry.i18n.json @@ -0,0 +1,16 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "terminal.background": "Terminalin arka plan rengi; bu, terminalin panelden farklı olarak renklendirilmesini sağlar.", + "terminal.foreground": "Terminalin ön plan rengi.", + "terminalCursor.foreground": "Terminal imlecinin ön plan rengi.", + "terminalCursor.background": "Terminal imlecinin arka plan rengi. Bir blok imlecinin kapladığı bir karakterin rengini özelleştirmeyi sağlar.", + "terminal.selectionBackground": "Terminalin seçim arkaplanı rengi.", + "terminal.border": "Terminaldeki bölmeleri ayıran kenarlığın rengi. panel.border bunun için varsayılan olarak kullanılır.", + "terminal.ansiColor": "Terminalde '{0}' ANSI rengi." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index fb23f3c189e..33c53ccb7b3 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -51,5 +51,7 @@ "workbench.action.terminal.hideFindWidget": "Bulma Aracını Gizle", "nextTerminalFindTerm": "Sonraki Arama Terimini Göster", "previousTerminalFindTerm": "Önceki Arama Terimini Göster", - "quickOpenTerm": "Aktif Terminali Değiştir" + "quickOpenTerm": "Aktif Terminali Değiştir", + "workbench.action.terminal.selectToPreviousCommand": "Önceki Komuta Kadar Seç", + "workbench.action.terminal.selectToNextCommand": "Sonraki Komuta Kadar Seç" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index ecea8c0b753..4ec7921beb2 100644 --- a/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -6,7 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "unsupportedWorkspaceSettings": "Bu çalışma alanı sadece Kullanıcı Ayarları'nda ayarlanabilen ayarlar içeriyor. ({0}). Daha fazla bilgi almak için [buraya]({0}) tıklayın.", "openWorkspaceSettings": "Çalışma Alanı Ayarlarını Aç", - "dontShowAgain": "Tekrar Gösterme", - "unsupportedWorkspaceSettings": "Bu çalışma alanı sadece Kullanıcı Ayarları'nda ayarlanabilen ayarlar içeriyor. ({0}). Daha fazla bilgi almak için [buraya]({0}) tıklayın." + "dontShowAgain": "Tekrar Gösterme" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json index c60ad91555b..f0af3fad62b 100644 --- a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -6,7 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "later": "Daha Sonra", "releaseNotes": "Sürüm Notları", "showReleaseNotes": "Sürüm Notlarını Göster", "read the release notes": "{0} v{1} uygulamasına hoş geldiniz! Sürüm Notları'nı okumak ister misiniz?", @@ -16,13 +15,12 @@ "updateIsReady": "Yeni {0} güncellemesi var.", "noUpdatesAvailable": "Şu anda mevcut herhangi bir güncelleme yok.", "ok": "Tamam", - "download now": "Şimdi İndir", "thereIsUpdateAvailable": "Bir güncelleştirme var.", + "download now": "Şimdi İndir", + "later": "Daha Sonra", "installUpdate": "Güncelleştirmeyi Yükle", - "updateAvailable": "Bir güncelleştirme var: {0} {1}", "updateInstalling": "{0} {1} arka planda yükleniyor, bittiğinde bilgi vereceğiz.", "updateNow": "Şimdi Güncelle", - "updateAvailableAfterRestart": "{0} yeniden başlatıldıktan sonra güncellenecektir.", "commandPalette": "Komut Paleti...", "settings": "Ayarlar", "keyboardShortcuts": "Klavye Kısayolları", diff --git a/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json index 4c6d2775a03..402fef291ee 100644 --- a/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webview.contribution.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "webview.editor.label": "web görünümü düzenleyicisi" + "webview.editor.label": "web görünümü düzenleyicisi", + "developer": "Geliştirici" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json new file mode 100644 index 00000000000..13712f3e4c5 --- /dev/null +++ b/i18n/trk/src/vs/workbench/parts/webview/electron-browser/webviewCommands.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "openToolsLabel": "Web Görünümü Geliştirici Araçlarını Aç", + "refreshWebviewLabel": "Web Görünümlerini Yeniden Yükle" +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json b/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json index 271702f6cc6..06a856662b9 100644 --- a/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/welcome/gettingStarted/electron-browser/telemetryOptOut.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "telemetryOptOut.optOutNotice": "Microsoft'un kullanım verilerini toplamasına izin vererek VS Code'u geliştirin. [Gizlilik beyanımızı]({0}) okuyun ve nasıl [vazgeçebileceğinizi]({1}) öğrenin.", + "telemetryOptOut.optInNotice": "Microsoft'un kullanım verilerini toplamasına izin vererek VS Code'u geliştirin. [Gizlilik beyanımızı]({0}) okuyun ve nasıl [etkinleştirebileceğinizi]({1}) öğrenin.", "telemetryOptOut.readMore": "Devamını oku" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json b/i18n/trk/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json index e8f3a223755..29463e7c351 100644 --- a/i18n/trk/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page.i18n.json @@ -27,8 +27,6 @@ "welcomePage.installExtensionPacks": "Araçlar ve diller", "welcomePage.installExtensionPacksDescription": "{0} ve {1} için destek yükle", "welcomePage.moreExtensions": "fazlası", - "welcomePage.installKeymapDescription": "Klavye kısayolları yükle", - "welcomePage.installKeymapExtension": "{0} ve {1} için klavye kısayolları yükle", "welcomePage.others": "diğerleri", "welcomePage.colorTheme": "Renk teması", "welcomePage.colorThemeDescription": "Düzenleyici ve kodlarınız sevdiğiniz şekilde görünsün", diff --git a/i18n/trk/src/vs/workbench/services/configuration/node/configurationService.i18n.json b/i18n/trk/src/vs/workbench/services/configuration/node/configurationService.i18n.json new file mode 100644 index 00000000000..67d3a3db217 --- /dev/null +++ b/i18n/trk/src/vs/workbench/services/configuration/node/configurationService.i18n.json @@ -0,0 +1,10 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "unsupportedWindowSetting": "Bu ayar şu an uygulanamıyor. Ayar, bu klasörü açtığınızda uygulanacaktır." +} \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json b/i18n/trk/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json index 9f88c4ae89e..4bd75567fec 100644 --- a/i18n/trk/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/extensions/electron-browser/extensionService.i18n.json @@ -8,7 +8,6 @@ ], "extensionHostProcess.crash": "Eklenti sunucusu beklenmeyen biçimde sonlandırıldı.", "extensionHostProcess.unresponsiveCrash": "Eklenti sunucusu yanıt vermediğinden sonlandırıldı.", - "devTools": "Geliştirici Araçları", "restart": "Eklenti Sunucusunu Yeniden Başlat", "overwritingExtension": "{0} eklentisinin üzerine {1} yazılıyor.", "extensionUnderDevelopment": "{0} konumundaki geliştirme eklentisi yükleniyor", diff --git a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 4d4a6d071a8..cb30de0b079 100644 --- a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -6,10 +6,23 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "netVersionError": "Microsoft .NET Framework 4.5 gerekli. Yüklemek için bağlantıyı izleyin.", "installNet": ".NET Framework 4.5'i İndir", "neverShowAgain": "Tekrar Gösterme", - "netVersionError": "Microsoft .NET Framework 4.5 gerekli. Yüklemek için bağlantıyı izleyin.", + "enospcError": "{0}, bu büyük çalışma alanındaki dosya değişikliklerini izleyemiyor. Bu sorunu çözmek için lütfen yönerge bağlantısını izleyin.", "learnMore": "Talimatlar", + "fileInvalidPath": "Geçersiz dosya kaynağı ({0})", + "fileIsDirectoryError": "Dosya bir dizindir", + "fileNotModifiedError": "Dosya şu tarihten beri değiştirilmemiş:", + "fileTooLargeError": "Dosya, açmak için çok büyük", + "fileNotFoundError": "Dosya bulunamadı ({0})", + "fileBinaryError": "Dosya ikili olarak görünüyor ve metin olarak açılamıyor", + "filePermission": "Dosya için yazma izni reddedildi ({0})", + "fileExists": "Oluşturulacak dosya zaten mevcut ({0})", + "fileModifiedError": "Dosya Şu Tarihten Beri Değiştiriliyor", + "fileReadOnlyError": "Dosya Salt Okunur", + "fileMoveConflict": "Taşıma/kopyalama yapılamadı. Dosya, hedefte zaten mevcut.", + "unableToMoveCopyError": "Taşıma/kopyalama yapılamadı. Dosya, içinde bulunduğu klasörü değiştiriyor.", "binFailed": "'{0}' geri dönüşüm kutusuna taşınamadı", "trashFailed": "'{0}' çöpe taşınamadı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json index 0233ec89011..7f8a2b8ad2c 100644 --- a/i18n/trk/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/electron-browser/remoteFileService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "fileNotFoundError": "Dosya bulunamadı ({0})", "fileIsDirectoryError": "Dosya bir dizindir", "fileNotModifiedError": "Dosya şu tarihten beri değiştirilmemiş:", "fileBinaryError": "Dosya ikili olarak görünüyor ve metin olarak açılamıyor" diff --git a/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json b/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json index 925be843a66..0de6a2517b4 100644 --- a/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json +++ b/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMGrammars.i18n.json @@ -10,6 +10,7 @@ "vscode.extension.contributes.grammars.language": "Bu söz diziminin ekleneceği dil tanımlayıcısı.", "vscode.extension.contributes.grammars.scopeName": "tmLanguage dosyası tarafından kullanılan Textmate kapsam adı.", "vscode.extension.contributes.grammars.path": "tmLanguage dosyasının yolu. Yol, eklenti klasörüne görecelidir ve genellikle './syntaxes/' ile başlar.", - "vscode.extension.contributes.grammars.embeddedLanguages": "Bu dil bilgisinin gömülü dilleri içermesi durumundaki bir dil kimliğinin kapsam adı haritası.", + "vscode.extension.contributes.grammars.embeddedLanguages": "Bu dil bilgisinin gömülü dilleri içermesi durumundaki bir dil id'sinin kapsam adı haritası.", + "vscode.extension.contributes.grammars.tokenTypes": "Kapsam adından anahtar türüne kadar olan bir harita.", "vscode.extension.contributes.grammars.injectTo": "Bu dil bilgisinin yerleştirileceği dil kapsam adları listesi." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json b/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json index ecc43c9f3f4..75eba1ee007 100644 --- a/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json +++ b/i18n/trk/src/vs/workbench/services/textMate/electron-browser/TMSyntax.i18n.json @@ -11,6 +11,7 @@ "invalid.path.0": "`contributes.{0}.path` ögesinde dize bekleniyor. Sağlanan değer: {1}", "invalid.injectTo": "`contributes.{0}.injectTo` ögesinde geçersiz değer. Dil kapsam adlarından oluşan bir dizi olmalıdır. Sağlanan değer: {1}", "invalid.embeddedLanguages": "`contributes.{0}.embeddedLanguages` ögesinde geçersiz değer. Kapsam adından dile kadar olan bir nesne haritası olmalıdır. Sağlanan değer: {1}", + "invalid.tokenTypes": "`contributes.{0}.tokenTypes` ögesinde geçersiz değer. Kapsam adından anahtar türüne kadar olan bir nesne haritası olmalıdır. Sağlanan değer: {1}", "invalid.path.1": "`contributes.{0}.path` ögesinin ({1}) eklentinin klasöründe ({2}) yer alması bekleniyor. Bu, eklentiyi taşınamaz yapabilir.", "no-tm-grammar": "Bu dil için kayıtlı bir TM Grameri yok." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/themes/common/fileIconThemeSchema.i18n.json b/i18n/trk/src/vs/workbench/services/themes/common/fileIconThemeSchema.i18n.json index df63c933295..7c19d60efde 100644 --- a/i18n/trk/src/vs/workbench/services/themes/common/fileIconThemeSchema.i18n.json +++ b/i18n/trk/src/vs/workbench/services/themes/common/fileIconThemeSchema.i18n.json @@ -8,7 +8,7 @@ ], "schema.folderExpanded": "Genişletilmiş klasörler için klasör simgesi. Genişletilmiş klasör simgesi isteğe bağlıdır. Ayarlanmazsa, klasör için tanımlanan simge gösterilir.", "schema.folder": "Daraltılmış klasörler için klasör simgesi; eğer folderExpanded ayarlanmamışsa, genişletilen klasörler için de kullanılır.", - "schema.file": "Varsayılan dosya simgesi, bir uzantı, dosya adı veya dil kimliği ile eşleşmeyen tüm dosyalar için gösterilir.", + "schema.file": "Varsayılan dosya simgesi, bir uzantı, dosya adı veya dil id'si ile eşleşmeyen tüm dosyalar için gösterilir.", "schema.folderNames": "Klasör adlarını simgelerle ilişkilendirir. Nesne anahtarı, herhangi bir yol parçası içermeyen klasör adıdır. Örüntüler veya joker karakterlere izin verilmez. Klasör adı eşleştirme büyük/küçük harfe duyarlı değildir.", "schema.folderName": "İlişkilendirilecek simge tanımı ID'si.", "schema.folderNamesExpanded": "Klasör adlarını genişletilmiş klasör simgeleriyle ilişkilendirir. Nesne anahtarı, herhangi bir yol parçası içermeyen klasör adıdır. Örüntüler veya joker karakterlere izin verilmez. Klasör adı eşleştirme büyük/küçük harfe duyarlı değildir.", @@ -17,7 +17,7 @@ "schema.fileExtension": "İlişkilendirilecek simge tanımı ID'si.", "schema.fileNames": "Dosya adlarını simgelerle ilişkilendirir. Nesne anahtarı, herhangi bir yol parçası içermeyen tam dosya adıdır. Dosya adı noktalar ve olası bir dosya uzantısı içerebilir. Örüntüler veya joker karakterlere izin verilmez. Dosya adı eşleştirme büyük/küçük harfe duyarlı değildir.", "schema.fileName": "İlişkilendirilecek simge tanımı ID'si.", - "schema.languageIds": "Dilleri simgelerle ilişkilendirir. Nesne anahtarı, dil ekleme noktasında tanımlanan dil kimliğidir.", + "schema.languageIds": "Dilleri simgelerle ilişkilendirir. Nesne anahtarı, dil ekleme noktasında tanımlanan dil id'sidir.", "schema.languageId": "İlişkilendirilecek simge tanımı ID'si.", "schema.fonts": "Simge tanımlarında kullanılacak yazı tipleri.", "schema.id": "Yazı tipinin ID'si.", @@ -33,7 +33,7 @@ "schema.fontCharacter": "Glif yazı tipi kullanırken: Kullanılacak yazı tipindeki karakter.", "schema.fontColor": "Glif yazı tipi kullanırken: Kullanılacak renk.", "schema.fontSize": "Yazı tipi kullanırken: Metin yazı tipi yüzdesine göre yazı tipi boyutu. Ayarlanmazsa, yazı tipi tanımındaki boyut kullanılır.", - "schema.fontId": "Yazı tipi kullanırken: Yazı tipinin kimliği. Ayarlanmazsa, ilk yazı tipi tanımı varsayılan olarak kullanılır.", + "schema.fontId": "Yazı tipi kullanırken: Yazı tipinin id'si. Ayarlanmazsa, ilk yazı tipi tanımı varsayılan olarak kullanılır.", "schema.light": "Açık renk temalarındaki dosya simgeleri için isteğe bağlı ilişkilendirmeler.", "schema.highContrast": "Yüksek karşıtlık renk temalarındaki dosya simgeleri için isteğe bağlı ilişkilendirmeler.", "schema.hidesExplorerArrows": "Bu tema aktif olduğunda dosya gezgini ok işaretlerinin gizli olup olmayacağını yapılandırır." From e866449e614334a04a1ead99387aeead016c3707 Mon Sep 17 00:00:00 2001 From: Matt Bierner <matb@microsoft.com> Date: Thu, 19 Apr 2018 17:38:08 -0700 Subject: [PATCH 1026/1070] Pick up TS 2.8.3 Fixes #48008 --- extensions/package.json | 2 +- extensions/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/package.json b/extensions/package.json index b0072fb9737..d3693f49712 100644 --- a/extensions/package.json +++ b/extensions/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "description": "Dependencies shared by all extensions", "dependencies": { - "typescript": "2.8.3-insiders.20180407" + "typescript": "2.8.3" }, "scripts": { "postinstall": "node ./postinstall" diff --git a/extensions/yarn.lock b/extensions/yarn.lock index 63143439fba..504d8abd96d 100644 --- a/extensions/yarn.lock +++ b/extensions/yarn.lock @@ -2,6 +2,6 @@ # yarn lockfile v1 -typescript@2.8.3-insiders.20180407: - version "2.8.3-insiders.20180407" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3-insiders.20180407.tgz#915f010e258e51c9539bcf986cfd84d0271d8cab" +typescript@2.8.3: + version "2.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" From dffaa5d295e4ba651dd0cba25dcad699ab0eb2f5 Mon Sep 17 00:00:00 2001 From: Matt Bierner <matb@microsoft.com> Date: Thu, 19 Apr 2018 18:50:23 -0700 Subject: [PATCH 1027/1070] Cancel ongoing provideSignatureHelp requests in some cases Part of #48237 Cancels on to call out to the extension host for `provideSignatureHelp` on: - provideSignatureHelp retriggered - curor changed using mouse - model changed - Language changes --- .../parameterHints/parameterHintsWidget.ts | 12 +- .../test/parameterHintsModel.test.ts | 103 ++++++++++++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts diff --git a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts index 0724631045a..2c874d77fd5 100644 --- a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts +++ b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts @@ -50,6 +50,7 @@ export class ParameterHintsModel extends Disposable { private triggerCharactersListeners: IDisposable[]; private active: boolean; private throttledDelayer: RunOnceScheduler; + private provideSignatureHelpRequest?: TPromise<boolean, any>; constructor(editor: ICodeEditor) { super(); @@ -80,6 +81,11 @@ export class ParameterHintsModel extends Disposable { if (!silent) { this._onCancel.fire(void 0); } + + if (this.provideSignatureHelpRequest) { + this.provideSignatureHelpRequest.cancel(); + this.provideSignatureHelpRequest = undefined; + } } trigger(delay = ParameterHintsModel.DELAY): void { @@ -92,7 +98,11 @@ export class ParameterHintsModel extends Disposable { } private doTrigger(): void { - provideSignatureHelp(this.editor.getModel(), this.editor.getPosition()) + if (this.provideSignatureHelpRequest) { + this.provideSignatureHelpRequest.cancel(); + } + + this.provideSignatureHelpRequest = provideSignatureHelp(this.editor.getModel(), this.editor.getPosition()) .then(null, onUnexpectedError) .then(result => { if (!result || !result.signatures || result.signatures.length === 0) { diff --git a/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts b/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts new file mode 100644 index 00000000000..4dce80655b2 --- /dev/null +++ b/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts @@ -0,0 +1,103 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as assert from 'assert'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import URI from 'vs/base/common/uri'; +import { Position } from 'vs/editor/common/core/position'; +import { ITextModel } from 'vs/editor/common/model'; +import { TextModel } from 'vs/editor/common/model/textModel'; +import { SignatureHelp, SignatureHelpProvider, SignatureHelpProviderRegistry } from 'vs/editor/common/modes'; +import { MockScopeLocation, TestCodeEditor } from 'vs/editor/test/browser/testCodeEditor'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; +import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; +import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; +import { IStorageService, NullStorageService } from 'vs/platform/storage/common/storage'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; +import { ParameterHintsModel } from '../parameterHintsWidget'; + +function createMockEditor(model: TextModel): TestCodeEditor { + const contextKeyService = new MockContextKeyService(); + const telemetryService = NullTelemetryService; + const notificationService = new TestNotificationService(); + const instantiationService = new InstantiationService(new ServiceCollection( + [IContextKeyService, contextKeyService], + [ITelemetryService, telemetryService], + [IStorageService, NullStorageService], + [INotificationService, TestNotificationService] + )); + + const editor = new TestCodeEditor(new MockScopeLocation(), {}, false, instantiationService, contextKeyService, notificationService); + editor.setModel(model); + return editor; +} + + +suite('ParameterHintsModel', () => { + let disposables: IDisposable[] = []; + + + setup(function () { + disposables = dispose(disposables); + }); + + test('Should cancel existing request when new request comes in', () => { + const textModel = TextModel.createFromString('abc def', undefined, undefined, URI.parse('test:somefile.ttt')); + disposables.push(textModel); + + const editor = createMockEditor(textModel); + const hintsModel = new ParameterHintsModel(editor); + + let didRequestCancellationOf = -1; + let invokeCount = 0; + const longRunningProvider = new class implements SignatureHelpProvider { + signatureHelpTriggerCharacters: string[] = []; + + provideSignatureHelp(model: ITextModel, position: Position, token: CancellationToken): SignatureHelp | Thenable<SignatureHelp> { + const count = invokeCount++; + token.onCancellationRequested(() => { didRequestCancellationOf = count; }); + + // retrigger on first request + if (count === 0) { + hintsModel.trigger(0); + } + + return new Promise<SignatureHelp>(resolve => { + setTimeout(() => { + resolve({ + signatures: [{ + label: '' + count, + parameters: [] + }], + activeParameter: 0, + activeSignature: 0 + }); + }, 100); + }); + } + }; + + disposables.push(SignatureHelpProviderRegistry.register({ scheme: 'test' }, longRunningProvider)); + + hintsModel.trigger(0); + assert.strictEqual(-1, didRequestCancellationOf); + + return new Promise((resolve, reject) => + hintsModel.onHint(e => { + try { + assert.strictEqual(0, didRequestCancellationOf); + assert.strictEqual('1', e.hints.signatures[0].label); + resolve(); + } catch (e) { + reject(e); + } + })); + }); +}); From c1cd4378c5e5dc434ed959e13556d05240a8ca18 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao <ramyar@microsoft.com> Date: Thu, 19 Apr 2018 20:40:52 -0700 Subject: [PATCH 1028/1070] Upstream bug fixes --- extensions/emmet/package.json | 2 +- extensions/emmet/yarn.lock | 6 +++--- extensions/html-language-features/server/package.json | 2 +- extensions/html-language-features/server/yarn.lock | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index 42c78cfd9e4..024c94d10da 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -444,7 +444,7 @@ "@emmetio/html-matcher": "^0.3.3", "@emmetio/css-parser": "ramya-rao-a/css-parser#vscode", "@emmetio/math-expression": "^0.1.1", - "vscode-emmet-helper": "^1.2.5", + "vscode-emmet-helper": "^1.2.6", "vscode-languageserver-types": "^3.5.0", "image-size": "^0.5.2", "vscode-nls": "3.2.1" diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock index be7aedf9516..90db3c63673 100644 --- a/extensions/emmet/yarn.lock +++ b/extensions/emmet/yarn.lock @@ -2052,9 +2052,9 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vscode-emmet-helper@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.5.tgz#0931543db742a03f9ae65db3d66588643cdbe010" +vscode-emmet-helper@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.6.tgz#6cc7293765af7136d409d0d62ef17c66e8b9cf45" dependencies: "@emmetio/extract-abbreviation" "0.1.6" jsonc-parser "^1.0.0" diff --git a/extensions/html-language-features/server/package.json b/extensions/html-language-features/server/package.json index 1ee90e635c3..395b66b65b5 100644 --- a/extensions/html-language-features/server/package.json +++ b/extensions/html-language-features/server/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "vscode-css-languageservice": "^3.0.9-next.7", - "vscode-emmet-helper": "1.2.5", + "vscode-emmet-helper": "1.2.6", "vscode-html-languageservice": "^2.1.3-next.2", "vscode-languageserver": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", diff --git a/extensions/html-language-features/server/yarn.lock b/extensions/html-language-features/server/yarn.lock index 627e66f8462..8e5e816b1f5 100644 --- a/extensions/html-language-features/server/yarn.lock +++ b/extensions/html-language-features/server/yarn.lock @@ -25,9 +25,9 @@ vscode-css-languageservice@^3.0.9-next.7: vscode-languageserver-types "^3.6.1" vscode-nls "^3.2.1" -vscode-emmet-helper@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.5.tgz#0931543db742a03f9ae65db3d66588643cdbe010" +vscode-emmet-helper@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.6.tgz#6cc7293765af7136d409d0d62ef17c66e8b9cf45" dependencies: "@emmetio/extract-abbreviation" "0.1.6" jsonc-parser "^1.0.0" From 45b1679035e347a376c0af35849f21d74d6ca027 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Thu, 19 Apr 2018 18:31:38 +0200 Subject: [PATCH 1029/1070] rename FileError to FileSystemError, #47475 --- src/vs/vscode.proposed.d.ts | 10 +++++----- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHostTypes.ts | 18 +++++++++--------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 17164135bf9..3420fc070a6 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -101,12 +101,12 @@ declare module 'vscode' { /** * */ - export class FileError extends Error { + export class FileSystemError extends Error { - static EntryExists(message?: string): FileError; - static EntryNotFound(message?: string): FileError; - static EntryNotADirectory(message?: string): FileError; - static EntryIsADirectory(message?: string): FileError; + static EntryExists(message?: string): FileSystemError; + static EntryNotFound(message?: string): FileSystemError; + static EntryNotADirectory(message?: string): FileSystemError; + static EntryIsADirectory(message?: string): FileSystemError; constructor(message?: string); } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 33fb8a807b9..0d4cec6a261 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -692,7 +692,7 @@ export function createApiFactory( FileChangeType2: extHostTypes.FileChangeType2, FileType2: extHostTypes.FileType2, FileOpenFlags: files.FileOpenFlags, - FileError: extHostTypes.FileError, + FileSystemError: extHostTypes.FileSystemError, FoldingRange: extHostTypes.FoldingRange, FoldingRangeKind: extHostTypes.FoldingRangeKind }; diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index ae88f3ded82..313a5aa5a36 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1838,19 +1838,19 @@ export enum FileType2 { SymbolicLink = 4, } -export class FileError extends Error { +export class FileSystemError extends Error { - static EntryExists(message?: string): FileError { - return new FileError(message, 'EntryExists', FileError.EntryExists); + static EntryExists(message?: string): FileSystemError { + return new FileSystemError(message, 'EntryExists', FileSystemError.EntryExists); } - static EntryNotFound(message?: string): FileError { - return new FileError(message, 'EntryNotFound', FileError.EntryNotFound); + static EntryNotFound(message?: string): FileSystemError { + return new FileSystemError(message, 'EntryNotFound', FileSystemError.EntryNotFound); } - static EntryNotADirectory(message?: string): FileError { - return new FileError(message, 'EntryNotADirectory', FileError.EntryNotADirectory); + static EntryNotADirectory(message?: string): FileSystemError { + return new FileSystemError(message, 'EntryNotADirectory', FileSystemError.EntryNotADirectory); } - static EntryIsADirectory(message?: string): FileError { - return new FileError(message, 'EntryIsADirectory', FileError.EntryIsADirectory); + static EntryIsADirectory(message?: string): FileSystemError { + return new FileSystemError(message, 'EntryIsADirectory', FileSystemError.EntryIsADirectory); } constructor(message?: string, code?: string, hide?: Function) { From b0ede6c91bd6786c8589f062310a2dec9222fa48 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 09:45:41 +0200 Subject: [PATCH 1030/1070] allow file system providers to express that they are case-sensitive --- src/vs/platform/files/common/files.ts | 8 +++++--- src/vs/vscode.proposed.d.ts | 5 +++-- src/vs/workbench/api/node/extHost.api.impl.ts | 3 +++ src/vs/workbench/api/node/extHostFileSystem.ts | 15 +++++++++------ 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 57e66accfa5..1841a20af7e 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -175,9 +175,11 @@ export interface IWatchOptions { } export enum FileSystemProviderCapabilities { - FileReadWrite = 0b1, - FileOpenReadWriteClose = 0b10, - FileFolderCopy = 0b100 + FileReadWrite = 1 << 1, + FileOpenReadWriteClose = 1 << 2, + FileFolderCopy = 1 << 3, + + PathCaseSensitive = 1 << 10 } export interface IFileSystemProvider { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 3420fc070a6..e38fba7ff9a 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -92,6 +92,7 @@ declare module 'vscode' { export namespace workspace { export function registerDeprecatedFileSystemProvider(scheme: string, provider: DeprecatedFileSystemProvider): Disposable; + export function registerFileSystemProvider(scheme: string, provider: FileSystemProvider, newProvider?: FileSystemProvider2): Disposable; } //#endregion @@ -146,7 +147,7 @@ declare module 'vscode' { */ export interface FileSystemProvider2 { - _version: 8; + _version: 9; /** * An event to signal that a resource has been created, changed, or deleted. This @@ -237,7 +238,7 @@ declare module 'vscode' { } export namespace workspace { - export function registerFileSystemProvider(scheme: string, provider: FileSystemProvider, newProvider?: FileSystemProvider2): Disposable; + export function registerFileSystemProvider2(scheme: string, provider: FileSystemProvider2, options: { isCaseSensitive?: boolean }): Disposable; } //#endregion diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 0d4cec6a261..30019fca14a 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -546,6 +546,9 @@ export function createApiFactory( registerFileSystemProvider: proposedApiFunction(extension, (scheme, provider, newProvider?) => { return extHostFileSystem.registerFileSystemProvider(scheme, provider, newProvider); }), + registerFileSystemProvider2: proposedApiFunction(extension, (scheme, provider, options) => { + return extHostFileSystem.registerFileSystemProvider2(scheme, provider, options); + }), registerDeprecatedFileSystemProvider: proposedApiFunction(extension, (scheme, provider) => { return extHostFileSystem.registerDeprecatedFileSystemProvider(scheme, provider); }), diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 18b53fc9687..282c72ba611 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -59,7 +59,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 8 = 8; + _version: 9 = 9; onDidChangeFile: vscode.Event<vscode.FileChange2[]>; @@ -185,20 +185,20 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerDeprecatedFileSystemProvider(scheme: string, provider: vscode.DeprecatedFileSystemProvider) { - return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); + return this.registerFileSystemProvider2(scheme, new FileSystemProviderShim(provider), { isCaseSensitive: false }); } registerFileSystemProvider(scheme: string, provider: vscode.DeprecatedFileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 8) { - return this._doRegisterFileSystemProvider(scheme, newProvider); + if (newProvider && newProvider._version === 9) { + return this.registerFileSystemProvider2(scheme, newProvider, { isCaseSensitive: false }); } else if (provider) { - return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); + return this.registerFileSystemProvider2(scheme, new FileSystemProviderShim(provider), { isCaseSensitive: false }); } else { throw new Error('FAILED to register file system provider, the new provider does not meet the version-constraint and there is no old provider'); } } - private _doRegisterFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider2) { + registerFileSystemProvider2(scheme: string, provider: vscode.FileSystemProvider2, options: { isCaseSensitive?: boolean }) { if (this._usedSchemes.has(scheme)) { throw new Error(`a provider for the scheme '${scheme}' is already registered`); @@ -210,6 +210,9 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { this._fsProvider.set(handle, provider); let capabilites = files.FileSystemProviderCapabilities.FileReadWrite; + if (options.isCaseSensitive) { + capabilites += files.FileSystemProviderCapabilities.PathCaseSensitive; + } if (typeof provider.copy === 'function') { capabilites += files.FileSystemProviderCapabilities.FileFolderCopy; } From 9f752b989e9a4b13ff5e1eccbbeea21b5c4f26c9 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 10:28:49 +0200 Subject: [PATCH 1031/1070] make ResourceMap always strict, #48258 --- src/vs/base/common/map.ts | 16 +++----- src/vs/base/test/common/map.test.ts | 38 +++++++++---------- .../configuration/common/configuration.ts | 4 +- .../common/configurationModels.ts | 14 +++---- .../api/node/extHostConfiguration.ts | 10 ++--- .../common/configurationModels.ts | 14 +++---- .../node/configurationService.ts | 10 ++--- .../test/common/configurationModels.test.ts | 6 +-- 8 files changed, 53 insertions(+), 59 deletions(-) diff --git a/src/vs/base/common/map.ts b/src/vs/base/common/map.ts index edd2f16345e..55e4fa20e9a 100644 --- a/src/vs/base/common/map.ts +++ b/src/vs/base/common/map.ts @@ -368,10 +368,12 @@ export class TernarySearchTree<E> { export class ResourceMap<T> { - protected map: Map<string, T>; + protected readonly map: Map<string, T>; + protected readonly ignoreCase?: boolean; - constructor(private ignoreCase?: boolean) { + constructor() { this.map = new Map<string, T>(); + this.ignoreCase = false; // in the future this should be an uri-comparator } public set(resource: URI, value: T): void { @@ -414,18 +416,10 @@ export class ResourceMap<T> { return key; } -} - -export class StrictResourceMap<T> extends ResourceMap<T> { - - constructor() { - super(); - } public keys(): URI[] { - return keys(this.map).map(key => URI.parse(key)); + return keys(this.map).map(URI.parse); } - } // We should fold BoundedMap and LinkedMap. See https://github.com/Microsoft/vscode/issues/28496 diff --git a/src/vs/base/test/common/map.test.ts b/src/vs/base/test/common/map.test.ts index 2d04f0174c8..33924f78f72 100644 --- a/src/vs/base/test/common/map.test.ts +++ b/src/vs/base/test/common/map.test.ts @@ -544,32 +544,32 @@ suite('Map', () => { assert.equal(map.get(uncFile), 'true'); }); - test('ResourceMap - files (ignorecase)', function () { - const map = new ResourceMap<any>(true); + // test('ResourceMap - files (ignorecase)', function () { + // const map = new ResourceMap<any>(true); - const fileA = URI.parse('file://some/filea'); - const fileB = URI.parse('some://some/other/fileb'); - const fileAUpper = URI.parse('file://SOME/FILEA'); + // const fileA = URI.parse('file://some/filea'); + // const fileB = URI.parse('some://some/other/fileb'); + // const fileAUpper = URI.parse('file://SOME/FILEA'); - map.set(fileA, 'true'); - assert.equal(map.get(fileA), 'true'); + // map.set(fileA, 'true'); + // assert.equal(map.get(fileA), 'true'); - assert.equal(map.get(fileAUpper), 'true'); + // assert.equal(map.get(fileAUpper), 'true'); - assert.ok(!map.get(fileB)); + // assert.ok(!map.get(fileB)); - map.set(fileAUpper, 'false'); - assert.equal(map.get(fileAUpper), 'false'); + // map.set(fileAUpper, 'false'); + // assert.equal(map.get(fileAUpper), 'false'); - assert.equal(map.get(fileA), 'false'); + // assert.equal(map.get(fileA), 'false'); - const windowsFile = URI.file('c:\\test with %25\\c#code'); - const uncFile = URI.file('\\\\shäres\\path\\c#\\plugin.json'); + // const windowsFile = URI.file('c:\\test with %25\\c#code'); + // const uncFile = URI.file('\\\\shäres\\path\\c#\\plugin.json'); - map.set(windowsFile, 'true'); - map.set(uncFile, 'true'); + // map.set(windowsFile, 'true'); + // map.set(uncFile, 'true'); - assert.equal(map.get(windowsFile), 'true'); - assert.equal(map.get(uncFile), 'true'); - }); + // assert.equal(map.get(windowsFile), 'true'); + // assert.equal(map.get(uncFile), 'true'); + // }); }); diff --git a/src/vs/platform/configuration/common/configuration.ts b/src/vs/platform/configuration/common/configuration.ts index 4f6407e4b39..6aa47675ddb 100644 --- a/src/vs/platform/configuration/common/configuration.ts +++ b/src/vs/platform/configuration/common/configuration.ts @@ -12,7 +12,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationRegistry, Extensions, OVERRIDE_PROPERTY_PATTERN } from 'vs/platform/configuration/common/configurationRegistry'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; export const IConfigurationService = createDecorator<IConfigurationService>('configurationService'); @@ -47,7 +47,7 @@ export interface IConfigurationChangeEvent { // Following data is used for Extension host configuration event changedConfiguration: IConfigurationModel; - changedConfigurationByResource: StrictResourceMap<IConfigurationModel>; + changedConfigurationByResource: ResourceMap<IConfigurationModel>; } export interface IConfigurationService { diff --git a/src/vs/platform/configuration/common/configurationModels.ts b/src/vs/platform/configuration/common/configurationModels.ts index 9d8249577a3..9944e02325f 100644 --- a/src/vs/platform/configuration/common/configurationModels.ts +++ b/src/vs/platform/configuration/common/configurationModels.ts @@ -5,7 +5,7 @@ 'use strict'; import * as json from 'vs/base/common/json'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; import * as arrays from 'vs/base/common/arrays'; import * as types from 'vs/base/common/types'; import * as objects from 'vs/base/common/objects'; @@ -278,15 +278,15 @@ export class ConfigurationModelParser { export class Configuration { private _workspaceConsolidatedConfiguration: ConfigurationModel = null; - private _foldersConsolidatedConfigurations: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(); + private _foldersConsolidatedConfigurations: ResourceMap<ConfigurationModel> = new ResourceMap<ConfigurationModel>(); constructor( private _defaultConfiguration: ConfigurationModel, private _userConfiguration: ConfigurationModel, private _workspaceConfiguration: ConfigurationModel = new ConfigurationModel(), - private _folderConfigurations: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(), + private _folderConfigurations: ResourceMap<ConfigurationModel> = new ResourceMap<ConfigurationModel>(), private _memoryConfiguration: ConfigurationModel = new ConfigurationModel(), - private _memoryConfigurationByResource: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(), + private _memoryConfigurationByResource: ResourceMap<ConfigurationModel> = new ResourceMap<ConfigurationModel>(), private _freeze: boolean = true) { } @@ -394,7 +394,7 @@ export class Configuration { return this._workspaceConfiguration; } - protected get folders(): StrictResourceMap<ConfigurationModel> { + protected get folders(): ResourceMap<ConfigurationModel> { return this._folderConfigurations; } @@ -534,7 +534,7 @@ export class ConfigurationChangeEvent extends AbstractConfigurationChangeEvent i constructor( private _changedConfiguration: ConfigurationModel = new ConfigurationModel(), - private _changedConfigurationByResource: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>()) { + private _changedConfigurationByResource: ResourceMap<ConfigurationModel> = new ResourceMap<ConfigurationModel>()) { super(); } @@ -542,7 +542,7 @@ export class ConfigurationChangeEvent extends AbstractConfigurationChangeEvent i return this._changedConfiguration; } - get changedConfigurationByResource(): StrictResourceMap<IConfigurationModel> { + get changedConfigurationByResource(): ResourceMap<IConfigurationModel> { return this._changedConfigurationByResource; } diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index 0b4830a4c8a..aa831b81768 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -14,7 +14,7 @@ import { ConfigurationTarget as ExtHostConfigurationTarget } from './extHostType import { IConfigurationData, ConfigurationTarget, IConfigurationModel } from 'vs/platform/configuration/common/configuration'; import { Configuration, ConfigurationChangeEvent, ConfigurationModel } from 'vs/platform/configuration/common/configurationModels'; import { WorkspaceConfigurationChangeEvent } from 'vs/workbench/services/configuration/common/configurationModels'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { isObject } from 'vs/base/common/types'; @@ -209,7 +209,7 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { private _toConfigurationChangeEvent(data: IWorkspaceConfigurationChangeEventData): vscode.ConfigurationChangeEvent { const changedConfiguration = new ConfigurationModel(data.changedConfiguration.contents, data.changedConfiguration.keys, data.changedConfiguration.overrides); - const changedConfigurationByResource: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(); + const changedConfigurationByResource: ResourceMap<ConfigurationModel> = new ResourceMap<ConfigurationModel>(); for (const key of Object.keys(data.changedConfigurationByResource)) { const resource = URI.parse(key); const model = data.changedConfigurationByResource[key]; @@ -225,11 +225,11 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { const defaultConfiguration = ExtHostConfiguration.parseConfigurationModel(data.defaults); const userConfiguration = ExtHostConfiguration.parseConfigurationModel(data.user); const workspaceConfiguration = ExtHostConfiguration.parseConfigurationModel(data.workspace); - const folders: StrictResourceMap<ConfigurationModel> = Object.keys(data.folders).reduce((result, key) => { + const folders: ResourceMap<ConfigurationModel> = Object.keys(data.folders).reduce((result, key) => { result.set(URI.parse(key), ExtHostConfiguration.parseConfigurationModel(data.folders[key])); return result; - }, new StrictResourceMap<ConfigurationModel>()); - return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap<ConfigurationModel>(), false); + }, new ResourceMap<ConfigurationModel>()); + return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new ResourceMap<ConfigurationModel>(), false); } private static parseConfigurationModel(model: IConfigurationModel): ConfigurationModel { diff --git a/src/vs/workbench/services/configuration/common/configurationModels.ts b/src/vs/workbench/services/configuration/common/configurationModels.ts index d97bda0330e..90def0b9e15 100644 --- a/src/vs/workbench/services/configuration/common/configurationModels.ts +++ b/src/vs/workbench/services/configuration/common/configurationModels.ts @@ -11,7 +11,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IConfigurationRegistry, IConfigurationPropertySchema, Extensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { IStoredWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces'; import { Workspace } from 'vs/platform/workspace/common/workspace'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; import URI from 'vs/base/common/uri'; export class WorkspaceConfigurationModelParser extends ConfigurationModelParser { @@ -125,9 +125,9 @@ export class Configuration extends BaseConfiguration { defaults: ConfigurationModel, user: ConfigurationModel, workspaceConfiguration: ConfigurationModel, - folders: StrictResourceMap<ConfigurationModel>, + folders: ResourceMap<ConfigurationModel>, memoryConfiguration: ConfigurationModel, - memoryConfigurationByResource: StrictResourceMap<ConfigurationModel>, + memoryConfigurationByResource: ResourceMap<ConfigurationModel>, private readonly _workspace: Workspace) { super(defaults, user, workspaceConfiguration, folders, memoryConfiguration, memoryConfigurationByResource); } @@ -235,8 +235,8 @@ export class AllKeysConfigurationChangeEvent extends AbstractConfigurationChange return this._changedConfiguration; } - get changedConfigurationByResource(): StrictResourceMap<IConfigurationModel> { - return new StrictResourceMap(); + get changedConfigurationByResource(): ResourceMap<IConfigurationModel> { + return new ResourceMap(); } get affectedKeys(): string[] { @@ -256,7 +256,7 @@ export class WorkspaceConfigurationChangeEvent implements IConfigurationChangeEv return this.configurationChangeEvent.changedConfiguration; } - get changedConfigurationByResource(): StrictResourceMap<IConfigurationModel> { + get changedConfigurationByResource(): ResourceMap<IConfigurationModel> { return this.configurationChangeEvent.changedConfigurationByResource; } @@ -286,4 +286,4 @@ export class WorkspaceConfigurationChangeEvent implements IConfigurationChangeEv return false; } -} \ No newline at end of file +} diff --git a/src/vs/workbench/services/configuration/node/configurationService.ts b/src/vs/workbench/services/configuration/node/configurationService.ts index 9bb5735fd44..99e62f15189 100644 --- a/src/vs/workbench/services/configuration/node/configurationService.ts +++ b/src/vs/workbench/services/configuration/node/configurationService.ts @@ -9,7 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { dirname, basename } from 'path'; import * as assert from 'vs/base/common/assert'; import { Event, Emitter } from 'vs/base/common/event'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; import { equals, deepClone } from 'vs/base/common/objects'; import { Disposable } from 'vs/base/common/lifecycle'; import { Queue } from 'vs/base/common/async'; @@ -51,7 +51,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat private defaultConfiguration: DefaultConfigurationModel; private userConfiguration: UserConfiguration; private workspaceConfiguration: WorkspaceConfiguration; - private cachedFolderConfigs: StrictResourceMap<FolderConfiguration>; + private cachedFolderConfigs: ResourceMap<FolderConfiguration>; private workspaceEditingQueue: Queue<void>; @@ -453,18 +453,18 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat private loadConfiguration(): TPromise<void> { // reset caches - this.cachedFolderConfigs = new StrictResourceMap<FolderConfiguration>(); + this.cachedFolderConfigs = new ResourceMap<FolderConfiguration>(); const folders = this.workspace.folders; return this.loadFolderConfigurations(folders) .then((folderConfigurations) => { let workspaceConfiguration = this.getWorkspaceConfigurationModel(folderConfigurations); - const folderConfigurationModels = new StrictResourceMap<ConfigurationModel>(); + const folderConfigurationModels = new ResourceMap<ConfigurationModel>(); folderConfigurations.forEach((folderConfiguration, index) => folderConfigurationModels.set(folders[index].uri, folderConfiguration)); const currentConfiguration = this._configuration; - this._configuration = new Configuration(this.defaultConfiguration, this.userConfiguration.configurationModel, workspaceConfiguration, folderConfigurationModels, new ConfigurationModel(), new StrictResourceMap<ConfigurationModel>(), this.getWorkbenchState() !== WorkbenchState.EMPTY ? this.workspace : null); //TODO: Sandy Avoid passing null + this._configuration = new Configuration(this.defaultConfiguration, this.userConfiguration.configurationModel, workspaceConfiguration, folderConfigurationModels, new ConfigurationModel(), new ResourceMap<ConfigurationModel>(), this.getWorkbenchState() !== WorkbenchState.EMPTY ? this.workspace : null); //TODO: Sandy Avoid passing null if (currentConfiguration) { const changedKeys = this._configuration.compare(currentConfiguration); diff --git a/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts b/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts index 91b9b6d8529..2a397b9df49 100644 --- a/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts +++ b/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts @@ -13,7 +13,7 @@ import URI from 'vs/base/common/uri'; import { ConfigurationChangeEvent, ConfigurationModel } from 'vs/platform/configuration/common/configurationModels'; import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; -import { StrictResourceMap } from 'vs/base/common/map'; +import { ResourceMap } from 'vs/base/common/map'; suite('FolderSettingsModelParser', () => { @@ -194,7 +194,7 @@ suite('AllKeysConfigurationChangeEvent', () => { test('changeEvent affects keys for any resource', () => { const configuraiton = new Configuration(new ConfigurationModel({}, ['window.title', 'window.zoomLevel', 'window.restoreFullscreen', 'workbench.editor.enablePreview', 'window.restoreWindows']), - new ConfigurationModel(), new ConfigurationModel(), new StrictResourceMap(), new ConfigurationModel(), new StrictResourceMap(), null); + new ConfigurationModel(), new ConfigurationModel(), new ResourceMap(), new ConfigurationModel(), new ResourceMap(), null); let testObject = new AllKeysConfigurationChangeEvent(configuraiton, ConfigurationTarget.USER, null); assert.deepEqual(testObject.affectedKeys, ['window.title', 'window.zoomLevel', 'window.restoreFullscreen', 'workbench.editor.enablePreview', 'window.restoreWindows']); @@ -234,4 +234,4 @@ suite('AllKeysConfigurationChangeEvent', () => { assert.ok(!testObject.affectsConfiguration('files')); assert.ok(!testObject.affectsConfiguration('files', URI.file('file1'))); }); -}); \ No newline at end of file +}); From bffdc6a15d0b592048e1346ac366bc99f36ad40a Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 10:39:44 +0200 Subject: [PATCH 1032/1070] a bit of error polish, #47475 --- src/vs/workbench/api/node/extHostTypes.ts | 2 +- .../services/files/electron-browser/remoteFileService.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index 313a5aa5a36..fd4a26b9784 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1855,7 +1855,7 @@ export class FileSystemError extends Error { constructor(message?: string, code?: string, hide?: Function) { super(message); - this.name = code ? `FileError/${code}` : `FileError`; + this.name = code ? `${code} (FileSystemError)` : `FileSystemError`; if (typeof Error.captureStackTrace === 'function' && typeof hide === 'function') { // nice stack traces diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 254c3c9d18f..90661a63377 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -204,7 +204,7 @@ export class RemoteFileService extends FileService { if (!(err instanceof Error)) { return undefined; } - let match = /FileError\/(.+)$/.exec(err.name); + let match = /^(.+) \(FileSystemError\)$/.exec(err.name); if (!match) { return undefined; } @@ -219,7 +219,7 @@ export class RemoteFileService extends FileService { case 'EntryExists': case 'EntryNotADirectory': default: - // todo + // todo res = undefined; break; } From ebeeea79980bb35d40b403d473a0f6b15fa2ec13 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Fri, 20 Apr 2018 11:07:49 +0200 Subject: [PATCH 1033/1070] explorer: FileViewletState use an object map since ExplorerItem objects do not change and resources have a bad difference between rename and new child fixes #47474 --- .../files/electron-browser/views/explorerViewer.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 7fc664f81c4..1a418a43fc5 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -24,7 +24,6 @@ import { IDisposable, dispose, empty as EmptyDisposable } from 'vs/base/common/l import { IFilesConfiguration, SortOrder } from 'vs/workbench/parts/files/common/files'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { FileOperationError, FileOperationResult, IFileService, FileKind } from 'vs/platform/files/common/files'; -import { ResourceMap } from 'vs/base/common/map'; import { DuplicateFileAction, AddFilesAction, IEditableData, IFileViewletState, FileCopiedContext } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { IDataSource, ITree, IAccessibilityProvider, IRenderer, ContextMenuEvent, ISorter, IFilter, IDragAndDropData, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_ACCEPT_BUBBLE_DOWN_COPY, DRAG_OVER_ACCEPT_BUBBLE_UP, DRAG_OVER_ACCEPT_BUBBLE_UP_COPY, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree'; import { DesktopDragAndDropData, ExternalElementsDragAndDropData } from 'vs/base/parts/tree/browser/treeDnd'; @@ -147,24 +146,24 @@ export class FileDataSource implements IDataSource { } export class FileViewletState implements IFileViewletState { - private editableStats: ResourceMap<IEditableData>; + private editableStats: Map<ExplorerItem, IEditableData>; constructor() { - this.editableStats = new ResourceMap<IEditableData>(); + this.editableStats = new Map<ExplorerItem, IEditableData>(); } public getEditableData(stat: ExplorerItem): IEditableData { - return this.editableStats.get(stat.resource); + return this.editableStats.get(stat); } public setEditable(stat: ExplorerItem, editableData: IEditableData): void { if (editableData) { - this.editableStats.set(stat.resource, editableData); + this.editableStats.set(stat, editableData); } } public clearEditable(stat: ExplorerItem): void { - this.editableStats.delete(stat.resource); + this.editableStats.delete(stat); } } From 3c6836816b02797471f56ffff555773c1494552f Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 11:07:12 +0200 Subject: [PATCH 1034/1070] fix #48138 --- src/vs/platform/environment/node/argv.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index d4ffb88f8f9..7f14ec4ce06 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -154,7 +154,7 @@ const extensionsHelp: { [name: string]: string; } = { '--show-versions': localize('showVersions', "Show versions of installed extensions, when using --list-extension."), '--install-extension (<extension-id> | <extension-vsix-path>)': localize('installExtension', "Installs an extension."), '--uninstall-extension (<extension-id> | <extension-vsix-path>)': localize('uninstallExtension', "Uninstalls an extension."), - '--enable-proposed-api <extension-id>': localize('experimentalApis', "Enables proposed api features for an extension.") + '--enable-proposed-api <extension-id>': localize('experimentalApis', "Enables proposed API features for an extension.") }; const troubleshootingHelp: { [name: string]: string; } = { From 799bd3b6824d8261c9273068cf853f810ab6af96 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 11:08:21 +0200 Subject: [PATCH 1035/1070] fix #48210 --- src/vs/editor/common/config/commonEditorConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 2ae72c0dd17..62ebc3a17d9 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -573,7 +573,7 @@ const editorConfiguration: IConfigurationNode = { 'editor.codeLens': { 'type': 'boolean', 'default': EDITOR_DEFAULTS.contribInfo.codeLens, - 'description': nls.localize('codeLens', "Controls if the editor shows code lenses") + 'description': nls.localize('codeLens', "Controls if the editor shows CodeLens") }, 'editor.folding': { 'type': 'boolean', From fecd1ec677604f034db0f1847cc4815b1e0a8a84 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Fri, 20 Apr 2018 11:26:37 +0200 Subject: [PATCH 1036/1070] Migrate pinned states fix. Do not add new composistes if it is old data. --- .../workbench/browser/parts/compositebar/compositeBar.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 19b667d8ceb..ac68fe3ff8e 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -527,12 +527,15 @@ export class CompositeBar implements ICompositeBar { private loadCompositesStates(): CompositeState[] { const storedStates = <Array<string | CompositeState>>JSON.parse(this.storageService.get(this.options.storageId, StorageScope.GLOBAL, '[]')); + const isOldData = storedStates && storedStates.length && typeof storedStates[0] === 'string'; const compositeStates = <CompositeState[]>storedStates.map(c => typeof c === 'string' /* migration from pinned states to composites states */ ? { id: c, pinned: true } : c); - const newComposites = this.options.composites.filter(c => compositeStates.every(s => s.id !== c.id)); - newComposites.sort((c1, c2) => c1.order < c2.order ? -1 : 1); - newComposites.forEach(c => compositeStates.push({ id: c.id, pinned: true /* new composites are pinned by default */ })); + if (!isOldData) { /* Add new composites only if it is new data */ + const newComposites = this.options.composites.filter(c => compositeStates.every(s => s.id !== c.id)); + newComposites.sort((c1, c2) => c1.order < c2.order ? -1 : 1); + newComposites.forEach(c => compositeStates.push({ id: c.id, pinned: true /* new composites are pinned by default */ })); + } return compositeStates; } From 54322a1ea1981f5c0c1afdb8b4f15daaa4291e1c Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Fri, 20 Apr 2018 11:40:28 +0200 Subject: [PATCH 1037/1070] Fix #47180 --- .../node/extensionsWorkbenchService.ts | 125 +++++------------- 1 file changed, 30 insertions(+), 95 deletions(-) diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index cabf01e5411..89fc28f9bf0 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -323,36 +323,14 @@ class ExtensionDependencies implements IExtensionDependencies { } } -enum Operation { - Installing, - Updating, - Uninstalling -} - -interface IActiveExtension { - operation: Operation; - extension: Extension; - start: Date; -} - -function toTelemetryEventName(operation: Operation) { - switch (operation) { - case Operation.Installing: return 'extensionGallery:install'; - case Operation.Updating: return 'extensionGallery:update'; - case Operation.Uninstalling: return 'extensionGallery:uninstall'; - } - - return ''; -} - export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, IURLHandler { private static readonly SyncPeriod = 1000 * 60 * 60 * 12; // 12 hours _serviceBrand: any; private stateProvider: IExtensionStateProvider<ExtensionState>; - private installing: IActiveExtension[] = []; - private uninstalling: IActiveExtension[] = []; + private installing: Extension[] = []; + private uninstalling: Extension[] = []; private installed: Extension[] = []; private syncDelayer: ThrottledDelayer<void>; private autoUpdateDelayer: ThrottledDelayer<void>; @@ -405,8 +383,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, get local(): IExtension[] { const installing = this.installing - .filter(e => !this.installed.some(installed => installed.id === e.extension.id)) - .map(e => e.extension); + .filter(e => !this.installed.some(installed => installed.id === e.id)) + .map(e => e); return [...this.installed, ...installing]; } @@ -810,35 +788,22 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, extension.gallery = gallery; - const start = new Date(); - const operation = Operation.Installing; - this.installing.push({ operation, extension, start }); + this.installing.push(extension); this._onChange.fire(); } private onDidInstallExtension(event: DidInstallExtensionEvent): void { const { local, zipPath, error, gallery } = event; - const installingExtension = gallery ? this.installing.filter(e => areSameExtensions(e.extension, gallery.identifier))[0] : null; - const extension: Extension = installingExtension ? installingExtension.extension : zipPath ? new Extension(this.galleryService, this.stateProvider, null, null, this.telemetryService) : null; + const installingExtension = gallery ? this.installing.filter(e => areSameExtensions(e, gallery.identifier))[0] : null; + const extension: Extension = installingExtension ? installingExtension : zipPath ? new Extension(this.galleryService, this.stateProvider, null, null, this.telemetryService) : null; if (extension) { this.installing = installingExtension ? this.installing.filter(e => e !== installingExtension) : this.installing; - if (error) { - if (extension.gallery) { - // Updating extension can be only a gallery extension - const installed = this.installed.filter(e => e.id === extension.id)[0]; - if (installed && installingExtension) { - installingExtension.operation = Operation.Updating; - } - } - } else { + if (!error) { extension.local = local; const installed = this.installed.filter(e => e.id === extension.id)[0]; if (installed) { - if (installingExtension) { - installingExtension.operation = Operation.Updating; - } installed.local = local; } else { this.installed.push(extension); @@ -846,7 +811,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, } if (extension.gallery) { // Report telemetry only for gallery extensions - this.reportTelemetry(installingExtension, error); + this.reportExtensionRecommendationsTelemetry(installingExtension); } } this._onChange.fire(); @@ -861,10 +826,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, return; } - const start = new Date(); - const operation = Operation.Uninstalling; - const uninstalling = this.uninstalling.filter(e => e.extension.local.identifier.id === id)[0] || { id, operation, extension, start }; - this.uninstalling = [uninstalling, ...this.uninstalling.filter(e => e.extension.local.identifier.id !== id)]; + const uninstalling = this.uninstalling.filter(e => e.local.identifier.id === id)[0] || extension; + this.uninstalling = [uninstalling, ...this.uninstalling.filter(e => e.local.identifier.id !== id)]; this._onChange.fire(); } @@ -875,16 +838,12 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, this.installed = this.installed.filter(e => e.local.identifier.id !== id); } - const uninstalling = this.uninstalling.filter(e => e.extension.local.identifier.id === id)[0]; - this.uninstalling = this.uninstalling.filter(e => e.extension.local.identifier.id !== id); + const uninstalling = this.uninstalling.filter(e => e.local.identifier.id === id)[0]; + this.uninstalling = this.uninstalling.filter(e => e.local.identifier.id !== id); if (!uninstalling) { return; } - if (!error) { - this.reportTelemetry(uninstalling); - } - this._onChange.fire(); } @@ -900,11 +859,11 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, } private getExtensionState(extension: Extension): ExtensionState { - if (extension.gallery && this.installing.some(e => e.extension.gallery && areSameExtensions(e.extension.gallery.identifier, extension.gallery.identifier))) { + if (extension.gallery && this.installing.some(e => e.gallery && areSameExtensions(e.gallery.identifier, extension.gallery.identifier))) { return ExtensionState.Installing; } - if (this.uninstalling.some(e => e.extension.id === extension.id)) { + if (this.uninstalling.some(e => e.id === extension.id)) { return ExtensionState.Uninstalling; } @@ -912,46 +871,22 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, return local ? ExtensionState.Installed : ExtensionState.Uninstalled; } - private reportTelemetry(active: IActiveExtension, errorcode?: string): void { - const data = active.extension.telemetryData; - const duration = new Date().getTime() - active.start.getTime(); - const eventName = toTelemetryEventName(active.operation); + private reportExtensionRecommendationsTelemetry(extension: Extension): void { const extRecommendations = this.extensionTipsService.getAllRecommendationsWithReason() || {}; - const recommendationsData = extRecommendations[active.extension.id.toLowerCase()] ? { recommendationReason: extRecommendations[active.extension.id.toLowerCase()].reasonId } : {}; - /* __GDPR__ - "extensionGallery:install" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, - "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "${include}": [ - "${GalleryExtensionTelemetryData}" - ] - } - */ - /* __GDPR__ - "extensionGallery:update" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, - "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "${include}": [ - "${GalleryExtensionTelemetryData}" - ] - } - */ - /* __GDPR__ - "extensionGallery:uninstall" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, - "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, - "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "${include}": [ - "${GalleryExtensionTelemetryData}" - ] - } - */ - this.telemetryService.publicLog(eventName, assign(data, { success: !errorcode, duration, errorcode }, recommendationsData)); + const recommendationReason = extRecommendations[extension.id.toLowerCase()]; + if (recommendationReason) { + const recommendationsData = { recommendationReason: recommendationReason.reasonId }; + const data = extension.telemetryData; + /* __GDPR__ + "extensionGallery:install:recommendations" : { + "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "${include}": [ + "${GalleryExtensionTelemetryData}" + ] + } + */ + this.telemetryService.publicLog('extensionGallery:install:recommendations', assign(data, recommendationsData)); + } } private onError(err: any): void { From bcfb7d4f16b6d064825651727bf4ddf056382e3e Mon Sep 17 00:00:00 2001 From: Dirk Baeumer <dirkb@microsoft.com> Date: Fri, 20 Apr 2018 11:48:11 +0200 Subject: [PATCH 1038/1070] Fixes 47563: Provide an API to fetch running task executions --- src/vs/vscode.proposed.d.ts | 24 ++++++++++- .../api/electron-browser/mainThreadTask.ts | 19 ++++++--- src/vs/workbench/api/node/extHost.api.impl.ts | 7 +++- src/vs/workbench/api/node/extHost.protocol.ts | 4 +- .../workbench/api/node/extHostApiCommands.ts | 2 +- src/vs/workbench/api/node/extHostTask.ts | 25 +++++++++-- src/vs/workbench/api/shared/tasks.ts | 5 +++ .../parts/tasks/common/taskService.ts | 7 +++- src/vs/workbench/parts/tasks/common/tasks.ts | 26 ------------ .../electron-browser/task.contribution.ts | 42 +++++++++++-------- 10 files changed, 103 insertions(+), 58 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index e38fba7ff9a..e563e3eccb1 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -567,14 +567,29 @@ declare module 'vscode' { execution: TaskExecution; } + export interface TaskFilter { + /** + * The task version as used in the tasks.json file. + * The string support the package.json semver notation. + */ + version?: string; + + /** + * The task type to return; + */ + type?: string; + } + export namespace workspace { /** * Fetches all task available in the systems. Thisweweb includes tasks * from `tasks.json` files as well as tasks from task providers * contributed through extensions. + * + * @param filter a filter to filter the return tasks. */ - export function fetchTasks(): Thenable<Task[]>; + export function fetchTasks(filter?: TaskFilter): Thenable<Task[]>; /** * Executes a task that is managed by VS Code. The returned @@ -584,6 +599,13 @@ declare module 'vscode' { */ export function executeTask(task: Task): Thenable<TaskExecution>; + /** + * The currently active task executions or an empty array. + * + * @readonly + */ + export let taskExecutions: TaskExecution[]; + /** * Fires when a task starts. */ diff --git a/src/vs/workbench/api/electron-browser/mainThreadTask.ts b/src/vs/workbench/api/electron-browser/mainThreadTask.ts index 1e052ee9e0e..cd32296c9da 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTask.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTask.ts @@ -19,17 +19,17 @@ import { ContributedTask, ExtensionTaskSourceTransfer, TaskIdentifier, TaskExecution, Task, TaskEvent, TaskEventKind, PresentationOptions, CommandOptions, CommandConfiguration, RuntimeType, CustomTask, TaskScope, TaskSource, TaskSourceKind, ExtensionTaskSource, RevealKind, PanelKind } from 'vs/workbench/parts/tasks/common/tasks'; -import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService'; +import { ITaskService, TaskFilter } from 'vs/workbench/parts/tasks/common/taskService'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, MainThreadTaskShape, ExtHostTaskShape, MainContext, IExtHostContext } from 'vs/workbench/api/node/extHost.protocol'; import { TaskDefinitionDTO, TaskExecutionDTO, ProcessExecutionOptionsDTO, TaskPresentationOptionsDTO, - ProcessExecutionDTO, ShellExecutionDTO, ShellExecutionOptionsDTO, TaskDTO, TaskSourceDTO, TaskHandleDTO + ProcessExecutionDTO, ShellExecutionDTO, ShellExecutionOptionsDTO, TaskDTO, TaskSourceDTO, TaskHandleDTO, TaskFilterDTO } from 'vs/workbench/api/shared/tasks'; -export { TaskDTO, TaskHandleDTO, TaskExecutionDTO }; +export { TaskDTO, TaskHandleDTO, TaskExecutionDTO, TaskFilterDTO }; namespace TaskExecutionDTO { export function from(value: TaskExecution): TaskExecutionDTO { @@ -330,6 +330,15 @@ namespace TaskDTO { } } +namespace TaskFilterDTO { + export function from(value: TaskFilter): TaskFilterDTO { + return value; + } + export function to(value: TaskFilterDTO): TaskFilter { + return value; + } +} + @extHostNamedCustomer(MainContext.MainThreadTask) export class MainThreadTask implements MainThreadTaskShape { @@ -387,8 +396,8 @@ export class MainThreadTask implements MainThreadTaskShape { return TPromise.wrap<void>(undefined); } - public $executeTaskProvider(): TPromise<TaskDTO[]> { - return this._taskService.tasks().then((tasks) => { + public $fetchTasks(filter?: TaskFilterDTO): TPromise<TaskDTO[]> { + return this._taskService.tasks(TaskFilterDTO.to(filter)).then((tasks) => { let result: TaskDTO[] = []; for (let task of tasks) { let item = TaskDTO.from(task); diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 30019fca14a..61c42dcad44 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -531,12 +531,15 @@ export function createApiFactory( registerTaskProvider: (type: string, provider: vscode.TaskProvider) => { return extHostTask.registerTaskProvider(extension, provider); }, - fetchTasks: proposedApiFunction(extension, (): Thenable<vscode.Task[]> => { - return extHostTask.executeTaskProvider(); + fetchTasks: proposedApiFunction(extension, (filter?: vscode.TaskFilter): Thenable<vscode.Task[]> => { + return extHostTask.fetchTasks(filter); }), executeTask: proposedApiFunction(extension, (task: vscode.Task): Thenable<vscode.TaskExecution> => { return extHostTask.executeTask(extension, task); }), + get taskExecutions(): vscode.TaskExecution[] { + return extHostTask.taskExecutions; + }, onDidStartTask: (listeners, thisArgs?, disposables?) => { return extHostTask.onDidStartTask(listeners, thisArgs, disposables); }, diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 798b71e2207..d05cabc9ae7 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -48,7 +48,7 @@ import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/ import { ISingleEditOperation } from 'vs/editor/common/model'; import { ILineMatch, IPatternInfo } from 'vs/platform/search/common/search'; import { LogLevel } from 'vs/platform/log/common/log'; -import { TaskExecutionDTO, TaskDTO, TaskHandleDTO } from 'vs/workbench/api/shared/tasks'; +import { TaskExecutionDTO, TaskDTO, TaskHandleDTO, TaskFilterDTO } from 'vs/workbench/api/shared/tasks'; export interface IEnvironment { isExtensionDevelopmentDebug: boolean; @@ -398,7 +398,7 @@ export interface MainThreadSearchShape extends IDisposable { export interface MainThreadTaskShape extends IDisposable { $registerTaskProvider(handle: number): TPromise<void>; - $executeTaskProvider(): TPromise<TaskDTO[]>; + $fetchTasks(filter?: TaskFilterDTO): TPromise<TaskDTO[]>; $executeTask(task: TaskHandleDTO | TaskDTO): TPromise<TaskExecutionDTO>; $terminateTask(id: string): TPromise<void>; $unregisterTaskProvider(handle: number): TPromise<void>; diff --git a/src/vs/workbench/api/node/extHostApiCommands.ts b/src/vs/workbench/api/node/extHostApiCommands.ts index 8c99eee403f..4fdd04533c5 100644 --- a/src/vs/workbench/api/node/extHostApiCommands.ts +++ b/src/vs/workbench/api/node/extHostApiCommands.ts @@ -520,7 +520,7 @@ export class ExtHostApiCommands { } private _executeTaskProvider(): Thenable<vscode.Task[]> { - return this._tasks.executeTaskProvider(); + return this._tasks.fetchTasks(); } } diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index 7128c03fb41..024ad5f56b0 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -21,7 +21,7 @@ import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; import * as vscode from 'vscode'; import { TaskDefinitionDTO, TaskExecutionDTO, TaskPresentationOptionsDTO, ProcessExecutionOptionsDTO, ProcessExecutionDTO, - ShellExecutionOptionsDTO, ShellExecutionDTO, TaskDTO, TaskHandleDTO + ShellExecutionOptionsDTO, ShellExecutionDTO, TaskDTO, TaskHandleDTO, TaskFilterDTO } from '../shared/tasks'; export { TaskExecutionDTO }; @@ -675,6 +675,19 @@ namespace TaskDTO { } } +namespace TaskFilterDTO { + export function from(value: vscode.TaskFilter): TaskFilterDTO { + return value; + } + + export function to(value: TaskFilterDTO): vscode.TaskFilter { + if (!value) { + return undefined; + } + return Objects.assign(Object.create(null), value); + } +} + class TaskExecutionImpl implements vscode.TaskExecution { constructor(readonly _id: string, private readonly _task: vscode.Task, private readonly _tasks: ExtHostTask) { } @@ -741,8 +754,8 @@ export class ExtHostTask implements ExtHostTaskShape { }); } - public executeTaskProvider(): Thenable<vscode.Task[]> { - return this._proxy.$executeTaskProvider().then((values) => { + public fetchTasks(filter?: vscode.TaskFilter): Thenable<vscode.Task[]> { + return this._proxy.$fetchTasks(TaskFilterDTO.from(filter)).then((values) => { let result: vscode.Task[] = []; for (let value of values) { let task = TaskDTO.to(value, this._extHostWorkspace); @@ -774,6 +787,12 @@ export class ExtHostTask implements ExtHostTaskShape { }); } + get taskExecutions(): vscode.TaskExecution[] { + let result: vscode.TaskExecution[] = []; + this._taskExecutions.forEach(value => result.push(value)); + return result; + } + get onDidStartTask(): Event<vscode.TaskStartEvent> { return this._onDidExecuteTask.event; } diff --git a/src/vs/workbench/api/shared/tasks.ts b/src/vs/workbench/api/shared/tasks.ts index 093fff83f06..7e070957c48 100644 --- a/src/vs/workbench/api/shared/tasks.ts +++ b/src/vs/workbench/api/shared/tasks.ts @@ -86,4 +86,9 @@ export interface TaskDTO { export interface TaskExecutionDTO { id: string; task: TaskDTO; +} + +export interface TaskFilterDTO { + version?: string; + type?: string; } \ No newline at end of file diff --git a/src/vs/workbench/parts/tasks/common/taskService.ts b/src/vs/workbench/parts/tasks/common/taskService.ts index 53aad958232..4a889b479eb 100644 --- a/src/vs/workbench/parts/tasks/common/taskService.ts +++ b/src/vs/workbench/parts/tasks/common/taskService.ts @@ -32,6 +32,11 @@ export interface CustomizationProperties { isBackground?: boolean; } +export interface TaskFilter { + version?: string; + type?: string; +} + export interface ITaskService { _serviceBrand: any; onDidStateChange: Event<TaskEvent>; @@ -45,7 +50,7 @@ export interface ITaskService { restart(task: Task): void; terminate(task: Task): TPromise<TaskTerminateResponse>; terminateAll(): TPromise<TaskTerminateResponse[]>; - tasks(): TPromise<Task[]>; + tasks(filter?: TaskFilter): TPromise<Task[]>; /** * @param alias The task's name, label or defined identifier. */ diff --git a/src/vs/workbench/parts/tasks/common/tasks.ts b/src/vs/workbench/parts/tasks/common/tasks.ts index 2dc2a15bbac..8fd3e0fc004 100644 --- a/src/vs/workbench/parts/tasks/common/tasks.ts +++ b/src/vs/workbench/parts/tasks/common/tasks.ts @@ -614,25 +614,6 @@ export namespace Task { } } - export function getTaskItem(task: Task): TaskItem { - let folder: IWorkspaceFolder = Task.getWorkspaceFolder(task); - let definition: TaskIdentifier; - if (ContributedTask.is(task)) { - definition = task.defines; - } else if (CustomTask.is(task) && task.command !== void 0) { - definition = CustomTask.getDefinition(task); - } else { - return undefined; - } - let result: TaskItem = { - id: task._id, - label: task._label, - definition: definition, - workspaceFolder: folder - }; - return result; - } - export function getTaskDefinition(task: Task): TaskIdentifier { if (ContributedTask.is(task)) { return task.defines; @@ -652,13 +633,6 @@ export namespace Task { } } -export interface TaskItem { - id: string; - label: string; - definition: TaskIdentifier; - workspaceFolder: IWorkspaceFolder; -} - export interface TaskExecution { id: string; task: Task; diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index da0905a8aef..64b8acbae0d 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -7,6 +7,7 @@ import 'vs/css!./media/task.contribution'; import * as nls from 'vs/nls'; +import * as semver from 'semver'; import { QuickOpenHandler } from 'vs/workbench/parts/tasks/browser/taskQuickOpen'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -73,9 +74,9 @@ import { ITaskSystem, ITaskResolver, ITaskSummary, TaskExecuteKind, TaskError, T import { Task, CustomTask, ConfiguringTask, ContributedTask, InMemoryTask, TaskEvent, TaskEventKind, TaskSet, TaskGroup, GroupType, ExecutionEngine, JsonSchemaVersion, TaskSourceKind, - TaskIdentifier, TaskSorter, TaskItem + TaskIdentifier, TaskSorter } from 'vs/workbench/parts/tasks/common/tasks'; -import { ITaskService, ITaskProvider, RunOptions, CustomizationProperties } from 'vs/workbench/parts/tasks/common/taskService'; +import { ITaskService, ITaskProvider, RunOptions, CustomizationProperties, TaskFilter } from 'vs/workbench/parts/tasks/common/taskService'; import { getTemplates as getTaskTemplates } from 'vs/workbench/parts/tasks/common/taskTemplates'; import * as TaskConfig from '../node/taskConfiguration'; @@ -580,19 +581,6 @@ class TaskService implements ITaskService { CommandsRegistry.registerCommand('workbench.action.tasks.showTasks', () => { this.runShowTasks(); }); - - CommandsRegistry.registerCommand('_executeTaskProvider', (accessor, args) => { - return this.tasks().then((tasks) => { - let result: TaskItem[] = []; - for (let task of tasks) { - let item = Task.getTaskItem(task); - if (item) { - result.push(item); - } - } - return result; - }); - }); } private get workspaceFolders(): IWorkspaceFolder[] { @@ -694,8 +682,28 @@ class TaskService implements ITaskService { }); } - public tasks(): TPromise<Task[]> { - return this.getGroupedTasks().then(result => result.all()); + public tasks(filter?: TaskFilter): TPromise<Task[]> { + let range = filter && filter.version ? filter.version : undefined; + let engine = this.executionEngine; + + if (range && ((semver.satisfies('0.1.0', range) && engine === ExecutionEngine.Terminal) || (semver.satisfies('2.0.0', range) && engine === ExecutionEngine.Process))) { + return TPromise.as<Task[]>([]); + } + return this.getGroupedTasks().then((map) => { + if (!filter || !filter.type) { + return map.all(); + } + let result: Task[] = []; + map.forEach((tasks) => { + for (let task of tasks) { + let definition = Task.getTaskDefinition(task); + if (definition && definition.type === filter.type) { + result.push(task); + } + } + }); + return result; + }); } public createSorter(): TaskSorter { From 6988c29d50b4d048d48444b3d6a1c820489b00c0 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 11:58:23 +0200 Subject: [PATCH 1039/1070] less bitmasks, replace FileOpenFlags with FileOptions, #47475 --- src/vs/platform/files/common/files.ts | 36 +++++++++++++----- src/vs/vscode.proposed.d.ts | 38 ++++++++++++++----- .../electron-browser/mainThreadFileSystem.ts | 18 ++++----- src/vs/workbench/api/node/extHost.protocol.ts | 10 ++--- .../workbench/api/node/extHostFileSystem.ts | 20 +++++----- .../electron-browser/remoteFileService.ts | 27 ++++++------- .../files/electron-browser/streams.ts | 30 +++++++-------- 7 files changed, 105 insertions(+), 74 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 1841a20af7e..854ef646d75 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -156,11 +156,27 @@ export enum FileType2 { SymbolicLink = 4, } -export enum FileOpenFlags { - Read = 0b0001, - Write = 0b0010, - Create = 0b0100, - Exclusive = 0b1000 +export interface FileOptions { + /** + * Create a file when it doesn't exists. + */ + create?: boolean; + + /** + * In combination with [`create`](FileOptions.create) but + * the operation should fail when a file already exists. + */ + exclusive?: boolean; + + /** + * Open a file for reading. + */ + read?: boolean; + + /** + * Open a file for writing. + */ + write?: boolean; } export interface IStat { @@ -194,13 +210,13 @@ export interface IFileSystemProvider { readdir(resource: URI): TPromise<[string, IStat][]>; delete(resource: URI): TPromise<void>; - rename(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise<IStat>; - copy?(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise<IStat>; + rename(from: URI, to: URI, opts: FileOptions): TPromise<IStat>; + copy?(from: URI, to: URI, opts: FileOptions): TPromise<IStat>; - readFile?(resource: URI, opts: { flags: FileOpenFlags }): TPromise<Uint8Array>; - writeFile?(resource: URI, content: Uint8Array, opts: { flags: FileOpenFlags }): TPromise<void>; + readFile?(resource: URI, opts: FileOptions): TPromise<Uint8Array>; + writeFile?(resource: URI, content: Uint8Array, opts: FileOptions): TPromise<void>; - open?(resource: URI, opts: { flags: FileOpenFlags }): TPromise<number>; + open?(resource: URI, opts: FileOptions): TPromise<number>; close?(fd: number): TPromise<void>; read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number>; write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number>; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index e563e3eccb1..d58beba09af 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -135,11 +135,31 @@ declare module 'vscode' { size: number; } - export enum FileOpenFlags { - Read = 0b0001, - Write = 0b0010, - Create = 0b0100, - Exclusive = 0b1000 + /** + * + */ + export interface FileOptions { + + /** + * Create a file when it doesn't exists + */ + create?: boolean; + + /** + * In combination with [`create`](FileOptions.create) but + * the operation should fail when a file already exists. + */ + exclusive?: boolean; + + /** + * Open a file for reading. + */ + read?: boolean; + + /** + * Open a file for writing. + */ + write?: boolean; } /** @@ -197,7 +217,7 @@ declare module 'vscode' { * @param token A cancellation token. * @return A thenable that resolves to an array of bytes. */ - readFile(uri: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): Uint8Array | Thenable<Uint8Array>; + readFile(uri: Uri, options: FileOptions, token: CancellationToken): Uint8Array | Thenable<Uint8Array>; /** * Write data to a file, replacing its entire contents. @@ -206,7 +226,7 @@ declare module 'vscode' { * @param content The new content of the file. * @param token A cancellation token. */ - writeFile(uri: Uri, content: Uint8Array, options: { flags: FileOpenFlags }, token: CancellationToken): void | Thenable<void>; + writeFile(uri: Uri, content: Uint8Array, options: FileOptions, token: CancellationToken): void | Thenable<void>; /** * Delete a file or folder from the underlying storage. @@ -224,7 +244,7 @@ declare module 'vscode' { * @param newUri The target location. * @param token A cancellation token. */ - rename(oldUri: Uri, newUri: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable<FileStat2>; + rename(oldUri: Uri, newUri: Uri, options: FileOptions, token: CancellationToken): FileStat2 | Thenable<FileStat2>; /** * Copy files or folders. Implementing this function is optional but it will speedup @@ -234,7 +254,7 @@ declare module 'vscode' { * @param target The target location. * @param token A cancellation token. */ - copy?(uri: Uri, target: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable<FileStat2>; + copy?(uri: Uri, target: Uri, options: FileOptions, token: CancellationToken): FileStat2 | Thenable<FileStat2>; } export namespace workspace { diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index e2c1accca14..2f632a363e8 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { FileOpenFlags, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files'; +import { FileOptions, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions } from 'vs/platform/files/common/files'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { ExtHostContext, ExtHostFileSystemShape, IExtHostContext, IFileChangeDto, MainContext, MainThreadFileSystemShape } from '../node/extHost.protocol'; @@ -94,17 +94,17 @@ class RemoteFileSystemProvider implements IFileSystemProvider { }); } - readFile(resource: URI, opts: { flags: FileOpenFlags }): TPromise<Uint8Array, any> { - return this._proxy.$readFile(this._handle, resource, opts.flags).then(encoded => { + readFile(resource: URI, opts: FileOptions): TPromise<Uint8Array, any> { + return this._proxy.$readFile(this._handle, resource, opts).then(encoded => { return Buffer.from(encoded, 'base64'); }); } - writeFile(resource: URI, content: Uint8Array, opts: { flags: FileOpenFlags }): TPromise<void, any> { + writeFile(resource: URI, content: Uint8Array, opts: FileOptions): TPromise<void, any> { let encoded = Buffer.isBuffer(content) ? content.toString('base64') : Buffer.from(content.buffer, content.byteOffset, content.byteLength).toString('base64'); - return this._proxy.$writeFile(this._handle, resource, encoded, opts.flags); + return this._proxy.$writeFile(this._handle, resource, encoded, opts); } delete(resource: URI): TPromise<void, any> { @@ -119,11 +119,11 @@ class RemoteFileSystemProvider implements IFileSystemProvider { return this._proxy.$readdir(this._handle, resource); } - rename(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise<IStat, any> { - return this._proxy.$rename(this._handle, resource, target, opts.flags); + rename(resource: URI, target: URI, opts: FileOptions): TPromise<IStat, any> { + return this._proxy.$rename(this._handle, resource, target, opts); } - copy(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise<IStat, any> { - return this._proxy.$copy(this._handle, resource, target, opts.flags); + copy(resource: URI, target: URI, opts: FileOptions): TPromise<IStat, any> { + return this._proxy.$copy(this._handle, resource, target, opts); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index d05cabc9ae7..a1c2dbdd980 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -42,7 +42,7 @@ import { ITreeItem } from 'vs/workbench/common/views'; import { ThemeColor } from 'vs/platform/theme/common/themeService'; import { IDisposable } from 'vs/base/common/lifecycle'; import { SerializedError } from 'vs/base/common/errors'; -import { IStat, FileChangeType, FileOpenFlags, IWatchOptions, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; +import { IStat, FileChangeType, IWatchOptions, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration'; import { ISingleEditOperation } from 'vs/editor/common/model'; @@ -572,10 +572,10 @@ export interface ExtHostWorkspaceShape { export interface ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): TPromise<IStat>; - $readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise<string>; - $writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise<void>; - $rename(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise<IStat>; - $copy(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise<IStat>; + $readFile(handle: number, resource: UriComponents, opts: FileOptions): TPromise<string>; + $writeFile(handle: number, resource: UriComponents, base64Encoded: string, opts: FileOptions): TPromise<void>; + $rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOptions): TPromise<IStat>; + $copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOptions): TPromise<IStat>; $mkdir(handle: number, resource: UriComponents): TPromise<IStat>; $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; $delete(handle: number, resource: UriComponents): TPromise<void>; diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 282c72ba611..ae0e2689e4e 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -153,8 +153,8 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { return Buffer.concat(chunks); }); } - writeFile(resource: vscode.Uri, content: Uint8Array, options: { flags: vscode.FileOpenFlags }): Thenable<void> { - // if (options.flags & (files.FileOpenFlags.Exclusive) ) + + writeFile(resource: vscode.Uri, content: Uint8Array, options: files.FileOptions): Thenable<void> { return this._delegate.write(resource, content); } } @@ -258,28 +258,28 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), {}, token)); } - $readFile(handle: number, resource: UriComponents, flags: files.FileOpenFlags): TPromise<string> { + $readFile(handle: number, resource: UriComponents, opts: files.FileOptions): TPromise<string> { return asWinJsPromise(token => { - return this._fsProvider.get(handle).readFile(URI.revive(resource), { flags }, token); + return this._fsProvider.get(handle).readFile(URI.revive(resource), opts, token); }).then(data => { return Buffer.isBuffer(data) ? data.toString('base64') : Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString('base64'); }); } - $writeFile(handle: number, resource: UriComponents, base64Content: string, flags: files.FileOpenFlags): TPromise<void, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), { flags }, token)); + $writeFile(handle: number, resource: UriComponents, base64Content: string, opts: files.FileOptions): TPromise<void, any> { + return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), opts, token)); } $delete(handle: number, resource: UriComponents): TPromise<void, any> { return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), {}, token)); } - $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise<files.IStat, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); + $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOptions): TPromise<files.IStat, any> { + return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), opts, token)); } - $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise<files.IStat, any> { - return asWinJsPromise(token => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); + $copy(handle: number, oldUri: UriComponents, newUri: UriComponents, opts: files.FileOptions): TPromise<files.IStat, any> { + return asWinJsPromise(token => this._fsProvider.get(handle).copy(URI.revive(oldUri), URI.revive(newUri), opts, token)); } $mkdir(handle: number, resource: UriComponents): TPromise<files.IStat, any> { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 90661a63377..d3e66820572 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -16,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileOpenFlags, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -353,7 +353,7 @@ export class RemoteFileService extends FileService { } }; - const readable = createReadableOfProvider(provider, resource, options.position || 0, FileOpenFlags.Read); + const readable = createReadableOfProvider(provider, resource, options.position || 0, { read: true }); return toDecodeStream(readable, decodeStreamOpts).then(data => { @@ -386,13 +386,8 @@ export class RemoteFileService extends FileService { } else { return this._withProvider(resource).then(provider => { - let flags = FileOpenFlags.Write | FileOpenFlags.Create; - if (options && options.overwrite === false) { - flags += FileOpenFlags.Exclusive; - } - const encoding = this.encoding.getWriteEncoding(resource); - return this._writeFile(provider, resource, new StringSnapshot(content), { encoding }, flags); + return this._writeFile(provider, resource, new StringSnapshot(content), encoding, { write: true, create: true, exclusive: !(options && options.overwrite) }); }).then(fileStat => { this._onAfterOperation.fire(new FileOperationEvent(resource, FileOperation.CREATE, fileStat)); @@ -414,16 +409,16 @@ export class RemoteFileService extends FileService { } return this._withProvider(resource).then(provider => { const snapshot = typeof value === 'string' ? new StringSnapshot(value) : value; - return this._writeFile(provider, resource, snapshot, options || {}, FileOpenFlags.Write); + return this._writeFile(provider, resource, snapshot, options && options.encoding, { write: true }); }); } } - private _writeFile(provider: IFileSystemProvider, resource: URI, snapshot: ITextSnapshot, options: IUpdateContentOptions, fags: FileOpenFlags): TPromise<IFileStat> { + private _writeFile(provider: IFileSystemProvider, resource: URI, snapshot: ITextSnapshot, preferredEncoding: string, options: FileOptions): TPromise<IFileStat> { const readable = createReadableOfSnapshot(snapshot); - const encoding = this.encoding.getWriteEncoding(resource, options.encoding); + const encoding = this.encoding.getWriteEncoding(resource, preferredEncoding); const decoder = decodeStream(encoding); - const target = createWritableOfProvider(provider, resource, FileOpenFlags.Write); + const target = createWritableOfProvider(provider, resource, options); return new TPromise<IFileStat>((resolve, reject) => { readable.pipe(decoder).pipe(target); target.once('error', err => reject(err)); @@ -525,7 +520,7 @@ export class RemoteFileService extends FileService { : TPromise.as(null); return prepare.then(() => this._withProvider(source)).then(provider => { - return provider.rename(source, target, { flags: 0 /*todo@remote -> RENAME_NOREPLACE */ }).then(stat => { + return provider.rename(source, target, { create: true, exclusive: !overwrite }).then(stat => { return toIFileStat(provider, [target, stat]); }).then(fileStat => { this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.MOVE, fileStat)); @@ -554,7 +549,7 @@ export class RemoteFileService extends FileService { if (source.scheme === target.scheme && (provider.capabilities & FileSystemProviderCapabilities.FileFolderCopy)) { // good: provider supports copy withing scheme - return provider.copy(source, target, { flags: 0 }).then(stat => toIFileStat(provider, [target, stat])); + return provider.copy(source, target, { create: true, exclusive: !overwrite }).then(stat => toIFileStat(provider, [target, stat])); } const prepare = overwrite @@ -569,8 +564,8 @@ export class RemoteFileService extends FileService { return this._writeFile( provider, target, new StringSnapshot(content.value), - { encoding: content.encoding }, - FileOpenFlags.Create | FileOpenFlags.Write + content.encoding, + { write: true, create: true, exclusive: !overwrite } ).then(fileStat => { this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.COPY, fileStat)); return fileStat; diff --git a/src/vs/workbench/services/files/electron-browser/streams.ts b/src/vs/workbench/services/files/electron-browser/streams.ts index ce1f4e50d54..583166be2cc 100644 --- a/src/vs/workbench/services/files/electron-browser/streams.ts +++ b/src/vs/workbench/services/files/electron-browser/streams.ts @@ -7,20 +7,20 @@ import { Readable, Writable } from 'stream'; import { UTF8 } from 'vs/base/node/encoding'; import URI from 'vs/base/common/uri'; -import { IFileSystemProvider, ITextSnapshot, FileSystemProviderCapabilities, FileOpenFlags } from 'vs/platform/files/common/files'; +import { IFileSystemProvider, ITextSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; import { illegalArgument } from 'vs/base/common/errors'; -export function createWritableOfProvider(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { +export function createWritableOfProvider(provider: IFileSystemProvider, resource: URI, opts: FileOptions): Writable { if (provider.capabilities & FileSystemProviderCapabilities.FileOpenReadWriteClose) { - return createWritable(provider, resource, flags); + return createWritable(provider, resource, opts); } else if (provider.capabilities & FileSystemProviderCapabilities.FileReadWrite) { - return createSimpleWritable(provider, resource, flags); + return createSimpleWritable(provider, resource, opts); } else { throw illegalArgument(); } } -function createSimpleWritable(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { +function createSimpleWritable(provider: IFileSystemProvider, resource: URI, opts: FileOptions): Writable { return new class extends Writable { _chunks: Buffer[] = []; constructor(opts?) { @@ -32,7 +32,7 @@ function createSimpleWritable(provider: IFileSystemProvider, resource: URI, flag } end() { // todo@joh - end might have another chunk... - provider.writeFile(resource, Buffer.concat(this._chunks), { flags }).then(_ => { + provider.writeFile(resource, Buffer.concat(this._chunks), opts).then(_ => { super.end(); }, err => { this.emit('error', err); @@ -41,7 +41,7 @@ function createSimpleWritable(provider: IFileSystemProvider, resource: URI, flag }; } -function createWritable(provider: IFileSystemProvider, resource: URI, flags: FileOpenFlags): Writable { +function createWritable(provider: IFileSystemProvider, resource: URI, opts: FileOptions): Writable { return new class extends Writable { _fd: number; _pos: number; @@ -51,7 +51,7 @@ function createWritable(provider: IFileSystemProvider, resource: URI, flags: Fil async _write(chunk: Buffer, encoding, callback: Function) { try { if (typeof this._fd !== 'number') { - this._fd = await provider.open(resource, { flags }); + this._fd = await provider.open(resource, opts); } let bytesWritten = await provider.write(this._fd, this._pos, chunk, 0, chunk.length); this._pos += bytesWritten; @@ -70,17 +70,17 @@ function createWritable(provider: IFileSystemProvider, resource: URI, flags: Fil }; } -export function createReadableOfProvider(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { +export function createReadableOfProvider(provider: IFileSystemProvider, resource: URI, position: number, opts: FileOptions): Readable { if (provider.capabilities & FileSystemProviderCapabilities.FileOpenReadWriteClose) { - return createReadable(provider, resource, position, flags); + return createReadable(provider, resource, position, opts); } else if (provider.capabilities & FileSystemProviderCapabilities.FileReadWrite) { - return createSimpleReadable(provider, resource, position, flags); + return createSimpleReadable(provider, resource, position, opts); } else { throw illegalArgument(); } } -function createReadable(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { +function createReadable(provider: IFileSystemProvider, resource: URI, position: number, opts: FileOptions): Readable { return new class extends Readable { _fd: number; _pos: number = position; @@ -96,7 +96,7 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position: this._reading = true; try { if (typeof this._fd !== 'number') { - this._fd = await provider.open(resource, { flags }); + this._fd = await provider.open(resource, opts); } let buffer = Buffer.allocUnsafe(64 * 1024); while (this._reading) { @@ -124,14 +124,14 @@ function createReadable(provider: IFileSystemProvider, resource: URI, position: }; } -function createSimpleReadable(provider: IFileSystemProvider, resource: URI, position: number, flags: FileOpenFlags): Readable { +function createSimpleReadable(provider: IFileSystemProvider, resource: URI, position: number, opts: FileOptions): Readable { return new class extends Readable { _readOperation: Thenable<any>; _read(size?: number): void { if (this._readOperation) { return; } - this._readOperation = provider.readFile(resource, { flags }).then(data => { + this._readOperation = provider.readFile(resource, opts).then(data => { this.push(data.slice(position)); this.push(null); }, err => { From fac18e5ba8ec04982ed616cd599979fc6ecf4f41 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu <sasomava@microsoft.com> Date: Fri, 20 Apr 2018 12:03:37 +0200 Subject: [PATCH 1040/1070] Fix #46609 --- .../electron-browser/main.contribution.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 26d69e90739..eb578183a03 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -9,7 +9,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import * as nls from 'vs/nls'; import product from 'vs/platform/node/product'; import * as os from 'os'; -import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; +import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; @@ -17,9 +17,11 @@ import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; import { KeybindingsReferenceAction, OpenDocumentationUrlAction, OpenIntroductoryVideosUrlAction, OpenTipsAndTricksUrlAction, OpenIssueReporterAction, ReportPerformanceIssueUsingReporterAction, ZoomResetAction, ZoomOutAction, ZoomInAction, ToggleFullScreenAction, ToggleMenuBarAction, CloseWorkspaceAction, CloseCurrentWindowAction, SwitchWindow, NewWindowAction, NavigateUpAction, NavigateDownAction, NavigateLeftAction, NavigateRightAction, IncreaseViewSizeAction, DecreaseViewSizeAction, ShowStartupPerformance, ToggleSharedProcessAction, QuickSwitchWindow, QuickOpenRecentAction, inRecentFilesPickerContextKey, ShowAboutDialogAction, InspectContextKeysAction, OpenProcessExplorer } from 'vs/workbench/electron-browser/actions'; import { registerCommands } from 'vs/workbench/electron-browser/commands'; import { AddRootFolderAction, GlobalRemoveRootFolderAction, OpenWorkspaceAction, SaveWorkspaceAsAction, OpenWorkspaceConfigFileAction, OpenFolderAsWorkspaceInNewWindowAction, OpenFileFolderAction, OpenFileAction, OpenFolderAction } from 'vs/workbench/browser/actions/workspaceActions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { ContextKeyExpr, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { inQuickOpenContext, getQuickNavigateHandler } from 'vs/workbench/browser/parts/quickopen/quickopen'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { CommandsRegistry } from 'vs/platform/commands/common/commands'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; // Contribute Commands registerCommands(); @@ -103,9 +105,19 @@ workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(AddRoo workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(GlobalRemoveRootFolderAction, GlobalRemoveRootFolderAction.ID, GlobalRemoveRootFolderAction.LABEL), 'Workspaces: Remove Folder from Workspace...', workspacesCategory); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(OpenWorkspaceAction, OpenWorkspaceAction.ID, OpenWorkspaceAction.LABEL), 'Workspaces: Open Workspace...', workspacesCategory); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(SaveWorkspaceAsAction, SaveWorkspaceAsAction.ID, SaveWorkspaceAsAction.LABEL), 'Workspaces: Save Workspace As...', workspacesCategory); -workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(OpenWorkspaceConfigFileAction, OpenWorkspaceConfigFileAction.ID, OpenWorkspaceConfigFileAction.LABEL), 'Workspaces: Open Workspace Configuration File', workspacesCategory); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(OpenFolderAsWorkspaceInNewWindowAction, OpenFolderAsWorkspaceInNewWindowAction.ID, OpenFolderAsWorkspaceInNewWindowAction.LABEL), 'Workspaces: Open Folder as Workspace in New Window', workspacesCategory); +CommandsRegistry.registerCommand(OpenWorkspaceConfigFileAction.ID, serviceAccessor => { + serviceAccessor.get(IInstantiationService).createInstance(OpenWorkspaceConfigFileAction, OpenWorkspaceConfigFileAction.ID, OpenWorkspaceConfigFileAction.LABEL).run(); +}); +MenuRegistry.appendMenuItem(MenuId.CommandPalette, { + command: { + id: OpenWorkspaceConfigFileAction.ID, + title: `${workspacesCategory}: ${OpenWorkspaceConfigFileAction.LABEL}`, + }, + when: new RawContextKey<string>('workbenchState', '').isEqualTo('workspace') +}); + // Developer related actions const developerCategory = nls.localize('developer', "Developer"); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ShowStartupPerformance, ShowStartupPerformance.ID, ShowStartupPerformance.LABEL), 'Developer: Startup Performance', developerCategory); From 3569b1d3850a4565ac6024497d138cfbab4b22d9 Mon Sep 17 00:00:00 2001 From: Andre Weinand <aweinand@microsoft.com> Date: Fri, 20 Apr 2018 12:03:38 +0200 Subject: [PATCH 1041/1070] improve error handling in variableResolver --- .../node/variableResolver.ts | 111 ++++++++++-------- 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/src/vs/workbench/services/configurationResolver/node/variableResolver.ts b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts index edc0d4c0752..76c5a423113 100644 --- a/src/vs/workbench/services/configurationResolver/node/variableResolver.ts +++ b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts @@ -72,6 +72,7 @@ export class VariableResolver { } switch (variable) { + case 'env': if (argument) { if (isWindows) { @@ -84,104 +85,112 @@ export class VariableResolver { // For `env` we should do the same as a normal shell does - evaluates missing envs to an empty string #46436 return ''; } - throw new Error(localize('missingEnvVarName', "'{0}' can not be resolved because no environment variable is given.", match)); + throw new Error(localize('missingEnvVarName', "'{0}' can not be resolved because no environment variable name is given.", match)); case 'config': if (argument) { const config = this.accessor.getConfigurationValue(folderUri, argument); - if (!types.isUndefinedOrNull(config) && !types.isObject(config)) { - return config; + if (types.isUndefinedOrNull(config)) { + throw new Error(localize('configNotFound', "'{0}' can not be resolved because setting '{1}' not found.", match, argument)); } - throw new Error(localize('configNoString', "'{0}' can not be resolved because '{1}' is a structured value.", match, argument)); + if (types.isObject(config)) { + throw new Error(localize('configNoString', "'{0}' can not be resolved because '{1}' is a structured value.", match, argument)); + } + return config; } throw new Error(localize('missingConfigName', "'{0}' can not be resolved because no settings name is given.", match)); default: { - if (argument) { - const folder = this.accessor.getFolderUri(argument); - if (folder) { - folderUri = folder; - } + // common error handling for all variables that require an open folder and accept a folder name argument + switch (variable) { + case 'workspaceRoot': + case 'workspaceFolder': + case 'workspaceRootFolderName': + case 'workspaceFolderBasename': + case 'relativeFile': + if (argument) { + const folder = this.accessor.getFolderUri(argument); + if (folder) { + folderUri = folder; + } else { + throw new Error(localize('canNotFindFolder', "'{0}' can not be resolved. No such folder '{1}'.", match, argument)); + } + } + if (!folderUri) { + if (this.accessor.getWorkspaceFolderCount() > 1) { + throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'{0}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match)); + } + throw new Error(localize('canNotResolveWorkspaceFolder', "'{0}' can not be resolved. Please open a folder.", match)); + } + break; + default: + break; + } + + // common error handling for all variables that require an open file + switch (variable) { + case 'file': + case 'relativeFile': + case 'fileDirname': + case 'fileExtname': + case 'fileBasename': + case 'fileBasenameNoExtension': + if (!filePath) { + throw new Error(localize('canNotResolveFile', "'{0}' can not be resolved. Please open an editor.", match)); + } + break; + default: + break; } switch (variable) { case 'workspaceRoot': case 'workspaceFolder': - if (folderUri) { - return normalizeDriveLetter(folderUri.fsPath); - } - if (this.accessor.getWorkspaceFolderCount() > 1) { - throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "'{0}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match)); - } - throw new Error(localize('canNotResolveWorkspaceFolder', "'{0}' can not be resolved. Please open a folder.", match)); + return normalizeDriveLetter(folderUri.fsPath); case 'cwd': return folderUri ? normalizeDriveLetter(folderUri.fsPath) : process.cwd(); case 'workspaceRootFolderName': case 'workspaceFolderBasename': - if (folderUri) { - return paths.basename(folderUri.fsPath); - } - if (this.accessor.getWorkspaceFolderCount() > 1) { - throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "'{0}' can not be resolved in a multi folder workspace. Scope this variable using ':' and a workspace folder name.", match)); - } - throw new Error(localize('canNotResolveFolderBasename', "'{0}' can not be resolved. Please open a folder.", match)); + return paths.basename(folderUri.fsPath); case 'lineNumber': const lineNumber = this.accessor.getLineNumber(); if (lineNumber) { return lineNumber; } - throw new Error(localize('canNotResolveLineNumber', "'{0}' can not be resolved. Please open an editor.", match)); + throw new Error(localize('canNotResolveLineNumber', "'{0}' can not be resolved. Make sure to have a line selected in the active editor.", match)); case 'selectedText': const selectedText = this.accessor.getSelectedText(); if (selectedText) { return selectedText; } - throw new Error(localize('canNotResolveSelectedText', "'{0}' can not be resolved. Please open an editor and select some text.", match)); + throw new Error(localize('canNotResolveSelectedText', "'{0}' can not be resolved. Make sure to have some text selected in the active editor.", match)); case 'file': - if (filePath) { - return filePath; - } - throw new Error(localize('canNotResolveFile', "'{0}' can not be resolved. Please open an editor.", match)); + return filePath; case 'relativeFile': - if (folderUri && filePath) { + if (folderUri) { return paths.normalize(relative(folderUri.fsPath, filePath)); } - if (filePath) { - return filePath; - } - throw new Error(localize('canNotResolveRelativeFile', "'{0}' can not be resolved. Please open an editor.", match)); + return filePath; case 'fileDirname': - if (filePath) { - return paths.dirname(filePath); - } - throw new Error(localize('canNotResolveFileDirname', "'{0}' can not be resolved. Please open an editor.", match)); + return paths.dirname(filePath); case 'fileExtname': - if (filePath) { - return paths.extname(filePath); - } - throw new Error(localize('canNotResolveFileExtname', "'{0}' can not be resolved. Please open an editor.", match)); + return paths.extname(filePath); case 'fileBasename': - if (filePath) { - return paths.basename(filePath); - } - throw new Error(localize('canNotResolveFileBasename', "'{0}' can not be resolved. Please open an editor.", match)); + return paths.basename(filePath); case 'fileBasenameNoExtension': - if (filePath) { - const basename = paths.basename(filePath); - return basename.slice(0, basename.length - paths.extname(basename).length); - } - throw new Error(localize('canNotResolveFileBasenameNoExtension', "'{0}' can not be resolved. Please open an editor.", match)); + const basename = paths.basename(filePath); + return basename.slice(0, basename.length - paths.extname(basename).length); case 'execPath': return this.accessor.getEnvironmentService('execPath'); From 2d9528ab55e083ee590ddb61fb85cbf932117cf0 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 12:34:12 +0200 Subject: [PATCH 1042/1070] only allow events from a provider's scheme, #47475 --- src/vs/workbench/api/node/extHostFileSystem.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index ae0e2689e4e..417d3f3e8a1 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -7,7 +7,7 @@ import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { Event, mapEvent } from 'vs/base/common/event'; -import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape } from './extHost.protocol'; +import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape, IFileChangeDto } from './extHost.protocol'; import * as vscode from 'vscode'; import * as files from 'vs/platform/files/common/files'; import * as path from 'path'; @@ -220,8 +220,13 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { this._proxy.$registerFileSystemProvider(handle, scheme, capabilites); const subscription = provider.onDidChangeFile(event => { - let newEvent = event.map(e => { + let mapped: IFileChangeDto[] = []; + for (const e of event) { let { uri: resource, type } = e; + if (resource.scheme !== scheme) { + // dropping events for wrong scheme + continue; + } let newType: files.FileChangeType; switch (type) { case FileChangeType2.Changed: @@ -234,9 +239,9 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { newType = files.FileChangeType.DELETED; break; } - return { resource, type: newType }; - }); - this._proxy.$onFileSystemChange(handle, newEvent); + mapped.push({ resource, type: newType }); + } + this._proxy.$onFileSystemChange(handle, mapped); }); return { From a877d74d3e5d06f0582b2040f24428830f91cd20 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 12:36:05 +0200 Subject: [PATCH 1043/1070] fix compile error --- src/vs/workbench/api/node/extHost.api.impl.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 61c42dcad44..36de938e154 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -57,7 +57,6 @@ import { ExtensionActivatedByAPI } from 'vs/workbench/api/node/extHostExtensionA import { OverviewRulerLane } from 'vs/editor/common/model'; import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { ExtHostWebviews } from 'vs/workbench/api/node/extHostWebview'; -import * as files from 'vs/platform/files/common/files'; import { ExtHostSearch } from './extHostSearch'; export interface IExtensionApiFactory { @@ -697,7 +696,6 @@ export function createApiFactory( DeprecatedFileType: extHostTypes.FileType, FileChangeType2: extHostTypes.FileChangeType2, FileType2: extHostTypes.FileType2, - FileOpenFlags: files.FileOpenFlags, FileSystemError: extHostTypes.FileSystemError, FoldingRange: extHostTypes.FoldingRange, FoldingRangeKind: extHostTypes.FoldingRangeKind From 4cce36adf59fbc0f950d608ca187949ac768913c Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Fri, 20 Apr 2018 12:54:22 +0200 Subject: [PATCH 1044/1070] eh debug: Do not end process on initial attach fixes #43516 --- .../parts/debug/electron-browser/debugService.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index afa634c5d1c..d24ae70b037 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -153,11 +153,17 @@ export class DebugService implements debug.IDebugService { const session = <RawDebugSession>process.session; if (broadcast.channel === EXTENSION_ATTACH_BROADCAST_CHANNEL) { - this.onSessionEnd(session); - + const initialAttach = process.configuration.request === 'launch'; process.configuration.request = 'attach'; process.configuration.port = broadcast.payload.port; - this.doCreateProcess(process.session.root, process.configuration, process.getId()); + // Do not end process on initial attach (since the request is still 'launch') + if (initialAttach) { + session.attach(process.configuration); + } else { + this.onSessionEnd(session); + this.doCreateProcess(process.session.root, process.configuration, process.getId()); + } + return; } From cf44fd649891e852e6ebaf96477acda20d855c91 Mon Sep 17 00:00:00 2001 From: Andre Weinand <aweinand@microsoft.com> Date: Fri, 20 Apr 2018 13:17:59 +0200 Subject: [PATCH 1045/1070] remove getEnvironmentService from IVariableAccessor --- src/vs/workbench/api/node/extHostDebugService.ts | 5 ++--- .../electron-browser/configurationResolverService.ts | 4 ++-- .../configurationResolver/node/variableResolver.ts | 8 ++++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index 2ae91c279e1..b969522ba5e 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -547,8 +547,8 @@ export class ExtHostVariableResolverService implements IConfigurationResolverSer getConfigurationValue: (folderUri: URI, section: string) => { return configuration.getConfiguration(undefined, folderUri).get<string>(section); }, - getEnvironmentService: (name: string): string => { - return undefined; + getExecPath: (): string | undefined => { + return undefined; // does not exist in EH }, getFilePath: (): string | undefined => { const activeEditor = editors.activeEditor(); @@ -561,7 +561,6 @@ export class ExtHostVariableResolverService implements IConfigurationResolverSer return undefined; }, getSelectedText: (): string | undefined => { - debugger; const activeEditor = editors.activeEditor(); if (activeEditor && !activeEditor.selection.isEmpty) { return activeEditor.document.getText(activeEditor.selection); diff --git a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts index 26c6ee9cf95..080f600ce81 100644 --- a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts +++ b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts @@ -45,8 +45,8 @@ export class ConfigurationResolverService implements IConfigurationResolverServi getConfigurationValue: (folderUri: uri, suffix: string) => { return configurationService.getValue<string>(suffix, folderUri ? { resource: folderUri } : undefined); }, - getEnvironmentService: (name: string) => { - return environmentService[name]; + getExecPath: () => { + return environmentService['execPath']; }, getFilePath: (): string | undefined => { let input = editorService.getActiveEditorInput(); diff --git a/src/vs/workbench/services/configurationResolver/node/variableResolver.ts b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts index 76c5a423113..a8fc1e8b982 100644 --- a/src/vs/workbench/services/configurationResolver/node/variableResolver.ts +++ b/src/vs/workbench/services/configurationResolver/node/variableResolver.ts @@ -17,7 +17,7 @@ export interface IVariableAccessor { getFolderUri(folderName: string): uri | undefined; getWorkspaceFolderCount(): number; getConfigurationValue(folderUri: uri, section: string): string | undefined; - getEnvironmentService(name: string): string | undefined; + getExecPath(): string | undefined; getFilePath(): string | undefined; getSelectedText(): string | undefined; getLineNumber(): string; @@ -193,7 +193,11 @@ export class VariableResolver { return basename.slice(0, basename.length - paths.extname(basename).length); case 'execPath': - return this.accessor.getEnvironmentService('execPath'); + const ep = this.accessor.getExecPath(); + if (ep) { + return ep; + } + throw new Error(localize('canNotResolveExecPath', "'{0}' can not be resolved.", match)); default: return match; From d6b38359e61f0f392afc5b79c56b9709217b9b08 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Fri, 20 Apr 2018 13:24:23 +0200 Subject: [PATCH 1046/1070] proposed open url api --- build/lib/i18n.resources.json | 6 +- src/vs/vscode.proposed.d.ts | 16 +++++ .../extensionHost.contribution.ts | 1 + .../api/electron-browser/mainThreadUrls.ts | 68 +++++++++++++++++++ src/vs/workbench/api/node/extHost.api.impl.ts | 5 ++ src/vs/workbench/api/node/extHost.protocol.ts | 11 +++ src/vs/workbench/api/node/extHostUrls.ts | 46 +++++++++++++ .../url/electron-browser/url.contribution.ts | 39 +++++++++++ src/vs/workbench/workbench.main.ts | 1 + 9 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 src/vs/workbench/api/electron-browser/mainThreadUrls.ts create mode 100644 src/vs/workbench/api/node/extHostUrls.ts create mode 100644 src/vs/workbench/parts/url/electron-browser/url.contribution.ts diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index 18567d3f995..4cf0bc4cf6a 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -130,6 +130,10 @@ "name": "vs/workbench/parts/update", "project": "vscode-workbench" }, + { + "name": "vs/workbench/parts/url", + "project": "vscode-workbench" + }, { "name": "vs/workbench/parts/watermark", "project": "vscode-workbench" @@ -215,4 +219,4 @@ "project": "vscode-preferences" } ] -} +} \ No newline at end of file diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index d58beba09af..a0ce8f7b2e3 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -657,4 +657,20 @@ declare module 'vscode' { } //#endregion + + //#region URLs + + export interface UrlHandler { + handleUrl(uri: Uri): void; + } + + export namespace window { + + /** + * Registers a URL handler. + */ + export function registerUrlHandler(handler: UrlHandler): Disposable; + } + + //#endregion } diff --git a/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts b/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts index 13d824066d0..73eabaddf52 100644 --- a/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts +++ b/src/vs/workbench/api/electron-browser/extensionHost.contribution.ts @@ -49,6 +49,7 @@ import './mainThreadTerminalService'; import './mainThreadTreeViews'; import './mainThreadLogService'; import './mainThreadWebview'; +import './mainThreadUrls'; import './mainThreadWindow'; import './mainThreadWorkspace'; diff --git a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts new file mode 100644 index 00000000000..64d74d4f23e --- /dev/null +++ b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts @@ -0,0 +1,68 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ExtHostContext, IExtHostContext, MainContext, MainThreadUrlsShape, ExtHostUrlsShape } from 'vs/workbench/api/node/extHost.protocol'; +import { extHostNamedCustomer } from './extHostCustomers'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { IURLService, IURLHandler } from 'vs/platform/url/common/url'; +import URI from 'vs/base/common/uri'; +import { IDisposable } from 'vs/base/common/lifecycle'; + +class ExtensionUrlHandler implements IURLHandler { + + constructor( + private readonly proxy: ExtHostUrlsShape, + private readonly handle: number, + private readonly extensionId: string + ) { } + + handleURL(uri: URI): TPromise<boolean> { + if (uri.authority !== this.extensionId) { + return TPromise.as(false); + } + + return this.proxy.$handleUrl(this.handle, uri).then(() => true); + } +} + +@extHostNamedCustomer(MainContext.MainThreadUrls) +export class MainThreadUrls implements MainThreadUrlsShape { + + private readonly proxy: ExtHostUrlsShape; + + private handlers = new Map<number, IDisposable>(); + + constructor( + context: IExtHostContext, + @IURLService private urlService: IURLService + ) { + this.proxy = context.getProxy(ExtHostContext.ExtHostUrls); + } + + $registerUrlHandler(handle: number, extensionId: string): TPromise<void> { + const handler = new ExtensionUrlHandler(this.proxy, handle, extensionId); + const disposable = this.urlService.registerHandler(handler); + this.handlers.set(handle, disposable); + + return TPromise.as(null); + } + + $unregisterUrlHandler(handle: number): TPromise<void> { + const disposable = this.handlers.get(handle); + + if (!disposable) { + return TPromise.as(null); + } + + disposable.dispose(); + this.handlers.delete(handle); + + return TPromise.as(null); + } + + dispose(): void { + + } +} diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 36de938e154..aa7f6ee3094 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -58,6 +58,7 @@ import { OverviewRulerLane } from 'vs/editor/common/model'; import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { ExtHostWebviews } from 'vs/workbench/api/node/extHostWebview'; import { ExtHostSearch } from './extHostSearch'; +import { ExtHostUrls } from './extHostUrls'; export interface IExtensionApiFactory { (extension: IExtensionDescription): typeof vscode; @@ -98,6 +99,7 @@ export function createApiFactory( const extHostHeapService = rpcProtocol.set(ExtHostContext.ExtHostHeapService, new ExtHostHeapService()); const extHostDecorations = rpcProtocol.set(ExtHostContext.ExtHostDecorations, new ExtHostDecorations(rpcProtocol)); const extHostWebviews = rpcProtocol.set(ExtHostContext.ExtHostWebviews, new ExtHostWebviews(rpcProtocol)); + const extHostUrls = rpcProtocol.set(ExtHostContext.ExtHostUrls, new ExtHostUrls(rpcProtocol)); const extHostDocumentsAndEditors = rpcProtocol.set(ExtHostContext.ExtHostDocumentsAndEditors, new ExtHostDocumentsAndEditors(rpcProtocol)); const extHostDocuments = rpcProtocol.set(ExtHostContext.ExtHostDocuments, new ExtHostDocuments(rpcProtocol, extHostDocumentsAndEditors)); const extHostDocumentContentProviders = rpcProtocol.set(ExtHostContext.ExtHostDocumentContentProviders, new ExtHostDocumentContentProvider(rpcProtocol, extHostDocumentsAndEditors, extHostLogService)); @@ -431,6 +433,9 @@ export function createApiFactory( }), registerWebviewPanelSerializer: proposedApiFunction(extension, (viewType: string, serializer: vscode.WebviewPanelSerializer) => { return extHostWebviews.registerWebviewPanelSerializer(viewType, serializer); + }), + registerUrlHandler: proposedApiFunction(extension, (handler: vscode.UrlHandler) => { + return extHostUrls.registerUrlHandler(extension.id, handler); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index a1c2dbdd980..9c1906697da 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -372,6 +372,15 @@ export interface ExtHostWebviewsShape { $serializeWebviewPanel(webviewHandle: WebviewPanelHandle): Thenable<any>; } +export interface MainThreadUrlsShape extends IDisposable { + $registerUrlHandler(handle: number, extensionId: string): TPromise<void>; + $unregisterUrlHandler(handle: number): TPromise<void>; +} + +export interface ExtHostUrlsShape { + $handleUrl(handle: number, uri: UriComponents): TPromise<void>; +} + export interface MainThreadWorkspaceShape extends IDisposable { $startSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>; $cancelSearch(requestId: number): Thenable<boolean>; @@ -873,6 +882,7 @@ export const MainContext = { MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'), MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'), MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'), + MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'), MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'), MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'), MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'), @@ -908,5 +918,6 @@ export const ExtHostContext = { ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'), ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'), ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'), + ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls'), ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress') }; diff --git a/src/vs/workbench/api/node/extHostUrls.ts b/src/vs/workbench/api/node/extHostUrls.ts new file mode 100644 index 00000000000..a9e946c0c6d --- /dev/null +++ b/src/vs/workbench/api/node/extHostUrls.ts @@ -0,0 +1,46 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { MainContext, IMainContext, ExtHostUrlsShape, MainThreadUrlsShape } from './extHost.protocol'; +import URI, { UriComponents } from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { toDisposable } from 'vs/base/common/lifecycle'; + +export class ExtHostUrls implements ExtHostUrlsShape { + + private static HandlePool = 0; + private readonly _proxy: MainThreadUrlsShape; + + private handlers = new Map<number, vscode.UrlHandler>(); + + constructor( + mainContext: IMainContext + ) { + this._proxy = mainContext.getProxy(MainContext.MainThreadUrls); + } + + registerUrlHandler(extensionId: string, handler: vscode.UrlHandler): vscode.Disposable { + const handle = ExtHostUrls.HandlePool++; + this.handlers.set(handle, handler); + this._proxy.$registerUrlHandler(handle, extensionId); + + return toDisposable(() => { + this.handlers.delete(handle); + this._proxy.$unregisterUrlHandler(handle); + }); + } + + $handleUrl(handle: number, uri: UriComponents): TPromise<void> { + const handler = this.handlers.get(handle); + + if (!handler) { + return TPromise.as(null); + } + + handler.handleUrl(URI.revive(uri)); + return TPromise.as(null); + } +} \ No newline at end of file diff --git a/src/vs/workbench/parts/url/electron-browser/url.contribution.ts b/src/vs/workbench/parts/url/electron-browser/url.contribution.ts new file mode 100644 index 00000000000..edbcc48c138 --- /dev/null +++ b/src/vs/workbench/parts/url/electron-browser/url.contribution.ts @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { localize } from 'vs/nls'; +import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; +import { IURLService } from 'vs/platform/url/common/url'; +import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; +import URI from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { Action } from 'vs/base/common/actions'; + +export class OpenUrlAction extends Action { + + static readonly ID = 'workbench.action.url.openUrl'; + static readonly LABEL = localize('openUrl', "Open URL"); + + constructor( + id: string, + label: string, + @IURLService private urlService: IURLService, + @IQuickOpenService private quickOpenService: IQuickOpenService, + ) { + super(id, label); + } + + async run(): TPromise<any> { + const input = await this.quickOpenService.input({ prompt: 'URL to open' }); + const uri = URI.parse(input); + + this.urlService.open(uri); + } +} + +Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions) + .registerWorkbenchAction(new SyncActionDescriptor(OpenUrlAction, OpenUrlAction.ID, OpenUrlAction.LABEL), 'OpenUrl', localize('developer', "Developer")); \ No newline at end of file diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index dee2fb5336f..f9cf799d7fe 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -68,6 +68,7 @@ import 'vs/workbench/parts/markers/electron-browser/markers.contribution'; import 'vs/workbench/parts/html/electron-browser/html.contribution'; +import 'vs/workbench/parts/url/electron-browser/url.contribution'; import 'vs/workbench/parts/webview/electron-browser/webview.contribution'; import 'vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution'; From 21e0fa81034db341cf7a18cd847454809a83abf5 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Fri, 20 Apr 2018 13:42:51 +0200 Subject: [PATCH 1047/1070] expose scm view location --- src/vs/workbench/api/browser/viewsExtensionPoint.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index 0fda4bcaa1a..2931cf6e8dd 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -79,6 +79,12 @@ namespace schema { type: 'array', items: viewDescriptor, default: [] + }, + 'scm': { + description: localize('views.scm', "Contributes views to SCM container in the Activity bar"), + type: 'array', + items: viewDescriptor, + default: [] } }, additionalProperties: { @@ -94,6 +100,7 @@ function getViewLocation(value: string): ViewLocation { switch (value) { case 'explorer': return ViewLocation.Explorer; case 'debug': return ViewLocation.Debug; + case 'scm': return ViewLocation.SCM; default: return ViewLocation.get(`workbench.view.extension.${value}`) || ViewLocation.Explorer; } } From 80759012c000e210b2a1a7770b6c77a8b7921e1a Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 13:37:08 +0200 Subject: [PATCH 1048/1070] remote - one todo less --- .../common/textModelResolverService.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts index dcb3faa86c3..c7617a56e68 100644 --- a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts +++ b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts @@ -17,6 +17,7 @@ import * as network from 'vs/base/common/network'; import { ITextModelService, ITextModelContentProvider, ITextEditorModel } from 'vs/editor/common/services/resolverService'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; +import { IFileService } from 'vs/platform/files/common/files'; class ResourceModelCollection extends ReferenceCollection<TPromise<ITextEditorModel>> { @@ -24,19 +25,15 @@ class ResourceModelCollection extends ReferenceCollection<TPromise<ITextEditorMo constructor( @IInstantiationService private instantiationService: IInstantiationService, - @ITextFileService private textFileService: ITextFileService + @ITextFileService private textFileService: ITextFileService, + @IFileService private fileService: IFileService ) { super(); } public createReferencedObject(key: string): TPromise<ITextEditorModel> { const resource = URI.parse(key); - - if (resource.scheme === network.Schemas.file) { - return this.textFileService.models.loadOrCreate(resource); - } - if (!this.providers[resource.scheme]) { - // TODO@remote + if (this.fileService.canHandleResource(resource)) { return this.textFileService.models.loadOrCreate(resource); } return this.resolveTextModelContent(key).then(() => this.instantiationService.createInstance(ResourceEditorModel, resource)); From 9bcb7a0cfe23a34bbb9293aab85a8c283b6e3e03 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 13:53:23 +0200 Subject: [PATCH 1049/1070] remote, todo update, #48269 --- src/vs/workbench/api/node/extHostDocumentData.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vs/workbench/api/node/extHostDocumentData.ts b/src/vs/workbench/api/node/extHostDocumentData.ts index 2be3ac6908d..d42afcf7ba0 100644 --- a/src/vs/workbench/api/node/extHostDocumentData.ts +++ b/src/vs/workbench/api/node/extHostDocumentData.ts @@ -68,8 +68,7 @@ export class ExtHostDocumentData extends MirrorTextModel { this._document = { get uri() { return data._uri; }, get fileName() { return data._uri.fsPath; }, - // todo@remote - // documents from other fs-provider must not be untitled + // todo@remote -> https://github.com/Microsoft/vscode/issues/48269 get isUntitled() { return data._uri.scheme !== 'file'; }, get languageId() { return data._languageId; }, get version() { return data._versionId; }, From 4a27ac849831caf068cc00228579339e49ad636d Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 14:11:34 +0200 Subject: [PATCH 1050/1070] inline`FileType2` as booleans into IStat, #47475 --- src/vs/platform/files/common/files.ts | 4 +++- src/vs/vscode.proposed.d.ts | 10 +++------- src/vs/workbench/api/node/extHost.api.impl.ts | 1 - src/vs/workbench/api/node/extHostFileSystem.ts | 14 ++++++++------ src/vs/workbench/api/node/extHostTypes.ts | 6 ------ .../files/electron-browser/remoteFileService.ts | 8 ++++---- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 854ef646d75..6b57656c76e 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -180,9 +180,11 @@ export interface FileOptions { } export interface IStat { + isFile: boolean; + isDirectory: boolean; + isSymbolicLink: boolean; mtime: number; size: number; - type: FileType2; } export interface IWatchOptions { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index a0ce8f7b2e3..8158008cd85 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -123,14 +123,10 @@ declare module 'vscode' { uri: Uri; } - export enum FileType2 { - File = 0b001, - Directory = 0b010, - SymbolicLink = 0b100, - } - export interface FileStat2 { - type: FileType2; + isFile: boolean; + isDirectory: boolean; + isSymbolicLink: boolean; mtime: number; size: number; } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index aa7f6ee3094..054977f834d 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -700,7 +700,6 @@ export function createApiFactory( DeprecatedFileChangeType: extHostTypes.FileChangeType, DeprecatedFileType: extHostTypes.FileType, FileChangeType2: extHostTypes.FileChangeType2, - FileType2: extHostTypes.FileType2, FileSystemError: extHostTypes.FileSystemError, FoldingRange: extHostTypes.FoldingRange, FoldingRangeKind: extHostTypes.FoldingRangeKind diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 417d3f3e8a1..0a1264901fa 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -14,7 +14,7 @@ import * as path from 'path'; import { IDisposable } from 'vs/base/common/lifecycle'; import { asWinJsPromise } from 'vs/base/common/async'; import { values } from 'vs/base/common/map'; -import { Range, FileType, FileChangeType, FileChangeType2, FileType2 } from 'vs/workbench/api/node/extHostTypes'; +import { Range, FileType, FileChangeType, FileChangeType2 } from 'vs/workbench/api/node/extHostTypes'; import { ExtHostLanguageFeatures } from 'vs/workbench/api/node/extHostLanguageFeatures'; import { Schemas } from 'vs/base/common/network'; @@ -91,21 +91,23 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { private static _modernizeFileStat(stat: vscode.DeprecatedFileStat): vscode.FileStat2 { let { mtime, size, type } = stat; - let newType: vscode.FileType2; + let isFile = false; + let isDirectory = false; + let isSymbolicLink = false; // no support for bitmask, effectively no support for symlinks switch (type) { case FileType.Dir: - newType = FileType2.Directory; + isDirectory = true; break; case FileType.File: - newType = FileType2.File; + isFile = true; break; case FileType.Symlink: - newType = FileType2.SymbolicLink; + isSymbolicLink = true; break; } - return { mtime, size, type: newType }; + return { mtime, size, isFile, isDirectory, isSymbolicLink }; } private static _modernizeFileChange(e: vscode.DeprecatedFileChange): vscode.FileChange2 { diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index fd4a26b9784..f75c83dbe18 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1832,12 +1832,6 @@ export enum FileType { Symlink = 2 } -export enum FileType2 { - File = 1, - Directory = 2, - SymbolicLink = 4, -} - export class FileSystemError extends Error { static EntryExists(message?: string): FileSystemError { diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index d3e66820572..b3c74b82694 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -16,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileType2, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -28,10 +28,10 @@ import { createReadableOfProvider, createReadableOfSnapshot, createWritableOfPro function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise<IFileStat> { const [resource, stat] = tuple; const fileStat: IFileStat = { - isDirectory: (stat.type & FileType2.Directory) !== 0, - isSymbolicLink: (stat.type & FileType2.SymbolicLink) !== 0, - resource: resource, + resource, name: posix.basename(resource.path), + isDirectory: stat.isDirectory, + isSymbolicLink: stat.isSymbolicLink, mtime: stat.mtime, size: stat.size, etag: stat.mtime.toString(29) + stat.size.toString(31), From 32ef7f32586733b384bc746093222373f5eab262 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 14:51:14 +0200 Subject: [PATCH 1051/1070] remote - only remember last known schemes, not all known schemes --- .../electron-browser/remoteFileService.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index b3c74b82694..324c228af58 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -5,9 +5,9 @@ 'use strict'; import { posix } from 'path'; -import { distinct, flatten, isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { flatten, isFalsyOrEmpty } from 'vs/base/common/arrays'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { TernarySearchTree } from 'vs/base/common/map'; +import { TernarySearchTree, keys } from 'vs/base/common/map'; import { Schemas } from 'vs/base/common/network'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -145,8 +145,8 @@ class WorkspaceWatchLogic { export class RemoteFileService extends FileService { - private readonly _provider = new Map<string, IFileSystemProvider>(); - private _supportedSchemes: string[]; + private readonly _provider: Map<string, IFileSystemProvider>; + private readonly _lastKnownSchemes: string[]; constructor( @IExtensionService private readonly _extensionService: IExtensionService, @@ -168,7 +168,8 @@ export class RemoteFileService extends FileService { notificationService ); - this._supportedSchemes = JSON.parse(this._storageService.get('remote_schemes', undefined, '[]')); + this._provider = new Map<string, IFileSystemProvider>(); + this._lastKnownSchemes = JSON.parse(this._storageService.get('remote_schemes', undefined, '[]')); this.toDispose.push(new WorkspaceWatchLogic(this, configurationService, contextService)); } @@ -177,10 +178,9 @@ export class RemoteFileService extends FileService { throw new Error('a provider for that scheme is already registered'); } - this._supportedSchemes.push(scheme); - this._storageService.store('remote_schemes', JSON.stringify(distinct(this._supportedSchemes))); - this._provider.set(scheme, provider); + this._storageService.store('remote_schemes', JSON.stringify(keys(this._provider))); + const reg = provider.onDidChangeFile(changes => { // forward change events this._onFileChanges.fire(new FileChangesEvent(changes)); @@ -197,7 +197,7 @@ export class RemoteFileService extends FileService { return resource.scheme === Schemas.file || this._provider.has(resource.scheme) // TODO@remote - || this._supportedSchemes.indexOf(resource.scheme) >= 0; + || this._lastKnownSchemes.indexOf(resource.scheme) >= 0; } private _tryParseFileOperationResult(err: any): FileOperationResult { From 914ba60c0eff65037aae185f9c89a9b7c807f445 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 15:17:07 +0200 Subject: [PATCH 1052/1070] add registration change event, #48275 --- src/vs/platform/files/common/files.ts | 11 +++++++++++ .../files/electron-browser/remoteFileService.ts | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 6b57656c76e..65fe656c755 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -41,6 +41,11 @@ export interface IFileService { */ onAfterOperation: Event<FileOperationEvent>; + /** + * An event that is fired when a file system provider is added or removed + */ + onDidChangeFileSystemProviderRegistrations?: Event<IFileSystemProviderRegistrationEvent>; + /** * Registeres a file system provider for a certain scheme. */ @@ -224,6 +229,12 @@ export interface IFileSystemProvider { write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): TPromise<number>; } +export interface IFileSystemProviderRegistrationEvent { + added: boolean; + scheme: string; + provider?: IFileSystemProvider; +} + export enum FileOperation { CREATE, DELETE, diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 324c228af58..112fd4ac534 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -6,6 +6,7 @@ import { posix } from 'path'; import { flatten, isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { Event, Emitter } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TernarySearchTree, keys } from 'vs/base/common/map'; import { Schemas } from 'vs/base/common/network'; @@ -16,7 +17,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, FileSystemProviderCapabilities, FileOptions } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileOptions, FileSystemProviderCapabilities, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, IFileSystemProviderRegistrationEvent } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -147,6 +148,9 @@ export class RemoteFileService extends FileService { private readonly _provider: Map<string, IFileSystemProvider>; private readonly _lastKnownSchemes: string[]; + private readonly _onDidChangeFileSystemProviderRegistrations = new Emitter<IFileSystemProviderRegistrationEvent>(); + + readonly onDidChangeFileSystemProviderRegistrations: Event<IFileSystemProviderRegistrationEvent> = this._onDidChangeFileSystemProviderRegistrations.event; constructor( @IExtensionService private readonly _extensionService: IExtensionService, @@ -179,6 +183,7 @@ export class RemoteFileService extends FileService { } this._provider.set(scheme, provider); + this._onDidChangeFileSystemProviderRegistrations.fire({ added: true, scheme, provider }); this._storageService.store('remote_schemes', JSON.stringify(keys(this._provider))); const reg = provider.onDidChangeFile(changes => { @@ -187,6 +192,7 @@ export class RemoteFileService extends FileService { }); return { dispose: () => { + this._onDidChangeFileSystemProviderRegistrations.fire({ added: false, scheme, provider }); this._provider.delete(scheme); reg.dispose(); } From b7e8a4f43e5ba38c781437b293444e230c2ab381 Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 15:43:36 +0200 Subject: [PATCH 1053/1070] add dev-warning, adjust FileEditorInputFactory-deserialization, #48275 --- .../electron-browser/files.contribution.ts | 2 +- .../electron-browser/remoteFileService.ts | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/files.contribution.ts b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts index 1da4ee90a94..48906d6533e 100644 --- a/src/vs/workbench/parts/files/electron-browser/files.contribution.ts +++ b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts @@ -136,7 +136,7 @@ class FileEditorInputFactory implements IEditorInputFactory { const resource = !!fileInput.resourceJSON ? URI.revive(fileInput.resourceJSON) : URI.parse(fileInput.resource); const encoding = fileInput.encoding; - return accessor.get(IWorkbenchEditorService).createInput({ resource, encoding }) as FileEditorInput; + return accessor.get(IInstantiationService).createInstance(FileEditorInput, resource, encoding); }); } } diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 112fd4ac534..e4f9af2233f 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -155,16 +155,16 @@ export class RemoteFileService extends FileService { constructor( @IExtensionService private readonly _extensionService: IExtensionService, @IStorageService private readonly _storageService: IStorageService, + @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IConfigurationService configurationService: IConfigurationService, @IWorkspaceContextService contextService: IWorkspaceContextService, - @IEnvironmentService environmentService: IEnvironmentService, @ILifecycleService lifecycleService: ILifecycleService, @INotificationService notificationService: INotificationService, @ITextResourceConfigurationService textResourceConfigurationService: ITextResourceConfigurationService, ) { super( contextService, - environmentService, + _environmentService, textResourceConfigurationService, configurationService, lifecycleService, @@ -200,10 +200,19 @@ export class RemoteFileService extends FileService { } canHandleResource(resource: URI): boolean { - return resource.scheme === Schemas.file - || this._provider.has(resource.scheme) - // TODO@remote - || this._lastKnownSchemes.indexOf(resource.scheme) >= 0; + if (resource.scheme === Schemas.file || this._provider.has(resource.scheme)) { + return true; + } + // TODO@remote + // this needs to go, but this already went viral + // https://github.com/Microsoft/vscode/issues/48275 + if (this._lastKnownSchemes.indexOf(resource.scheme) < 0) { + return false; + } + if (!this._environmentService.isBuilt) { + console.warn('[remote] cache information required for ' + resource.toString()); + } + return true; } private _tryParseFileOperationResult(err: any): FileOperationResult { From 11cb1c381470a767f723576db30cc50cd81f0dda Mon Sep 17 00:00:00 2001 From: Johannes Rieken <johannes.rieken@gmail.com> Date: Fri, 20 Apr 2018 15:53:05 +0200 Subject: [PATCH 1054/1070] remote - pushing down more methods to the IFileService interface --- src/vs/platform/files/common/files.ts | 6 +++--- .../services/files/electron-browser/fileService.ts | 13 ++++++++++++- .../files/electron-browser/remoteFileService.ts | 6 +----- src/vs/workbench/test/workbenchTestServices.ts | 6 ++++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 65fe656c755..e9f5c6e78d6 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -44,17 +44,17 @@ export interface IFileService { /** * An event that is fired when a file system provider is added or removed */ - onDidChangeFileSystemProviderRegistrations?: Event<IFileSystemProviderRegistrationEvent>; + onDidChangeFileSystemProviderRegistrations: Event<IFileSystemProviderRegistrationEvent>; /** * Registeres a file system provider for a certain scheme. */ - registerProvider?(scheme: string, provider: IFileSystemProvider): IDisposable; + registerProvider(scheme: string, provider: IFileSystemProvider): IDisposable; /** * Checks if this file service can handle the given resource. */ - canHandleResource?(resource: URI): boolean; + canHandleResource(resource: URI): boolean; /** * Resolve the properties of a file identified by the resource. diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index b6619cd0664..f1be736dffc 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -10,7 +10,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as crypto from 'crypto'; import * as assert from 'assert'; -import { isParent, FileOperation, FileOperationEvent, IContent, IFileService, IResolveFileOptions, IResolveFileResult, IResolveContentOptions, IFileStat, IStreamContent, FileOperationError, FileOperationResult, IUpdateContentOptions, FileChangeType, FileChangesEvent, ICreateFileOptions, IContentData, ITextSnapshot, IFilesConfiguration } from 'vs/platform/files/common/files'; +import { isParent, FileOperation, FileOperationEvent, IContent, IFileService, IResolveFileOptions, IResolveFileResult, IResolveContentOptions, IFileStat, IStreamContent, FileOperationError, FileOperationResult, IUpdateContentOptions, FileChangeType, FileChangesEvent, ICreateFileOptions, IContentData, ITextSnapshot, IFilesConfiguration, IFileSystemProviderRegistrationEvent, IFileSystemProvider } from 'vs/platform/files/common/files'; import { MAX_FILE_SIZE, MAX_HEAP_SIZE } from 'vs/platform/files/node/files'; import { isEqualOrParent } from 'vs/base/common/paths'; import { ResourceMap } from 'vs/base/common/map'; @@ -92,6 +92,7 @@ export class FileService implements IFileService { protected readonly _onFileChanges: Emitter<FileChangesEvent>; protected readonly _onAfterOperation: Emitter<FileOperationEvent>; + protected readonly _onDidChangeFileSystemProviderRegistrations = new Emitter<IFileSystemProviderRegistrationEvent>(); protected toDispose: IDisposable[]; @@ -240,6 +241,16 @@ export class FileService implements IFileService { } } + public readonly onDidChangeFileSystemProviderRegistrations: Event<IFileSystemProviderRegistrationEvent> = this._onDidChangeFileSystemProviderRegistrations.event; + + public registerProvider(scheme: string, provider: IFileSystemProvider): IDisposable { + throw new Error('not implemented'); + } + + public canHandleResource(resource: uri): boolean { + return resource.scheme === Schemas.file; + } + public resolveFile(resource: uri, options?: IResolveFileOptions): TPromise<IFileStat> { return this.resolve(resource, options); } diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index e4f9af2233f..4cb7cde1d24 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -6,7 +6,6 @@ import { posix } from 'path'; import { flatten, isFalsyOrEmpty } from 'vs/base/common/arrays'; -import { Event, Emitter } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TernarySearchTree, keys } from 'vs/base/common/map'; import { Schemas } from 'vs/base/common/network'; @@ -17,7 +16,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileOptions, FileSystemProviderCapabilities, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot, IFileSystemProviderRegistrationEvent } from 'vs/platform/files/common/files'; +import { FileChangesEvent, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FileOptions, FileSystemProviderCapabilities, IContent, ICreateFileOptions, IFileStat, IFileSystemProvider, IFilesConfiguration, IResolveContentOptions, IResolveFileOptions, IResolveFileResult, IStat, IStreamContent, ITextSnapshot, IUpdateContentOptions, StringSnapshot } from 'vs/platform/files/common/files'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -148,9 +147,6 @@ export class RemoteFileService extends FileService { private readonly _provider: Map<string, IFileSystemProvider>; private readonly _lastKnownSchemes: string[]; - private readonly _onDidChangeFileSystemProviderRegistrations = new Emitter<IFileSystemProviderRegistrationEvent>(); - - readonly onDidChangeFileSystemProviderRegistrations: Event<IFileSystemProviderRegistrationEvent> = this._onDidChangeFileSystemProviderRegistrations.event; constructor( @IExtensionService private readonly _extensionService: IExtensionService, diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 18b929cfb78..5acfb8aab9e 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -773,6 +773,12 @@ export class TestFileService implements IFileService { return TPromise.as(null); } + onDidChangeFileSystemProviderRegistrations = Event.None; + + registerProvider(scheme: string, provider) { + return { dispose() { } }; + } + canHandleResource(resource: URI): boolean { return resource.scheme === 'file'; } From de661083ebdc436f527647d35748089f0b9c9b06 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Fri, 20 Apr 2018 16:21:58 +0200 Subject: [PATCH 1055/1070] Fixes #20050: Handle the case where dragging over a view zone which is outside the viewport --- .../editor/browser/controller/mouseHandler.ts | 55 ++++++++++++++----- .../editor/browser/controller/mouseTarget.ts | 15 +++-- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts index a6ac118cbdf..6657158e914 100644 --- a/src/vs/editor/browser/controller/mouseHandler.ts +++ b/src/vs/editor/browser/controller/mouseHandler.ts @@ -11,7 +11,7 @@ import * as dom from 'vs/base/browser/dom'; import { Position } from 'vs/editor/common/core/position'; import { Selection } from 'vs/editor/common/core/selection'; import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler'; -import { MouseTarget, MouseTargetFactory, IViewZoneData } from 'vs/editor/browser/controller/mouseTarget'; +import { MouseTarget, MouseTargetFactory, IViewZoneData, HitTestContext } from 'vs/editor/browser/controller/mouseTarget'; import * as editorBrowser from 'vs/editor/browser/editorBrowser'; import { TimeoutTimer, RunOnceScheduler } from 'vs/base/common/async'; import { ViewContext } from 'vs/editor/common/view/viewContext'; @@ -424,12 +424,30 @@ class MouseDownOperation extends Disposable { const mouseColumn = this._getMouseColumn(e); if (e.posy < editorContent.y) { - let aboveLineNumber = viewLayout.getLineNumberAtVerticalOffset(Math.max(viewLayout.getCurrentScrollTop() - (editorContent.y - e.posy), 0)); + const verticalOffset = Math.max(viewLayout.getCurrentScrollTop() - (editorContent.y - e.posy), 0); + const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset); + if (viewZoneData) { + const newPosition = this._helpPositionJumpOverViewZone(viewZoneData); + if (newPosition) { + return new MouseTarget(null, editorBrowser.MouseTargetType.OUTSIDE_EDITOR, mouseColumn, newPosition); + } + } + + let aboveLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset); return new MouseTarget(null, editorBrowser.MouseTargetType.OUTSIDE_EDITOR, mouseColumn, new Position(aboveLineNumber, 1)); } if (e.posy > editorContent.y + editorContent.height) { - let belowLineNumber = viewLayout.getLineNumberAtVerticalOffset(viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y)); + const verticalOffset = viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y); + const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset); + if (viewZoneData) { + const newPosition = this._helpPositionJumpOverViewZone(viewZoneData); + if (newPosition) { + return new MouseTarget(null, editorBrowser.MouseTargetType.OUTSIDE_EDITOR, mouseColumn, newPosition); + } + } + + let belowLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset); return new MouseTarget(null, editorBrowser.MouseTargetType.OUTSIDE_EDITOR, mouseColumn, new Position(belowLineNumber, model.getLineMaxColumn(belowLineNumber))); } @@ -459,24 +477,31 @@ class MouseDownOperation extends Disposable { } if (t.type === editorBrowser.MouseTargetType.CONTENT_VIEW_ZONE || t.type === editorBrowser.MouseTargetType.GUTTER_VIEW_ZONE) { - // Force position on view zones to go above or below depending on where selection started from - let selectionStart = new Position(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn); - let viewZoneData = <IViewZoneData>t.detail; - let positionBefore = viewZoneData.positionBefore; - let positionAfter = viewZoneData.positionAfter; - - if (positionBefore && positionAfter) { - if (positionBefore.isBefore(selectionStart)) { - return new MouseTarget(t.element, t.type, t.mouseColumn, positionBefore, null, t.detail); - } else { - return new MouseTarget(t.element, t.type, t.mouseColumn, positionAfter, null, t.detail); - } + const newPosition = this._helpPositionJumpOverViewZone(<IViewZoneData>t.detail); + if (newPosition) { + return new MouseTarget(t.element, t.type, t.mouseColumn, newPosition, null, t.detail); } } return t; } + private _helpPositionJumpOverViewZone(viewZoneData: IViewZoneData): Position { + // Force position on view zones to go above or below depending on where selection started from + let selectionStart = new Position(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn); + let positionBefore = viewZoneData.positionBefore; + let positionAfter = viewZoneData.positionAfter; + + if (positionBefore && positionAfter) { + if (positionBefore.isBefore(selectionStart)) { + return positionBefore; + } else { + return positionAfter; + } + } + return null; + } + private _dispatchMouse(position: MouseTarget, inSelectionMode: boolean): void { this._viewController.dispatchMouse({ position: position.position, diff --git a/src/vs/editor/browser/controller/mouseTarget.ts b/src/vs/editor/browser/controller/mouseTarget.ts index 942f7f67493..bab014e28eb 100644 --- a/src/vs/editor/browser/controller/mouseTarget.ts +++ b/src/vs/editor/browser/controller/mouseTarget.ts @@ -16,6 +16,7 @@ import { PartFingerprint, PartFingerprints } from 'vs/editor/browser/view/viewPa import { IViewModel } from 'vs/editor/common/viewModel/viewModel'; import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions'; import { ViewLine } from 'vs/editor/browser/viewParts/lines/viewLine'; +import { HorizontalRange } from 'vs/editor/common/view/renderingContext'; export interface IViewZoneData { viewZoneId: number; @@ -222,7 +223,7 @@ class ElementPath { } } -class HitTestContext { +export class HitTestContext { public readonly model: IViewModel; public readonly layoutInfo: EditorLayoutInfo; @@ -246,12 +247,16 @@ class HitTestContext { } public getZoneAtCoord(mouseVerticalOffset: number): IViewZoneData { + return HitTestContext.getZoneAtCoord(this._context, mouseVerticalOffset); + } + + public static getZoneAtCoord(context: ViewContext, mouseVerticalOffset: number): IViewZoneData { // The target is either a view zone or the empty space after the last view-line - let viewZoneWhitespace = this._context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset); + let viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset); if (viewZoneWhitespace) { let viewZoneMiddle = viewZoneWhitespace.verticalOffset + viewZoneWhitespace.height / 2, - lineCount = this._context.model.getLineCount(), + lineCount = context.model.getLineCount(), positionBefore: Position = null, position: Position, positionAfter: Position = null; @@ -262,7 +267,7 @@ class HitTestContext { } if (viewZoneWhitespace.afterLineNumber > 0) { // There are more lines above this view zone - positionBefore = new Position(viewZoneWhitespace.afterLineNumber, this._context.model.getLineMaxColumn(viewZoneWhitespace.afterLineNumber)); + positionBefore = new Position(viewZoneWhitespace.afterLineNumber, context.model.getLineMaxColumn(viewZoneWhitespace.afterLineNumber)); } if (positionAfter === null) { @@ -338,7 +343,7 @@ class HitTestContext { return this._viewHelper.getLineWidth(lineNumber); } - public visibleRangeForPosition2(lineNumber: number, column: number) { + public visibleRangeForPosition2(lineNumber: number, column: number): HorizontalRange { return this._viewHelper.visibleRangeForPosition2(lineNumber, column); } From 996c55e4a178d9439751ca3e297a4f305957173b Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Fri, 20 Apr 2018 16:26:44 +0200 Subject: [PATCH 1056/1070] Fixes #48281 --- .../extensions/electron-browser/runtimeExtensionsEditor.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts index 802cc4d1615..6109aabca2c 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts @@ -312,7 +312,12 @@ export class RuntimeExtensionsEditor extends BaseEditor { let language = activationTimes.activationEvent.substr('onLanguage:'.length); title = nls.localize('languageActivation', "Activated because you opened a {0} file", language); } else { - title = nls.localize('workspaceGenericActivation', "Activated on {0}", activationTimes.activationEvent); + title = nls.localize({ + key: 'workspaceGenericActivation', + comment: [ + 'The {0} placeholder will be an activation event, like e.g. \'language:typescript\', \'debug\', etc.' + ] + }, "Activated on {0}", activationTimes.activationEvent); } data.activationTime.title = title; if (!isFalsyOrEmpty(element.status.runtimeErrors)) { From 01169b16171dd381816f08daec793792be7d9151 Mon Sep 17 00:00:00 2001 From: Alex Dima <alexdima@microsoft.com> Date: Fri, 20 Apr 2018 16:32:04 +0200 Subject: [PATCH 1057/1070] Fixes #48280 --- .../electron-browser/runtimeExtensionsEditor.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts index 6109aabca2c..e51d6079969 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts @@ -304,9 +304,19 @@ export class RuntimeExtensionsEditor extends BaseEditor { } else if (/^workspaceContains:/.test(activationTimes.activationEvent)) { let fileNameOrGlob = activationTimes.activationEvent.substr('workspaceContains:'.length); if (fileNameOrGlob.indexOf('*') >= 0 || fileNameOrGlob.indexOf('?') >= 0) { - title = nls.localize('workspaceContainsGlobActivation', "Activated because a file matching {0} exists in your workspace", fileNameOrGlob); + title = nls.localize({ + key: 'workspaceContainsGlobActivation', + comment: [ + '{0} will be a glob pattern' + ] + }, "Activated because a file matching {0} exists in your workspace", fileNameOrGlob); } else { - title = nls.localize('workspaceContainsFileActivation', "Activated because file {0} exists in your workspace", fileNameOrGlob); + title = nls.localize({ + key: 'workspaceContainsFileActivation', + comment: [ + '{0} will be a file name' + ] + }, "Activated because file {0} exists in your workspace", fileNameOrGlob); } } else if (/^onLanguage:/.test(activationTimes.activationEvent)) { let language = activationTimes.activationEvent.substr('onLanguage:'.length); From 1ecc9b31b302af14a9772f5d991805b35c076c16 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 16:58:34 +0200 Subject: [PATCH 1058/1070] fix #48209 --- src/vs/platform/theme/common/colorRegistry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/theme/common/colorRegistry.ts b/src/vs/platform/theme/common/colorRegistry.ts index 0c86fecab82..dcd84b72179 100644 --- a/src/vs/platform/theme/common/colorRegistry.ts +++ b/src/vs/platform/theme/common/colorRegistry.ts @@ -180,7 +180,7 @@ export const inputPlaceholderForeground = registerColor('input.placeholderForegr export const inputValidationInfoBackground = registerColor('inputValidation.infoBackground', { dark: '#063B49', light: '#D6ECF2', hc: Color.black }, nls.localize('inputValidationInfoBackground', "Input validation background color for information severity.")); export const inputValidationInfoBorder = registerColor('inputValidation.infoBorder', { dark: '#007acc', light: '#007acc', hc: contrastBorder }, nls.localize('inputValidationInfoBorder', "Input validation border color for information severity.")); -export const inputValidationWarningBackground = registerColor('inputValidation.warningBackground', { dark: '#352A05', light: '#F6F5D2', hc: Color.black }, nls.localize('inputValidationWarningBackground', "Input validation background color for information warning.")); +export const inputValidationWarningBackground = registerColor('inputValidation.warningBackground', { dark: '#352A05', light: '#F6F5D2', hc: Color.black }, nls.localize('inputValidationWarningBackground', "Input validation background color for warning severity.")); export const inputValidationWarningBorder = registerColor('inputValidation.warningBorder', { dark: '#B89500', light: '#B89500', hc: contrastBorder }, nls.localize('inputValidationWarningBorder', "Input validation border color for warning severity.")); export const inputValidationErrorBackground = registerColor('inputValidation.errorBackground', { dark: '#5A1D1D', light: '#F2DEDE', hc: Color.black }, nls.localize('inputValidationErrorBackground', "Input validation background color for error severity.")); export const inputValidationErrorBorder = registerColor('inputValidation.errorBorder', { dark: '#BE1100', light: '#BE1100', hc: contrastBorder }, nls.localize('inputValidationErrorBorder', "Input validation border color for error severity.")); From 97aaae1277fd5c062a54b1bc540dcc6be86d9640 Mon Sep 17 00:00:00 2001 From: Pradeep Murugesan <pradeepmurugesan@outlook.com> Date: Fri, 20 Apr 2018 17:17:30 +0200 Subject: [PATCH 1059/1070] fix for deleting multiple directory message 47892 (#47956) * fix for deleting multiple directory message 47892 * 47892 code review comments --- .../files/electron-browser/fileActions.ts | 59 +++++++++++++++++-- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 93d95cffa90..33b52811caa 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -645,9 +645,8 @@ class BaseDeleteFileAction extends BaseFileAction { // Confirm for moving to trash else if (this.useTrash) { - const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) - : distinctElements[0].isDirectory ? nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name) - : nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); + const message = this.getMoveToTrashMessage(distinctElements); + confirmDeletePromise = this.dialogService.confirm({ message, detail: isWindows ? nls.localize('undoBin', "You can restore from the Recycle Bin.") : nls.localize('undoTrash', "You can restore from the Trash."), @@ -661,9 +660,7 @@ class BaseDeleteFileAction extends BaseFileAction { // Confirm for deleting permanently else { - const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) - : distinctElements[0].isDirectory ? nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name) - : nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); + const message = this.getDeleteMessage(distinctElements); confirmDeletePromise = this.dialogService.confirm({ message, detail: nls.localize('irreversible', "This action is irreversible!"), @@ -736,6 +733,56 @@ class BaseDeleteFileAction extends BaseFileAction { }); }); } + + private getMoveToTrashMessage(distinctElements: ExplorerItem[]): string { + if (this.containsBothDirectoryAndFile(distinctElements)) { + return getConfirmMessage(nls.localize('confirmMoveTrashMessageFilesAndDirectories', "Are you sure you want to delete the following {0} files/directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); + } + + let message: string = ''; + if (distinctElements.length > 1) { + if (distinctElements[0].isDirectory) { + message = getConfirmMessage(nls.localize('confirmMoveTrashMessageMultipleDirectories', "Are you sure you want to delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); + } else { + message = getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); + } + } else { + if (distinctElements[0].isDirectory) { + message = nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name); + } else { + message = nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); + } + } + return message; + } + + private getDeleteMessage(distinctElements: ExplorerItem[]): string { + if (this.containsBothDirectoryAndFile(distinctElements)) { + return getConfirmMessage(nls.localize('confirmDeleteMessageFilesAndDirectories', "Are you sure you want to permanently delete the following {0} files/directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); + } + + let message: string = ''; + if (distinctElements.length > 1) { + if (distinctElements[0].isDirectory) { + message = getConfirmMessage(nls.localize('confirmDeleteMessageMultipleDirectories', "Are you sure you want to permanently delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); + } else { + message = getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); + } + } else { + if (distinctElements[0].isDirectory) { + message = nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name); + } else { + message = nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); + } + } + return message; + } + + private containsBothDirectoryAndFile(distinctElements: ExplorerItem[]) { + const directories = distinctElements.filter(element => element.isDirectory); + const files = distinctElements.filter(element => !element.isDirectory); + return directories.length > 0 && files.length > 0; + } } /* Add File */ From 8617a38a5d026ab60577ea04b4bc60ffe00be65d Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 17:21:34 +0200 Subject: [PATCH 1060/1070] :lipstick: --- .../files/electron-browser/fileActions.ts | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index 33b52811caa..5e58cd18646 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -739,21 +739,19 @@ class BaseDeleteFileAction extends BaseFileAction { return getConfirmMessage(nls.localize('confirmMoveTrashMessageFilesAndDirectories', "Are you sure you want to delete the following {0} files/directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); } - let message: string = ''; if (distinctElements.length > 1) { if (distinctElements[0].isDirectory) { - message = getConfirmMessage(nls.localize('confirmMoveTrashMessageMultipleDirectories', "Are you sure you want to delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); - } else { - message = getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); - } - } else { - if (distinctElements[0].isDirectory) { - message = nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name); - } else { - message = nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); + return getConfirmMessage(nls.localize('confirmMoveTrashMessageMultipleDirectories', "Are you sure you want to delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); } + + return getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); } - return message; + + if (distinctElements[0].isDirectory) { + return nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name); + } + + return nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); } private getDeleteMessage(distinctElements: ExplorerItem[]): string { @@ -761,26 +759,25 @@ class BaseDeleteFileAction extends BaseFileAction { return getConfirmMessage(nls.localize('confirmDeleteMessageFilesAndDirectories', "Are you sure you want to permanently delete the following {0} files/directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); } - let message: string = ''; if (distinctElements.length > 1) { if (distinctElements[0].isDirectory) { - message = getConfirmMessage(nls.localize('confirmDeleteMessageMultipleDirectories', "Are you sure you want to permanently delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); - } else { - message = getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); - } - } else { - if (distinctElements[0].isDirectory) { - message = nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name); - } else { - message = nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); + return getConfirmMessage(nls.localize('confirmDeleteMessageMultipleDirectories', "Are you sure you want to permanently delete the following {0} directories and its contents?", distinctElements.length), distinctElements.map(e => e.resource)); } + + return getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)); } - return message; + + if (distinctElements[0].isDirectory) { + return nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name); + } + + return nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); } - private containsBothDirectoryAndFile(distinctElements: ExplorerItem[]) { + private containsBothDirectoryAndFile(distinctElements: ExplorerItem[]): boolean { const directories = distinctElements.filter(element => element.isDirectory); const files = distinctElements.filter(element => !element.isDirectory); + return directories.length > 0 && files.length > 0; } } From 1aa0bb83bca1b712a2042854629b93848cbc5114 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 16:04:20 +0200 Subject: [PATCH 1061/1070] Revert "Require gtk 3 on Linux" This reverts commit 2e6a761f8c225ae7aad144c071414bb080916ad9. --- resources/linux/debian/control.template | 2 +- resources/linux/rpm/dependencies.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/linux/debian/control.template b/resources/linux/debian/control.template index 821c542b520..57f7c2075ff 100644 --- a/resources/linux/debian/control.template +++ b/resources/linux/debian/control.template @@ -1,7 +1,7 @@ Package: @@NAME@@ Version: @@VERSION@@ Section: devel -Depends: libnotify4, libnss3, gnupg, apt, libxkbfile1, libgconf-2-4, libsecret-1-0, libgtk-3-0 (>= 3.10.0) +Depends: libnotify4, libnss3, gnupg, apt, libxkbfile1, libgconf-2-4, libsecret-1-0 Priority: optional Architecture: @@ARCHITECTURE@@ Maintainer: Microsoft Corporation <vscode-linux@microsoft.com> diff --git a/resources/linux/rpm/dependencies.json b/resources/linux/rpm/dependencies.json index c2ae8b8fe31..e78bf4f85ca 100644 --- a/resources/linux/rpm/dependencies.json +++ b/resources/linux/rpm/dependencies.json @@ -4,7 +4,7 @@ "libpthread.so.0(GLIBC_2.2.5)(64bit)", "libpthread.so.0(GLIBC_2.3.2)(64bit)", "libpthread.so.0(GLIBC_2.3.3)(64bit)", - "libgtk-3.so.0()(64bit)", + "libgtk-x11-2.0.so.0()(64bit)", "libgdk-x11-2.0.so.0()(64bit)", "libatk-1.0.so.0()(64bit)", "libgio-2.0.so.0()(64bit)", @@ -114,7 +114,7 @@ "libglib-2.0.so.0", "libgmodule-2.0.so.0", "libgobject-2.0.so.0", - "libgtk-3.so.0", + "libgtk-x11-2.0.so.0", "libm.so.6", "libm.so.6(GLIBC_2.0)", "libm.so.6(GLIBC_2.1)", From 6cb06b7cb57bf4c1470fbc413031fa779791aa24 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 16:05:52 +0200 Subject: [PATCH 1062/1070] Revert "Electron v2.0.0 (#47289)" This reverts commit f7ec491c3ed5cea258e144da873504a98582b7de. --- .yarnrc | 2 +- scripts/code-cli.bat | 2 +- scripts/code-cli.sh | 2 +- scripts/code.sh | 5 +- scripts/test.sh | 5 +- src/typings/electron.d.ts | 1209 +-- src/typings/node.d.ts | 9570 ++++++----------- .../processExplorer/processExplorerMain.ts | 2 +- src/vs/code/electron-main/app.ts | 116 +- src/vs/code/electron-main/window.ts | 22 + .../electron-main/updateService.darwin.ts | 2 +- .../parts/activitybar/activitybarPart.ts | 31 +- src/vs/workbench/electron-browser/shell.ts | 60 +- src/vs/workbench/node/extensionHostProcess.ts | 20 +- .../node/configurationService.ts | 16 +- .../electron-browser/contextmenuService.ts | 34 +- .../electron-browser/extensionHost.ts | 10 +- 17 files changed, 3757 insertions(+), 7351 deletions(-) diff --git a/.yarnrc b/.yarnrc index fefa6adbb94..42f08fa0c02 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,3 +1,3 @@ disturl "https://atom.io/download/electron" -target "2.0.0-beta.7" +target "1.7.12" runtime "electron" diff --git a/scripts/code-cli.bat b/scripts/code-cli.bat index 7bca260314d..f08ddb744e0 100644 --- a/scripts/code-cli.bat +++ b/scripts/code-cli.bat @@ -29,7 +29,7 @@ set ELECTRON_ENABLE_LOGGING=1 set ELECTRON_ENABLE_STACK_DUMPING=1 :: Launch Code -%CODE% --inspect=5874 out\cli.js . %* +%CODE% --debug=5874 out\cli.js . %* popd endlocal diff --git a/scripts/code-cli.sh b/scripts/code-cli.sh index ba2121d9bb9..89e518322fc 100755 --- a/scripts/code-cli.sh +++ b/scripts/code-cli.sh @@ -32,7 +32,7 @@ function code() { VSCODE_DEV=1 \ ELECTRON_ENABLE_LOGGING=1 \ ELECTRON_ENABLE_STACK_DUMPING=1 \ - "$CODE" --inspect=5874 "$ROOT/out/cli.js" . "$@" + "$CODE" --debug=5874 "$ROOT/out/cli.js" . "$@" } code "$@" diff --git a/scripts/code.sh b/scripts/code.sh index 26332faea6c..f6d103ceda5 100755 --- a/scripts/code.sh +++ b/scripts/code.sh @@ -3,10 +3,6 @@ if [[ "$OSTYPE" == "darwin"* ]]; then realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } ROOT=$(dirname "$(dirname "$(realpath "$0")")") - - # On Linux with Electron 2.0.x running out of a VM causes - # a freeze so we only enable this flag on macOS - export ELECTRON_ENABLE_LOGGING=1 else ROOT=$(dirname "$(dirname "$(readlink -f $0)")") fi @@ -44,6 +40,7 @@ function code() { export NODE_ENV=development export VSCODE_DEV=1 export VSCODE_CLI=1 + export ELECTRON_ENABLE_LOGGING=1 export ELECTRON_ENABLE_STACK_DUMPING=1 # Launch Code diff --git a/scripts/test.sh b/scripts/test.sh index ac96627846f..d88a28c5e2d 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -4,10 +4,6 @@ if [[ "$OSTYPE" == "darwin"* ]]; then realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } ROOT=$(dirname $(dirname $(realpath "$0"))) - - # On Linux with Electron 2.0.x running out of a VM causes - # a freeze so we only enable this flag on macOS - export ELECTRON_ENABLE_LOGGING=1 else ROOT=$(dirname $(dirname $(readlink -f $0))) fi @@ -29,6 +25,7 @@ test -d node_modules || yarn node build/lib/electron.js || ./node_modules/.bin/gulp electron # Unit Tests +export ELECTRON_ENABLE_LOGGING=1 if [[ "$OSTYPE" == "darwin"* ]]; then cd $ROOT ; ulimit -n 4096 ; \ "$CODE" \ diff --git a/src/typings/electron.d.ts b/src/typings/electron.d.ts index 4b6644aff88..daf41dbc736 100644 --- a/src/typings/electron.d.ts +++ b/src/typings/electron.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Electron 2.0.0-beta.2 +// Type definitions for Electron 1.7.9 // Project: http://electron.atom.io/ // Definitions by: The Electron Team <https://github.com/electron/electron> // Definitions: https://github.com/electron/electron-typescript-definitions @@ -58,7 +58,6 @@ declare namespace Electron { dialog: Dialog; DownloadItem: typeof DownloadItem; globalShortcut: GlobalShortcut; - inAppPurchase: InAppPurchase; IncomingMessage: typeof IncomingMessage; ipcMain: IpcMain; Menu: typeof Menu; @@ -95,7 +94,6 @@ declare namespace Electron { const desktopCapturer: DesktopCapturer; const dialog: Dialog; const globalShortcut: GlobalShortcut; - const inAppPurchase: InAppPurchase; const ipcMain: IpcMain; const ipcRenderer: IpcRenderer; type nativeImage = NativeImage; @@ -159,46 +157,6 @@ declare namespace Electron { hasVisibleWindows: boolean) => void): this; removeListener(event: 'activate', listener: (event: Event, hasVisibleWindows: boolean) => void): this; - /** - * Emitted during Handoff after an activity from this device was successfully - * resumed on another one. - */ - on(event: 'activity-was-continued', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - once(event: 'activity-was-continued', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - addListener(event: 'activity-was-continued', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - removeListener(event: 'activity-was-continued', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; /** * Emitted before the application starts closing its windows. Calling * event.preventDefault() will prevent the default behaviour, which is terminating @@ -328,46 +286,6 @@ declare namespace Electron { * Contains app-specific state stored by the activity on another device. */ userInfo: any) => void): this; - /** - * Emitted during Handoff when an activity from a different device fails to be - * resumed. - */ - on(event: 'continue-activity-error', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * A string with the error's localized description. - */ - error: string) => void): this; - once(event: 'continue-activity-error', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * A string with the error's localized description. - */ - error: string) => void): this; - addListener(event: 'continue-activity-error', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * A string with the error's localized description. - */ - error: string) => void): this; - removeListener(event: 'continue-activity-error', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * A string with the error's localized description. - */ - error: string) => void): this; /** * Emitted when the gpu process crashes or is killed. */ @@ -492,49 +410,6 @@ declare namespace Electron { url: string, certificateList: Certificate[], callback: (certificate?: Certificate) => void) => void): this; - /** - * Emitted when Handoff is about to be resumed on another device. If you need to - * update the state to be transferred, you should call event.preventDefault() - * immediately, construct a new userInfo dictionary and call - * app.updateCurrentActiviy() in a timely manner. Otherwise the operation will fail - * and continue-activity-error will be called. - */ - on(event: 'update-activity-state', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - once(event: 'update-activity-state', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - addListener(event: 'update-activity-state', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; - removeListener(event: 'update-activity-state', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string, - /** - * Contains app-specific state stored by the activity. - */ - userInfo: any) => void): this; /** * Emitted when a new webContents is created. */ @@ -546,31 +421,6 @@ declare namespace Electron { webContents: WebContents) => void): this; removeListener(event: 'web-contents-created', listener: (event: Event, webContents: WebContents) => void): this; - /** - * Emitted during Handoff before an activity from a different device wants to be - * resumed. You should call event.preventDefault() if you want to handle this - * event. - */ - on(event: 'will-continue-activity', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string) => void): this; - once(event: 'will-continue-activity', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string) => void): this; - addListener(event: 'will-continue-activity', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string) => void): this; - removeListener(event: 'will-continue-activity', listener: (event: Event, - /** - * A string identifying the activity. Maps to . - */ - type: string) => void): this; /** * Emitted when the application has finished basic startup. On Windows and Linux, * the will-finish-launching event is the same as the ready event; on macOS, this @@ -632,7 +482,7 @@ declare namespace Electron { */ enableMixedSandbox(): void; /** - * Exits immediately with exitCode. exitCode defaults to 0. All windows will be + * Exits immediately with exitCode. exitCode defaults to 0. All windows will be * closed immediately without asking user and the before-quit and will-quit events * will not be emitted. */ @@ -642,6 +492,7 @@ declare namespace Electron { * the active app. On Windows, focuses on the application's first window. */ focus(): void; + getAppMemoryInfo(): ProcessMetric[]; getAppMetrics(): ProcessMetric[]; getAppPath(): string; getBadgeCount(): number; @@ -650,12 +501,12 @@ declare namespace Electron { * Fetches a path's associated icon. On Windows, there a 2 kinds of icons: On Linux * and macOS, icons depend on the application associated with file mime type. */ - getFileIcon(path: string, callback: (error: Error, icon: NativeImage) => void): void; + getFileIcon(path: string, options: FileIconOptions, callback: (error: Error, icon: NativeImage) => void): void; /** * Fetches a path's associated icon. On Windows, there a 2 kinds of icons: On Linux * and macOS, icons depend on the application associated with file mime type. */ - getFileIcon(path: string, options: FileIconOptions, callback: (error: Error, icon: NativeImage) => void): void; + getFileIcon(path: string, callback: (error: Error, icon: NativeImage) => void): void; getGPUFeatureStatus(): GPUFeatureStatus; getJumpListSettings(): JumpListSettings; /** @@ -666,7 +517,8 @@ declare namespace Electron { getLocale(): string; /** * If you provided path and args options to app.setLoginItemSettings then you need - * to pass the same arguments here for openAtLogin to be set correctly. + * to pass the same arguments here for openAtLogin to be set correctly. Note: This + * API has no effect on MAS builds. */ getLoginItemSettings(options?: LoginItemSettingsOptions): LoginItemSettings; /** @@ -692,10 +544,6 @@ declare namespace Electron { * net_error_list. */ importCertificate(options: ImportCertificateOptions, callback: (result: number) => void): void; - /** - * Invalidates the current Handoff user activity. - */ - invalidateCurrentActivity(type: string): void; isAccessibilitySupportEnabled(): boolean; /** * This method checks if the current executable is the default handler for a @@ -707,7 +555,6 @@ declare namespace Electron { * the Windows Registry and LSCopyDefaultHandlerForURLScheme internally. */ isDefaultProtocolClient(protocol: string, path?: string, args?: string[]): boolean; - isInApplicationsFolder(): boolean; isReady(): boolean; isUnityRunning(): boolean; /** @@ -731,15 +578,6 @@ declare namespace Electron { * instance starts: */ makeSingleInstance(callback: (argv: string[], workingDirectory: string) => void): boolean; - /** - * No confirmation dialog will be presented by default, if you wish to allow the - * user to confirm the operation you may do so using the dialog API. NOTE: This - * method throws errors if anything other than the user causes the move to fail. - * For instance if the user cancels the authorization dialog this method returns - * false. If we fail to perform the copy then this method will throw an error. The - * message in the error should be informative and tell you exactly what went wrong - */ - moveToApplicationsFolder(): boolean; /** * Try to close all windows. The before-quit event will be emitted first. If all * windows are successfully closed, the will-quit event will be emitted and by @@ -777,15 +615,6 @@ declare namespace Electron { * .plist file. See the Apple docs for more details. */ setAboutPanelOptions(options: AboutPanelOptionsOptions): void; - /** - * Manually enables Chrome's accessibility support, allowing to expose - * accessibility switch to users in application settings. - * https://www.chromium.org/developers/design-documents/accessibility for more - * details. Disabled by default. Note: Rendering accessibility tree can - * significantly affect the performance of your app. It should not be enabled by - * default. - */ - setAccessibilitySupportEnabled(enabled: boolean): void; /** * Changes the Application User Model ID to id. */ @@ -831,7 +660,8 @@ declare namespace Electron { /** * Set the app's login item settings. To work with Electron's autoUpdater on * Windows, which uses Squirrel, you'll want to set the launch path to Update.exe, - * and pass arguments that specify your application name. For example: + * and pass arguments that specify your application name. For example: Note: This + * API has no effect on MAS builds. */ setLoginItemSettings(settings: Settings): void; /** @@ -864,18 +694,6 @@ declare namespace Electron { * them. */ show(): void; - /** - * Start accessing a security scoped resource. With this method electron - * applications that are packaged for the Mac App Store may reach outside their - * sandbox to access files chosen by the user. See Apple's documentation for a - * description of how this system works. - */ - startAccessingSecurityScopedResource(bookmarkData: string): Function; - /** - * Updates the current activity if its type matches type, merging the entries from - * userInfo into its current userInfo dictionary. - */ - updateCurrentActivity(type: string, userInfo: any): void; commandLine: CommandLine; dock: Dock; } @@ -945,18 +763,16 @@ declare namespace Electron { getFeedURL(): string; /** * Restarts the app and installs the update after it has been downloaded. It should - * only be called after update-downloaded has been emitted. Under the hood calling - * autoUpdater.quitAndInstall() will close all application windows first, and - * automatically call app.quit() after all windows have been closed. Note: If the - * application is quit without calling this API after the update-downloaded event - * has been emitted, the application will still be replaced by the updated one on - * the next run. + * only be called after update-downloaded has been emitted. Note: + * autoUpdater.quitAndInstall() will close all application windows first and only + * emit before-quit event on app after that. This is different from the normal quit + * event sequence. */ quitAndInstall(): void; /** * Sets the url and initialize the auto updater. */ - setFeedURL(options: FeedURLOptions): void; + setFeedURL(url: string, requestHeaders?: any): void; } interface BluetoothDevice { @@ -973,8 +789,6 @@ declare namespace Electron { constructor(options?: BrowserViewConstructorOptions); static fromId(id: number): BrowserView; - static fromWebContents(webContents: WebContents): BrowserView | null; - static getAllViews(): BrowserView[]; setAutoResize(options: AutoResizeOptions): void; setBackgroundColor(color: string): void; /** @@ -1017,11 +831,7 @@ declare namespace Electron { * cancel the close. Usually you would want to use the beforeunload handler to * decide whether the window should be closed, which will also be called when the * window is reloaded. In Electron, returning any value other than undefined would - * cancel the close. For example: Note: There is a subtle difference between the - * behaviors of window.onbeforeunload = handler and - * window.addEventListener('beforeunload', handler). It is recommended to always - * set the event.returnValue explicitly, instead of just returning a value, as the - * former works more consistently within Electron. + * cancel the close. For example: */ on(event: 'close', listener: (event: Event) => void): this; once(event: 'close', listener: (event: Event) => void): this; @@ -1246,7 +1056,6 @@ declare namespace Electron { * This API cannot be called before the ready event of the app module is emitted. */ static addExtension(path: string): void; - static fromBrowserView(browserView: BrowserView): BrowserWindow | null; static fromId(id: number): BrowserWindow; static fromWebContents(webContents: WebContents): BrowserWindow; static getAllWindows(): BrowserWindow[]; @@ -1271,10 +1080,6 @@ declare namespace Electron { * ready event of the app module is emitted. */ static removeExtension(name: string): void; - /** - * Adds a window as a tab on this window, after the tab for the window instance. - */ - addTabbedWindow(browserWindow: BrowserWindow): void; /** * Removes focus from the window. */ @@ -1318,11 +1123,6 @@ declare namespace Electron { focus(): void; focusOnWebView(): void; getBounds(): Rectangle; - /** - * Note: The BrowserView API is currently experimental and may change or be removed - * in future Electron releases. - */ - getBrowserView(): BrowserView | null; getChildWindows(): BrowserWindow[]; getContentBounds(): Rectangle; getContentSize(): number[]; @@ -1333,7 +1133,6 @@ declare namespace Electron { * (unsigned long) on Linux. */ getNativeWindowHandle(): Buffer; - getOpacity(): number; getParentWindow(): BrowserWindow; getPosition(): number[]; getRepresentedFilename(): string; @@ -1385,18 +1184,12 @@ declare namespace Electron { */ isMovable(): boolean; isResizable(): boolean; - isSimpleFullScreen(): boolean; isVisible(): boolean; /** * Note: This API always returns false on Windows. */ isVisibleOnAllWorkspaces(): boolean; isWindowMessageHooked(message: number): boolean; - /** - * Same as webContents.loadFile, filePath should be a path to an HTML file relative - * to the root of your application. See the webContents docs for more information. - */ - loadFile(filePath: string): void; /** * Same as webContents.loadURL(url[, options]). The url can be a remote address * (e.g. http://) or a path to a local HTML file using the file:// protocol. To @@ -1410,21 +1203,11 @@ declare namespace Electron { * being displayed already. */ maximize(): void; - /** - * Merges all windows into one window with multiple tabs when native tabs are - * enabled and there is more than one open window. - */ - mergeAllWindows(): void; /** * Minimizes the window. On some platforms the minimized window will be shown in * the Dock. */ minimize(): void; - /** - * Moves the current tab into a new window if native tabs are enabled and there is - * more than one tab in the current window. - */ - moveTabToNewWindow(): void; /** * Uses Quick Look to preview a file at a given path. */ @@ -1437,16 +1220,6 @@ declare namespace Electron { * Restores the window from minimized state to its previous state. */ restore(): void; - /** - * Selects the next tab when native tabs are enabled and there are other tabs in - * the window. - */ - selectNextTab(): void; - /** - * Selects the previous tab when native tabs are enabled and there are other tabs - * in the window. - */ - selectPreviousTab(): void; /** * Sets whether the window should show always on top of other windows. After * setting this, the window is still a normal window, not a toolbox window which @@ -1488,6 +1261,10 @@ declare namespace Electron { * Resizes and moves the window to the supplied bounds */ setBounds(bounds: Rectangle, animate?: boolean): void; + /** + * Note: The BrowserView API is currently experimental and may change or be removed + * in future Electron releases. + */ setBrowserView(browserView: BrowserView): void; /** * Sets whether the window can be manually closed by user. On Linux does nothing. @@ -1513,10 +1290,6 @@ declare namespace Electron { * bar will become gray when set to true. */ setDocumentEdited(edited: boolean): void; - /** - * Disable or enable the window. - */ - setEnabled(enable: boolean): void; /** * Changes whether the window can be focused. */ @@ -1543,7 +1316,7 @@ declare namespace Electron { * window will be passed to the window below this window, but if this window has * focus, it will still receive keyboard events. */ - setIgnoreMouseEvents(ignore: boolean, options?: IgnoreMouseEventsOptions): void; + setIgnoreMouseEvents(ignore: boolean): void; /** * Enters or leaves the kiosk mode. */ @@ -1580,10 +1353,6 @@ declare namespace Electron { * Sets whether the window can be moved by user. On Linux does nothing. */ setMovable(movable: boolean): void; - /** - * Sets the opacity of the window. On Linux does nothing. - */ - setOpacity(opacity: number): void; /** * Sets a 16 x 16 pixel overlay onto the current taskbar icon, usually used to * convey some sort of application status or to passively notify the user. @@ -1624,11 +1393,6 @@ declare namespace Electron { * HTML-rendered toolbar. For example: */ setSheetOffset(offsetY: number, offsetX?: number): void; - /** - * Enters or leaves simple fullscreen mode. Simple fullscreen mode emulates the - * native fullscreen behavior found in versions of Mac OS X prior to Lion (10.7). - */ - setSimpleFullScreen(flag: boolean): void; /** * Resizes the window to width and height. */ @@ -1692,11 +1456,6 @@ declare namespace Electron { * Shows the window but doesn't focus on it. */ showInactive(): void; - /** - * Toggles the visibility of the tab bar if native tabs are enabled and there is - * only one tab in the current window. - */ - toggleTabBar(): void; /** * Unhooks all of the window messages. */ @@ -1930,7 +1689,7 @@ declare namespace Electron { * An object representing the HTTP response message. */ response: IncomingMessage) => void): this; - constructor(options: 'method' | 'url' | 'session' | 'partition' | 'protocol' | 'host' | 'hostname' | 'port' | 'path' | 'redirect'); + constructor(options: any | string); /** * Cancels an ongoing HTTP transaction. If the request has already emitted the * close event, the abort operation will have no effect. Otherwise an ongoing event @@ -2158,7 +1917,7 @@ declare namespace Electron { */ on(event: 'changed', listener: (event: Event, /** - * The cookie that was changed. + * The cookie that was changed */ cookie: Cookie, /** @@ -2171,7 +1930,7 @@ declare namespace Electron { removed: boolean) => void): this; once(event: 'changed', listener: (event: Event, /** - * The cookie that was changed. + * The cookie that was changed */ cookie: Cookie, /** @@ -2184,7 +1943,7 @@ declare namespace Electron { removed: boolean) => void): this; addListener(event: 'changed', listener: (event: Event, /** - * The cookie that was changed. + * The cookie that was changed */ cookie: Cookie, /** @@ -2197,7 +1956,7 @@ declare namespace Electron { removed: boolean) => void): this; removeListener(event: 'changed', listener: (event: Event, /** - * The cookie that was changed. + * The cookie that was changed */ cookie: Cookie, /** @@ -2213,8 +1972,8 @@ declare namespace Electron { */ flushStore(callback: Function): void; /** - * Sends a request to get all cookies matching filter, callback will be called with - * callback(error, cookies) on complete. + * Sends a request to get all cookies matching details, callback will be called + * with callback(error, cookies) on complete. */ get(filter: Filter, callback: (error: Error, cookies: Cookie[]) => void): void; /** @@ -2235,7 +1994,7 @@ declare namespace Electron { /** * The number of average idle cpu wakeups per second since the last call to - * getCPUUsage. First call returns 0. Will always return 0 on Windows. + * getCPUUsage. First call returns 0. */ idleWakeupsPerSecond: number; /** @@ -2248,31 +2007,19 @@ declare namespace Electron { // Docs: http://electron.atom.io/docs/api/structures/crash-report - date: Date; - id: string; + date: string; + ID: number; } interface CrashReporter extends EventEmitter { // Docs: http://electron.atom.io/docs/api/crash-reporter - /** - * Set an extra parameter to be sent with the crash report. The values specified - * here will be sent in addition to any values set via the extra option when start - * was called. This API is only available on macOS, if you need to add/update extra - * parameters on Linux and Windows after your first call to start you can call - * start again with the updated extra options. - */ - addExtraParameter(key: string, value: string): void; /** * Returns the date and ID of the last crash report. If no crash reports have been * sent or the crash reporter has not been started, null is returned. */ getLastCrashReport(): CrashReport; - /** - * See all of the current parameters being passed to the crash reporter. - */ - getParameters(): void; /** * Returns all uploaded crash reports. Each report contains the date and uploaded * ID. @@ -2283,10 +2030,13 @@ declare namespace Electron { */ getUploadToServer(): boolean; /** - * Remove a extra parameter from the current set of parameters so that it will not - * be sent with the crash report. + * Set an extra parameter to be sent with the crash report. The values specified + * here will be sent in addition to any values set via the extra option when start + * was called. This API is only available on macOS, if you need to add/update extra + * parameters on Linux and Windows after your first call to start you can call + * start again with the updated extra options. */ - removeExtraParameter(key: string): void; + setExtraParameter(key: string, value: string): void; /** * This would normally be controlled by user preferences. This has no effect if * called before start is called. Note: This API can only be called from the main @@ -2307,7 +2057,7 @@ declare namespace Electron { * well. This will start the process that will monitor and send the crash reports. * Replace submitURL, productName and crashesDirectory with appropriate values. * Note: If you need send additional/updated extra parameters after your first call - * start you can call addExtraParameter on macOS or call start again with the + * start you can call setExtraParameter on macOS or call start again with the * new/updated extra parameters on Linux and Windows. Note: On macOS, Electron uses * a new crashpad client for crash collection and reporting. If you want to enable * crash reporting, initializing crashpad from the main process using @@ -2475,7 +2225,7 @@ declare namespace Electron { /** * Displays a modal dialog that shows an error message. This API can be called * safely before the ready event the app module emits, it is usually used to report - * errors in early stage of startup. If called before the app readyevent on Linux, + * errors in early stage of startup. If called before the app readyevent on Linux, * the message will be emitted to stderr, and no GUI dialog will appear. */ showErrorBox(title: string, content: string): void; @@ -2503,11 +2253,11 @@ declare namespace Electron { * dots (e.g. 'png' is good but '.png' and '*.png' are bad). To show all files, use * the '*' wildcard (no other wildcard is supported). If a callback is passed, the * API call will be asynchronous and the result will be passed via - * callback(filenames). Note: On Windows and Linux an open dialog can not be both a + * callback(filenames) Note: On Windows and Linux an open dialog can not be both a * file selector and a directory selector, so if you set properties to ['openFile', * 'openDirectory'] on these platforms, a directory selector will be shown. */ - showOpenDialog(browserWindow: BrowserWindow, options: OpenDialogOptions, callback?: (filePaths: string[], bookmarks: string[]) => void): string[]; + showOpenDialog(browserWindow: BrowserWindow, options: OpenDialogOptions, callback?: (filePaths: string[]) => void): string[]; /** * The browserWindow argument allows the dialog to attach itself to a parent * window, making it modal. The filters specifies an array of file types that can @@ -2516,27 +2266,27 @@ declare namespace Electron { * dots (e.g. 'png' is good but '.png' and '*.png' are bad). To show all files, use * the '*' wildcard (no other wildcard is supported). If a callback is passed, the * API call will be asynchronous and the result will be passed via - * callback(filenames). Note: On Windows and Linux an open dialog can not be both a + * callback(filenames) Note: On Windows and Linux an open dialog can not be both a * file selector and a directory selector, so if you set properties to ['openFile', * 'openDirectory'] on these platforms, a directory selector will be shown. */ - showOpenDialog(options: OpenDialogOptions, callback?: (filePaths: string[], bookmarks: string[]) => void): string[]; + showOpenDialog(options: OpenDialogOptions, callback?: (filePaths: string[]) => void): string[]; /** * The browserWindow argument allows the dialog to attach itself to a parent * window, making it modal. The filters specifies an array of file types that can * be displayed, see dialog.showOpenDialog for an example. If a callback is passed, * the API call will be asynchronous and the result will be passed via - * callback(filename). + * callback(filename) */ - showSaveDialog(browserWindow: BrowserWindow, options: SaveDialogOptions, callback?: (filename: string, bookmark: string) => void): string; + showSaveDialog(browserWindow: BrowserWindow, options: SaveDialogOptions, callback?: (filename: string) => void): string; /** * The browserWindow argument allows the dialog to attach itself to a parent * window, making it modal. The filters specifies an array of file types that can * be displayed, see dialog.showOpenDialog for an example. If a callback is passed, * the API call will be asynchronous and the result will be passed via - * callback(filename). + * callback(filename) */ - showSaveDialog(options: SaveDialogOptions, callback?: (filename: string, bookmark: string) => void): string; + showSaveDialog(options: SaveDialogOptions, callback?: (filename: string) => void): string; } interface Display { @@ -2575,54 +2325,33 @@ declare namespace Electron { * download that can't be resumed. The state can be one of following: */ on(event: 'done', listener: (event: Event, - /** - * Can be `completed`, `cancelled` or `interrupted`. - */ - state: ('completed' | 'cancelled' | 'interrupted')) => void): this; + state: string) => void): this; once(event: 'done', listener: (event: Event, - /** - * Can be `completed`, `cancelled` or `interrupted`. - */ - state: ('completed' | 'cancelled' | 'interrupted')) => void): this; + state: string) => void): this; addListener(event: 'done', listener: (event: Event, - /** - * Can be `completed`, `cancelled` or `interrupted`. - */ - state: ('completed' | 'cancelled' | 'interrupted')) => void): this; + state: string) => void): this; removeListener(event: 'done', listener: (event: Event, - /** - * Can be `completed`, `cancelled` or `interrupted`. - */ - state: ('completed' | 'cancelled' | 'interrupted')) => void): this; + state: string) => void): this; /** * Emitted when the download has been updated and is not done. The state can be one * of following: */ on(event: 'updated', listener: (event: Event, - /** - * Can be `progressing` or `interrupted`. - */ - state: ('progressing' | 'interrupted')) => void): this; + state: string) => void): this; once(event: 'updated', listener: (event: Event, - /** - * Can be `progressing` or `interrupted`. - */ - state: ('progressing' | 'interrupted')) => void): this; + state: string) => void): this; addListener(event: 'updated', listener: (event: Event, - /** - * Can be `progressing` or `interrupted`. - */ - state: ('progressing' | 'interrupted')) => void): this; + state: string) => void): this; removeListener(event: 'updated', listener: (event: Event, - /** - * Can be `progressing` or `interrupted`. - */ - state: ('progressing' | 'interrupted')) => void): this; + state: string) => void): this; /** * Cancels the download operation. */ cancel(): void; - canResume(): boolean; + /** + * Resumes Boolean - Whether the download can resume. + */ + canResume(): void; getContentDisposition(): string; getETag(): string; /** @@ -2762,38 +2491,6 @@ declare namespace Electron { webgl2: string; } - interface InAppPurchase extends EventEmitter { - - // Docs: http://electron.atom.io/docs/api/in-app-purchase - - /** - * Emitted when one or more transactions have been updated. - */ - on(event: 'transactions-updated', listener: (event: Event, - /** - * Array of transactions. - */ - transactions: Transaction[]) => void): this; - once(event: 'transactions-updated', listener: (event: Event, - /** - * Array of transactions. - */ - transactions: Transaction[]) => void): this; - addListener(event: 'transactions-updated', listener: (event: Event, - /** - * Array of transactions. - */ - transactions: Transaction[]) => void): this; - removeListener(event: 'transactions-updated', listener: (event: Event, - /** - * Array of transactions. - */ - transactions: Transaction[]) => void): this; - canMakePayments(): boolean; - getReceiptURL(): string; - purchaseProduct(productID: string, quantity?: number, callback?: (isProductValid: boolean) => void): void; - } - class IncomingMessage extends EventEmitter { // Docs: http://electron.atom.io/docs/api/incoming-message @@ -2927,7 +2624,7 @@ declare namespace Electron { /** * Removes all listeners, or those of the specified channel. */ - removeAllListeners(channel: string): this; + removeAllListeners(channel?: string): this; /** * Removes the specified listener from the listener array for the specified * channel. @@ -2949,10 +2646,6 @@ declare namespace Electron { * renderer process, unless you know what you are doing you should never use it. */ sendSync(channel: string, ...args: any[]): any; - /** - * Sends a message to a window with windowid via channel. - */ - sendTo(windowId: number, channel: string, ...args: any[]): void; /** * Like ipcRenderer.send but the event will be sent to the <webview> element in the * host page instead of the main process. @@ -3067,20 +2760,6 @@ declare namespace Electron { // Docs: http://electron.atom.io/docs/api/menu - /** - * Emitted when a popup is closed either manually or with menu.closePopup(). - */ - on(event: 'menu-will-close', listener: (event: Event) => void): this; - once(event: 'menu-will-close', listener: (event: Event) => void): this; - addListener(event: 'menu-will-close', listener: (event: Event) => void): this; - removeListener(event: 'menu-will-close', listener: (event: Event) => void): this; - /** - * Emitted when menu.popup() is called. - */ - on(event: 'menu-will-show', listener: (event: Event) => void): this; - once(event: 'menu-will-show', listener: (event: Event) => void): this; - addListener(event: 'menu-will-show', listener: (event: Event) => void): this; - removeListener(event: 'menu-will-show', listener: (event: Event) => void): this; constructor(); /** * Generally, the template is just an array of options for constructing a MenuItem. @@ -3093,7 +2772,7 @@ declare namespace Electron { * Note: The returned Menu instance doesn't support dynamic addition or removal of * menu items. Instance properties can still be dynamically modified. */ - static getApplicationMenu(): Menu | null; + static getApplicationMenu(): Menu; /** * Sends the action to the first responder of application. This is used for * emulating default macOS menu behaviors. Usually you would just use the role @@ -3107,7 +2786,7 @@ declare namespace Electron { * Windows and Linux but has no effect on macOS. Note: This API has to be called * after the ready event of app module. */ - static setApplicationMenu(menu: Menu | null): void; + static setApplicationMenu(menu: Menu): void; /** * Appends the menuItem to the menu. */ @@ -3116,15 +2795,14 @@ declare namespace Electron { * Closes the context menu in the browserWindow. */ closePopup(browserWindow?: BrowserWindow): void; - getMenuItemById(id: string): MenuItem; /** * Inserts the menuItem to the pos position of the menu. */ insert(pos: number, menuItem: MenuItem): void; /** - * Pops up this menu as a context menu in the BrowserWindow. + * Pops up this menu as a context menu in the browserWindow. */ - popup(options: PopupOptions): void; + popup(browserWindow?: BrowserWindow, options?: PopupOptions): void; items: MenuItem[]; } @@ -3170,13 +2848,6 @@ declare namespace Electron { * Creates a new NativeImage instance from dataURL. */ static createFromDataURL(dataURL: string): NativeImage; - /** - * Creates a new NativeImage instance from the NSImage that maps to the given image - * name. See NSImageName for a list of possible values. The hslShift is applied to - * the image with the following rules This means that [-1, 0, 1] will make the - * image completely white and [-1, 1, 0] will make the image completely black. - */ - static createFromNamedImage(imageName: string, hslShift: number[]): NativeImage; /** * Creates a new NativeImage instance from a file located at path. This method * returns an empty image if the path does not exist, cannot be read, or is not a @@ -3240,22 +2911,22 @@ declare namespace Electron { on(event: 'action', listener: (event: Event, /** - * The index of the action that was activated. + * The index of the action that was activated */ index: number) => void): this; once(event: 'action', listener: (event: Event, /** - * The index of the action that was activated. + * The index of the action that was activated */ index: number) => void): this; addListener(event: 'action', listener: (event: Event, /** - * The index of the action that was activated. + * The index of the action that was activated */ index: number) => void): this; removeListener(event: 'action', listener: (event: Event, /** - * The index of the action that was activated. + * The index of the action that was activated */ index: number) => void): this; /** @@ -3267,7 +2938,7 @@ declare namespace Electron { removeListener(event: 'click', listener: (event: Event) => void): this; /** * Emitted when the notification is closed by manual intervention from the user. - * This event is not guaranteed to be emitted in all cases where the notification + * This event is not guarunteed to be emitted in all cases where the notification * is closed. */ on(event: 'close', listener: (event: Event) => void): this; @@ -3280,22 +2951,22 @@ declare namespace Electron { */ on(event: 'reply', listener: (event: Event, /** - * The string the user entered into the inline reply field. + * The string the user entered into the inline reply field */ reply: string) => void): this; once(event: 'reply', listener: (event: Event, /** - * The string the user entered into the inline reply field. + * The string the user entered into the inline reply field */ reply: string) => void): this; addListener(event: 'reply', listener: (event: Event, /** - * The string the user entered into the inline reply field. + * The string the user entered into the inline reply field */ reply: string) => void): this; removeListener(event: 'reply', listener: (event: Event, /** - * The string the user entered into the inline reply field. + * The string the user entered into the inline reply field */ reply: string) => void): this; /** @@ -3309,17 +2980,11 @@ declare namespace Electron { removeListener(event: 'show', listener: (event: Event) => void): this; constructor(options: NotificationConstructorOptions); static isSupported(): boolean; - /** - * Dismisses the notification. - */ - close(): void; /** * Immediately shows the notification to the user, please note this means unlike * the HTML5 Notification implementation, simply instantiating a new Notification * does not immediately show it to the user, you need to call this method before - * the OS will display it. If the notification has been shown before, this method - * will dismiss the previously shown notification and create a new one with - * identical properties. + * the OS will display it. */ show(): void; } @@ -3371,16 +3036,6 @@ declare namespace Electron { once(event: 'resume', listener: Function): this; addListener(event: 'resume', listener: Function): this; removeListener(event: 'resume', listener: Function): this; - /** - * Emitted when the system is about to reboot or shut down. If the event handler - * invokes e.preventDefault(), Electron will attempt to delay system shutdown in - * order for the app to exit cleanly. If e.preventDefault() is called, the app - * should exit as soon as possible by calling something like app.quit(). - */ - on(event: 'shutdown', listener: Function): this; - once(event: 'shutdown', listener: Function): this; - addListener(event: 'shutdown', listener: Function): this; - removeListener(event: 'shutdown', listener: Function): this; /** * Emitted when the system is suspending. */ @@ -3463,11 +3118,6 @@ declare namespace Electron { * sends a new HTTP request as a response. */ interceptHttpProtocol(scheme: string, handler: (request: InterceptHttpProtocolRequest, callback: (redirectRequest: RedirectRequest) => void) => void, completion?: (error: Error) => void): void; - /** - * Same as protocol.registerStreamProtocol, except that it replaces an existing - * protocol handler. - */ - interceptStreamProtocol(scheme: string, handler: (request: InterceptStreamProtocolRequest, callback: (stream?: ReadableStream | StreamProtocolResponse) => void) => void, completion?: (error: Error) => void): void; /** * Intercepts scheme protocol and uses handler as the protocol's new handler which * sends a String as a response. @@ -3528,15 +3178,6 @@ declare namespace Electron { * the ready event of the app module gets emitted. */ registerStandardSchemes(schemes: string[], options?: RegisterStandardSchemesOptions): void; - /** - * Registers a protocol of scheme that will send a Readable as a response. The - * usage is similar to the other register{Any}Protocol, except that the callback - * should be called with either a Readable object or an object that has the data, - * statusCode, and headers properties. Example: It is possible to pass any object - * that implements the readable stream API (emits data/end/error events). For - * example, here's how a file could be returned: - */ - registerStreamProtocol(scheme: string, handler: (request: RegisterStreamProtocolRequest, callback: (stream?: ReadableStream | StreamProtocolResponse) => void) => void, completion?: (error: Error) => void): void; /** * Registers a protocol of scheme that will send a String as a response. The usage * is the same with registerFileProtocol, except that the callback should be called @@ -3739,7 +3380,7 @@ declare namespace Electron { * options, you have to ensure the Session with the partition has never been used * before. There is no way to change the options of an existing Session object. */ - static fromPartition(partition: string, options?: FromPartitionOptions): Session; + static fromPartition(partition: string, options: FromPartitionOptions): Session; /** * A Session object, the default session object of the app. */ @@ -3803,12 +3444,11 @@ declare namespace Electron { * Writes any unwritten DOMStorage data to disk. */ flushStorageData(): void; - getBlobData(identifier: string, callback: (result: Buffer) => void): void; + getBlobData(identifier: string, callback: (result: Buffer) => void): Blob; /** * Callback is invoked with the session's current cache size. */ getCacheSize(callback: (size: number) => void): void; - getPreloads(): string[]; getUserAgent(): string; /** * Resolves the proxy information for url. The callback will be called with @@ -3831,14 +3471,9 @@ declare namespace Electron { /** * Sets the handler which can be used to respond to permission requests for the * session. Calling callback(true) will allow the permission and callback(false) - * will reject it. To clear the handler, call setPermissionRequestHandler(null). + * will reject it. */ - setPermissionRequestHandler(handler: (webContents: WebContents, permission: string, callback: (permissionGranted: boolean) => void, details: PermissionRequestHandlerDetails) => void | null): void; - /** - * Adds scripts that will be executed on ALL web contents that are associated with - * this session just before normal preload scripts run. - */ - setPreloads(preloads: string[]): void; + setPermissionRequestHandler(handler: (webContents: WebContents, permission: string, callback: (permissionGranted: boolean) => void) => void): void; /** * Sets the proxy settings. When pacScript and proxyRules are provided together, * the proxyRules option is ignored and pacScript configuration is applied. The @@ -3943,24 +3578,6 @@ declare namespace Electron { width: number; } - interface StreamProtocolResponse { - - // Docs: http://electron.atom.io/docs/api/structures/stream-protocol-response - - /** - * A Node.js readable stream representing the response body - */ - data: ReadableStream; - /** - * An object containing the response headers - */ - headers: Headers; - /** - * The HTTP response code - */ - statusCode: number; - } - interface SystemPreferences extends EventEmitter { // Docs: http://electron.atom.io/docs/api/system-preferences @@ -4016,7 +3633,7 @@ declare namespace Electron { getAccentColor(): string; getColor(color: '3d-dark-shadow' | '3d-face' | '3d-highlight' | '3d-light' | '3d-shadow' | 'active-border' | 'active-caption' | 'active-caption-gradient' | 'app-workspace' | 'button-text' | 'caption-text' | 'desktop' | 'disabled-text' | 'highlight' | 'highlight-text' | 'hotlight' | 'inactive-border' | 'inactive-caption' | 'inactive-caption-gradient' | 'inactive-caption-text' | 'info-background' | 'info-text' | 'menu' | 'menu-highlight' | 'menubar' | 'menu-text' | 'scrollbar' | 'window' | 'window-frame' | 'window-text'): string; /** - * Some popular key and types are: + * This API uses NSUserDefaults on macOS. Some popular key and types are: */ getUserDefault(key: string, type: 'string' | 'boolean' | 'integer' | 'float' | 'double' | 'url' | 'array' | 'dictionary'): any; /** @@ -4038,22 +3655,14 @@ declare namespace Electron { */ postNotification(event: string, userInfo: any): void; /** - * Add the specified defaults to your application's NSUserDefaults. - */ - registerDefaults(defaults: any): void; - /** - * Removes the key in NSUserDefaults. This can be used to restore the default or - * global value of a key previously set with setUserDefault. - */ - removeUserDefault(key: string): void; - /** - * Set the value of key in NSUserDefaults. Note that type should match actual type - * of value. An exception is thrown if they don't. Some popular key and types are: + * Set the value of key in system preferences. Note that type should match actual + * type of value. An exception is thrown if they don't. This API uses + * NSUserDefaults on macOS. Some popular key and types are: */ setUserDefault(key: string, type: string, value: string): void; /** * Same as subscribeNotification, but uses NSNotificationCenter for local defaults. - * This is necessary for events such as NSUserDefaultsDidChangeNotification. + * This is necessary for events such as NSUserDefaultsDidChangeNotification */ subscribeLocalNotification(event: string, callback: (event: string, userInfo: any) => void): void; /** @@ -4221,7 +3830,7 @@ declare namespace Electron { // Docs: http://electron.atom.io/docs/api/touch-bar constructor(options: TouchBarConstructorOptions); - escapeItem: (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer | null); + escapeItem: any; static TouchBarButton: typeof TouchBarButton; static TouchBarColorPicker: typeof TouchBarColorPicker; static TouchBarGroup: typeof TouchBarGroup; @@ -4233,23 +3842,6 @@ declare namespace Electron { static TouchBarSpacer: typeof TouchBarSpacer; } - interface Transaction { - - // Docs: http://electron.atom.io/docs/api/structures/transaction - - errorCode: number; - errorMessage: string; - originalTransactionIdentifier: string; - payment: Payment; - transactionDate: string; - transactionIdentifier: string; - /** - * The transaction sate ("purchasing", "purchased", "failed", "restored", or - * "deferred") - */ - transactionState: string; - } - class Tray extends EventEmitter { // Docs: http://electron.atom.io/docs/api/tray @@ -4281,61 +3873,45 @@ declare namespace Electron { */ on(event: 'click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ - bounds: Rectangle, - /** - * The position of the event. - */ - position: Point) => void): this; + bounds: Rectangle) => void): this; once(event: 'click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ - bounds: Rectangle, - /** - * The position of the event. - */ - position: Point) => void): this; + bounds: Rectangle) => void): this; addListener(event: 'click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ - bounds: Rectangle, - /** - * The position of the event. - */ - position: Point) => void): this; + bounds: Rectangle) => void): this; removeListener(event: 'click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ - bounds: Rectangle, - /** - * The position of the event. - */ - position: Point) => void): this; + bounds: Rectangle) => void): this; /** * Emitted when the tray icon is double clicked. */ on(event: 'double-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; once(event: 'double-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; addListener(event: 'double-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; removeListener(event: 'double-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; /** @@ -4394,22 +3970,22 @@ declare namespace Electron { */ on(event: 'drop-text', listener: (event: Event, /** - * the dropped text string. + * the dropped text string */ text: string) => void): this; once(event: 'drop-text', listener: (event: Event, /** - * the dropped text string. + * the dropped text string */ text: string) => void): this; addListener(event: 'drop-text', listener: (event: Event, /** - * the dropped text string. + * the dropped text string */ text: string) => void): this; removeListener(event: 'drop-text', listener: (event: Event, /** - * the dropped text string. + * the dropped text string */ text: string) => void): this; /** @@ -4417,22 +3993,22 @@ declare namespace Electron { */ on(event: 'mouse-enter', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; once(event: 'mouse-enter', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; addListener(event: 'mouse-enter', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; removeListener(event: 'mouse-enter', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; /** @@ -4440,45 +4016,22 @@ declare namespace Electron { */ on(event: 'mouse-leave', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; once(event: 'mouse-leave', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; addListener(event: 'mouse-leave', listener: (event: Event, /** - * The position of the event. + * The position of the event */ position: Point) => void): this; removeListener(event: 'mouse-leave', listener: (event: Event, /** - * The position of the event. - */ - position: Point) => void): this; - /** - * Emitted when the mouse moves in the tray icon. - */ - on(event: 'mouse-move', listener: (event: Event, - /** - * The position of the event. - */ - position: Point) => void): this; - once(event: 'mouse-move', listener: (event: Event, - /** - * The position of the event. - */ - position: Point) => void): this; - addListener(event: 'mouse-move', listener: (event: Event, - /** - * The position of the event. - */ - position: Point) => void): this; - removeListener(event: 'mouse-move', listener: (event: Event, - /** - * The position of the event. + * The position of the event */ position: Point) => void): this; /** @@ -4486,22 +4039,22 @@ declare namespace Electron { */ on(event: 'right-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; once(event: 'right-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; addListener(event: 'right-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; removeListener(event: 'right-click', listener: (event: Event, /** - * The bounds of tray icon. + * The bounds of tray icon */ bounds: Rectangle) => void): this; constructor(image: NativeImage | string); @@ -4543,8 +4096,7 @@ declare namespace Electron { */ setPressedImage(image: NativeImage): void; /** - * Sets the title displayed aside of the tray icon in the status bar (Support ANSI - * colors). + * Sets the title displayed aside of the tray icon in the status bar. */ setTitle(title: string): void; /** @@ -4598,7 +4150,7 @@ declare namespace Electron { */ length: number; /** - * Last Modification time in number of seconds since the UNIX epoch. + * Last Modification time in number of seconds sine the UNIX epoch. */ modificationTime: number; /** @@ -4624,7 +4176,7 @@ declare namespace Electron { */ length: number; /** - * Last Modification time in number of seconds since the UNIX epoch. + * Last Modification time in number of seconds sine the UNIX epoch. */ modificationTime: number; /** @@ -4665,22 +4217,22 @@ declare namespace Electron { */ on(event: 'before-input-event', listener: (event: Event, /** - * Input properties. + * Input properties */ input: Input) => void): this; once(event: 'before-input-event', listener: (event: Event, /** - * Input properties. + * Input properties */ input: Input) => void): this; addListener(event: 'before-input-event', listener: (event: Event, /** - * Input properties. + * Input properties */ input: Input) => void): this; removeListener(event: 'before-input-event', listener: (event: Event, /** - * Input properties. + * Input properties */ input: Input) => void): this; /** @@ -4690,7 +4242,7 @@ declare namespace Electron { on(event: 'certificate-error', listener: (event: Event, url: string, /** - * The error code. + * The error code */ error: string, certificate: Certificate, @@ -4698,7 +4250,7 @@ declare namespace Electron { once(event: 'certificate-error', listener: (event: Event, url: string, /** - * The error code. + * The error code */ error: string, certificate: Certificate, @@ -4706,7 +4258,7 @@ declare namespace Electron { addListener(event: 'certificate-error', listener: (event: Event, url: string, /** - * The error code. + * The error code */ error: string, certificate: Certificate, @@ -4714,31 +4266,11 @@ declare namespace Electron { removeListener(event: 'certificate-error', listener: (event: Event, url: string, /** - * The error code. + * The error code */ error: string, certificate: Certificate, callback: (isTrusted: boolean) => void) => void): this; - /** - * Emitted when the associated window logs a console message. Will not be emitted - * for windows with offscreen rendering enabled. - */ - on(event: 'console-message', listener: (level: number, - message: string, - line: number, - sourceId: string) => void): this; - once(event: 'console-message', listener: (level: number, - message: string, - line: number, - sourceId: string) => void): this; - addListener(event: 'console-message', listener: (level: number, - message: string, - line: number, - sourceId: string) => void): this; - removeListener(event: 'console-message', listener: (level: number, - message: string, - line: number, - sourceId: string) => void): this; /** * Emitted when there is a new context menu that needs to be handled. */ @@ -4768,69 +4300,69 @@ declare namespace Electron { * nwse-resize, col-resize, row-resize, m-panning, e-panning, n-panning, * ne-panning, nw-panning, s-panning, se-panning, sw-panning, w-panning, move, * vertical-text, cell, context-menu, alias, progress, nodrop, copy, none, - * not-allowed, zoom-in, zoom-out, grab, grabbing or custom. If the type parameter - * is custom, the image parameter will hold the custom cursor image in a - * NativeImage, and scale, size and hotspot will hold additional information about - * the custom cursor. + * not-allowed, zoom-in, zoom-out, grab, grabbing, custom. If the type parameter is + * custom, the image parameter will hold the custom cursor image in a NativeImage, + * and scale, size and hotspot will hold additional information about the custom + * cursor. */ on(event: 'cursor-changed', listener: (event: Event, type: string, image?: NativeImage, /** - * scaling factor for the custom cursor. + * scaling factor for the custom cursor */ scale?: number, /** - * the size of the `image`. + * the size of the `image` */ size?: Size, /** - * coordinates of the custom cursor's hotspot. + * coordinates of the custom cursor's hotspot */ hotspot?: Point) => void): this; once(event: 'cursor-changed', listener: (event: Event, type: string, image?: NativeImage, /** - * scaling factor for the custom cursor. + * scaling factor for the custom cursor */ scale?: number, /** - * the size of the `image`. + * the size of the `image` */ size?: Size, /** - * coordinates of the custom cursor's hotspot. + * coordinates of the custom cursor's hotspot */ hotspot?: Point) => void): this; addListener(event: 'cursor-changed', listener: (event: Event, type: string, image?: NativeImage, /** - * scaling factor for the custom cursor. + * scaling factor for the custom cursor */ scale?: number, /** - * the size of the `image`. + * the size of the `image` */ size?: Size, /** - * coordinates of the custom cursor's hotspot. + * coordinates of the custom cursor's hotspot */ hotspot?: Point) => void): this; removeListener(event: 'cursor-changed', listener: (event: Event, type: string, image?: NativeImage, /** - * scaling factor for the custom cursor. + * scaling factor for the custom cursor */ scale?: number, /** - * the size of the `image`. + * the size of the `image` */ size?: Size, /** - * coordinates of the custom cursor's hotspot. + * coordinates of the custom cursor's hotspot */ hotspot?: Point) => void): this; /** @@ -4868,53 +4400,14 @@ declare namespace Electron { once(event: 'devtools-reload-page', listener: Function): this; addListener(event: 'devtools-reload-page', listener: Function): this; removeListener(event: 'devtools-reload-page', listener: Function): this; - /** - * Emitted when a <webview> has been attached to this web contents. - */ - on(event: 'did-attach-webview', listener: (event: Event, - /** - * The guest web contents that is used by the `<webview>`. - */ - webContents: WebContents) => void): this; - once(event: 'did-attach-webview', listener: (event: Event, - /** - * The guest web contents that is used by the `<webview>`. - */ - webContents: WebContents) => void): this; - addListener(event: 'did-attach-webview', listener: (event: Event, - /** - * The guest web contents that is used by the `<webview>`. - */ - webContents: WebContents) => void): this; - removeListener(event: 'did-attach-webview', listener: (event: Event, - /** - * The guest web contents that is used by the `<webview>`. - */ - webContents: WebContents) => void): this; /** * Emitted when a page's theme color changes. This is usually due to encountering a * meta tag: */ - on(event: 'did-change-theme-color', listener: (event: Event, - /** - * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set. - */ - color: string | null) => void): this; - once(event: 'did-change-theme-color', listener: (event: Event, - /** - * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set. - */ - color: string | null) => void): this; - addListener(event: 'did-change-theme-color', listener: (event: Event, - /** - * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set. - */ - color: string | null) => void): this; - removeListener(event: 'did-change-theme-color', listener: (event: Event, - /** - * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set. - */ - color: string | null) => void): this; + on(event: 'did-change-theme-color', listener: Function): this; + once(event: 'did-change-theme-color', listener: Function): this; + addListener(event: 'did-change-theme-color', listener: Function): this; + removeListener(event: 'did-change-theme-color', listener: Function): this; /** * This event is like did-finish-load but emitted when the load failed or was * cancelled, e.g. window.stop() is invoked. The full list of error codes and their @@ -5150,7 +4643,7 @@ declare namespace Electron { */ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'save-to-disk' | 'other'), /** - * The options which will be used for creating the new . + * The options which will be used for creating the new `BrowserWindow`. */ options: any, /** @@ -5167,7 +4660,7 @@ declare namespace Electron { */ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'save-to-disk' | 'other'), /** - * The options which will be used for creating the new . + * The options which will be used for creating the new `BrowserWindow`. */ options: any, /** @@ -5184,7 +4677,7 @@ declare namespace Electron { */ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'save-to-disk' | 'other'), /** - * The options which will be used for creating the new . + * The options which will be used for creating the new `BrowserWindow`. */ options: any, /** @@ -5201,7 +4694,7 @@ declare namespace Electron { */ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'save-to-disk' | 'other'), /** - * The options which will be used for creating the new . + * The options which will be used for creating the new `BrowserWindow`. */ options: any, /** @@ -5214,22 +4707,22 @@ declare namespace Electron { */ on(event: 'page-favicon-updated', listener: (event: Event, /** - * Array of URLs. + * Array of URLs */ favicons: string[]) => void): this; once(event: 'page-favicon-updated', listener: (event: Event, /** - * Array of URLs. + * Array of URLs */ favicons: string[]) => void): this; addListener(event: 'page-favicon-updated', listener: (event: Event, /** - * Array of URLs. + * Array of URLs */ favicons: string[]) => void): this; removeListener(event: 'page-favicon-updated', listener: (event: Event, /** - * Array of URLs. + * Array of URLs */ favicons: string[]) => void): this; /** @@ -5278,8 +4771,8 @@ declare namespace Electron { /** * Emitted when bluetooth device needs to be selected on call to * navigator.bluetooth.requestDevice. To use navigator.bluetooth api webBluetooth - * should be enabled. If event.preventDefault is not called, first available device - * will be selected. callback should be called with deviceId to be selected, + * should be enabled. If event.preventDefault is not called, first available + * device will be selected. callback should be called with deviceId to be selected, * passing empty string to callback will cancel the request. */ on(event: 'select-bluetooth-device', listener: (event: Event, @@ -5442,13 +4935,13 @@ declare namespace Electron { * called with callback(image). The image is an instance of NativeImage that stores * data of the snapshot. Omitting rect will capture the whole visible page. */ - capturePage(callback: (image: NativeImage) => void): void; + capturePage(rect: Rectangle, callback: (image: NativeImage) => void): void; /** * Captures a snapshot of the page within rect. Upon completion callback will be * called with callback(image). The image is an instance of NativeImage that stores * data of the snapshot. Omitting rect will capture the whole visible page. */ - capturePage(rect: Rectangle, callback: (image: NativeImage) => void): void; + capturePage(callback: (image: NativeImage) => void): void; /** * Clears the navigation history. */ @@ -5495,15 +4988,16 @@ declare namespace Electron { * requestFullScreen can only be invoked by a gesture from the user. Setting * userGesture to true will remove this limitation. If the result of the executed * code is a promise the callback result will be the resolved value of the promise. - * We recommend that you use the returned Promise to handle code that results in a + * We recommend that you use the returned Promise to handle code that results in a * Promise. */ executeJavaScript(code: string, userGesture?: boolean, callback?: (result: any) => void): Promise<any>; /** - * Starts a request to find all matches for the text in the web page. The result of - * the request can be obtained by subscribing to found-in-page event. + * Starts a request to find all matches for the text in the web page and returns an + * Integer representing the request id used for the request. The result of the + * request can be obtained by subscribing to found-in-page event. */ - findInPage(text: string, options?: FindInPageOptions): number; + findInPage(text: string, options?: FindInPageOptions): void; /** * Focuses the web page. */ @@ -5582,12 +5076,6 @@ declare namespace Electron { isOffscreen(): boolean; isPainting(): boolean; isWaitingForResponse(): boolean; - /** - * Loads the given file in the window, filePath should be a path to an HTML file - * relative to the root of your application. For instance an app structure like - * this: Would require code like this - */ - loadFile(filePath: string): void; /** * Loads the url in the window. The url must contain the protocol prefix, e.g. the * http:// or file://. If the load should bypass http cache then use the pragma @@ -5595,9 +5083,7 @@ declare namespace Electron { */ loadURL(url: string, options?: LoadURLOptions): void; /** - * Opens the devtools. When contents is a <webview> tag, the mode would be detach - * by default, explicitly passing an empty mode can force using last used dock - * state. + * Opens the devtools. */ openDevTools(options?: OpenDevToolsOptions): void; /** @@ -5615,7 +5101,7 @@ declare namespace Electron { * webContents.print({silent: false, printBackground: false, deviceName: ''}). Use * page-break-before: always; CSS style to force to print to a new page. */ - print(options?: PrintOptions, callback?: (success: boolean) => void): void; + print(options?: PrintOptions): void; /** * Prints window's web page as PDF with Chromium's preview printing custom * settings. The callback will be called with callback(error, data) on completion. @@ -5674,19 +5160,6 @@ declare namespace Electron { * Mute the audio on the current web page. */ setAudioMuted(muted: boolean): void; - /** - * Uses the devToolsWebContents as the target WebContents to show devtools. The - * devToolsWebContents must not have done any navigation, and it should not be used - * for other purposes after the call. By default Electron manages the devtools by - * creating an internal WebContents with native view, which developers have very - * limited control of. With the setDevToolsWebContents method, developers can use - * any WebContents to show the devtools in it, including BrowserWindow, BrowserView - * and <webview> tag. Note that closing the devtools does not destroy the - * devToolsWebContents, it is caller's responsibility to destroy - * devToolsWebContents. An example of showing devtools in a <webview> tag: An - * example of showing devtools in a BrowserWindow: - */ - setDevToolsWebContents(devToolsWebContents: WebContents): void; /** * If offscreen rendering is enabled sets the frame rate to the specified number. * Only values between 1 and 60 are accepted. @@ -5714,7 +5187,7 @@ declare namespace Electron { setVisualZoomLevelLimits(minimumLevel: number, maximumLevel: number): void; /** * Setting the WebRTC IP handling policy allows you to control which IPs are - * exposed via WebRTC. See BrowserLeaks for more details. + * exposed via WebRTC. See BrowserLeaks for more details. */ setWebRTCIPHandlingPolicy(policy: 'default' | 'default_public_interface_only' | 'default_public_and_private_interfaces' | 'disable_non_proxied_udp'): void; /** @@ -5725,10 +5198,14 @@ declare namespace Electron { /** * Changes the zoom level to the specified level. The original size is 0 and each * increment above or below represents zooming 20% larger or smaller to default - * limits of 300% and 50% of original size, respectively. The formula for this is - * scale := 1.2 ^ level. + * limits of 300% and 50% of original size, respectively. */ setZoomLevel(level: number): void; + /** + * Deprecated: Call setVisualZoomLevelLimits instead to set the visual zoom level + * limits. This method will be removed in Electron 2.0. + */ + setZoomLevelLimits(minimumLevel: number, maximumLevel: number): void; /** * Shows pop-up dictionary that searches the selected word on the page. */ @@ -5799,10 +5276,6 @@ declare namespace Electron { * userGesture to true will remove this limitation. */ executeJavaScript(code: string, userGesture?: boolean, callback?: (result: any) => void): Promise<any>; - /** - * Work like executeJavaScript but evaluates scripts in isolated context. - */ - executeJavaScriptInIsolatedWorld(worldId: number, scripts: WebSource[], userGesture?: boolean, callback?: (result: any) => void): void; /** * Returns an object describing usage information of Blink's internal memory * caches. This will generate: @@ -5832,18 +5305,6 @@ declare namespace Electron { * cannot be corrupted by active network attackers. */ registerURLSchemeAsSecure(scheme: string): void; - /** - * Set the content security policy of the isolated world. - */ - setIsolatedWorldContentSecurityPolicy(worldId: number, csp: string): void; - /** - * Set the name of the isolated world. Useful in devtools. - */ - setIsolatedWorldHumanReadableName(worldId: number, name: string): void; - /** - * Set the security origin of the isolated world. - */ - setIsolatedWorldSecurityOrigin(worldId: number, securityOrigin: string): void; /** * Sets the maximum and minimum layout-based (i.e. non-visual) zoom level. */ @@ -5869,28 +5330,22 @@ declare namespace Electron { * limits of 300% and 50% of original size, respectively. */ setZoomLevel(level: number): void; + /** + * Deprecated: Call setVisualZoomLevelLimits instead to set the visual zoom level + * limits. This method will be removed in Electron 2.0. + */ + setZoomLevelLimits(minimumLevel: number, maximumLevel: number): void; } class WebRequest extends EventEmitter { // Docs: http://electron.atom.io/docs/api/web-request - /** - * The listener will be called with listener(details) when a server initiated - * redirect is about to occur. - */ - onBeforeRedirect(listener: (details: OnBeforeRedirectDetails) => void): void; /** * The listener will be called with listener(details) when a server initiated * redirect is about to occur. */ onBeforeRedirect(filter: OnBeforeRedirectFilter, listener: (details: OnBeforeRedirectDetails) => void): void; - /** - * The listener will be called with listener(details, callback) when a request is - * about to occur. The uploadData is an array of UploadData objects. The callback - * has to be called with an response object. - */ - onBeforeRequest(listener: (details: OnBeforeRequestDetails, callback: (response: Response) => void) => void): void; /** * The listener will be called with listener(details, callback) when a request is * about to occur. The uploadData is an array of UploadData objects. The callback @@ -5904,25 +5359,10 @@ declare namespace Electron { * has to be called with an response object. */ onBeforeSendHeaders(filter: OnBeforeSendHeadersFilter, listener: Function): void; - /** - * The listener will be called with listener(details, callback) before sending an - * HTTP request, once the request headers are available. This may occur after a TCP - * connection is made to the server, but before any http data is sent. The callback - * has to be called with an response object. - */ - onBeforeSendHeaders(listener: Function): void; /** * The listener will be called with listener(details) when a request is completed. */ onCompleted(filter: OnCompletedFilter, listener: (details: OnCompletedDetails) => void): void; - /** - * The listener will be called with listener(details) when a request is completed. - */ - onCompleted(listener: (details: OnCompletedDetails) => void): void; - /** - * The listener will be called with listener(details) when an error occurs. - */ - onErrorOccurred(listener: (details: OnErrorOccurredDetails) => void): void; /** * The listener will be called with listener(details) when an error occurs. */ @@ -5933,18 +5373,6 @@ declare namespace Electron { * response object. */ onHeadersReceived(filter: OnHeadersReceivedFilter, listener: Function): void; - /** - * The listener will be called with listener(details, callback) when HTTP response - * headers of a request have been received. The callback has to be called with an - * response object. - */ - onHeadersReceived(listener: Function): void; - /** - * The listener will be called with listener(details) when first byte of the - * response body is received. For HTTP requests, this means that the status line - * and response headers are available. - */ - onResponseStarted(listener: (details: OnResponseStartedDetails) => void): void; /** * The listener will be called with listener(details) when first byte of the * response body is received. For HTTP requests, this means that the status line @@ -5957,24 +5385,6 @@ declare namespace Electron { * response are visible by the time this listener is fired. */ onSendHeaders(filter: OnSendHeadersFilter, listener: (details: OnSendHeadersDetails) => void): void; - /** - * The listener will be called with listener(details) just before a request is - * going to be sent to the server, modifications of previous onBeforeSendHeaders - * response are visible by the time this listener is fired. - */ - onSendHeaders(listener: (details: OnSendHeadersDetails) => void): void; - } - - interface WebSource { - - // Docs: http://electron.atom.io/docs/api/structures/web-source - - code: string; - /** - * Default is 1. - */ - startLine?: number; - url?: string; } interface WebviewTag extends HTMLElement { @@ -6165,10 +5575,6 @@ declare namespace Electron { */ addEventListener(event: 'devtools-focused', listener: (event: Event) => void, useCapture?: boolean): this; removeEventListener(event: 'devtools-focused', listener: (event: Event) => void): this; - addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, useCapture?: boolean): void; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; canGoBack(): boolean; canGoForward(): boolean; canGoToOffset(offset: number): boolean; @@ -6207,12 +5613,13 @@ declare namespace Electron { * context in the page. HTML APIs like requestFullScreen, which require user * action, can take advantage of this option for automation. */ - executeJavaScript(code: string, userGesture?: boolean, callback?: (result: any) => void): void; + executeJavaScript(code: string, userGesture: boolean, callback?: (result: any) => void): void; /** - * Starts a request to find all matches for the text in the web page. The result of - * the request can be obtained by subscribing to found-in-page event. + * Starts a request to find all matches for the text in the web page and returns an + * Integer representing the request id used for the request. The result of the + * request can be obtained by subscribing to found-in-page event. */ - findInPage(text: string, options?: FindInPageOptions): number; + findInPage(text: string, options?: FindInPageOptions): void; getTitle(): string; getURL(): string; getUserAgent(): string; @@ -6655,10 +6062,6 @@ declare namespace Electron { * is true. */ fullscreenable?: boolean; - /** - * Use pre-Lion fullscreen on macOS. Default is false. - */ - simpleFullscreen?: boolean; /** * Whether to show the window in taskbar. Default is false. */ @@ -6712,7 +6115,7 @@ declare namespace Electron { */ enableLargerThanScreen?: boolean; /** - * Window's background color as a hexadecimal value, like #66CD00 or #FFF or + * Window's background color as Hexadecimal value, like #66CD00 or #FFF or * #80FFFFFF (alpha is supported). Default is #FFF (white). */ backgroundColor?: string; @@ -6721,11 +6124,6 @@ declare namespace Electron { * is true. */ hasShadow?: boolean; - /** - * Set the initial opacity of the window, between 0.0 (fully transparent) and 1.0 - * (fully opaque). This is only implemented on Windows and macOS. - */ - opacity?: number; /** * Forces using dark theme for the window, only works on some GTK+3 desktop * environments. Default is false. @@ -6742,9 +6140,9 @@ declare namespace Electron { /** * The style of window title bar. Default is default. Possible values are: */ - titleBarStyle?: ('default' | 'hidden' | 'hiddenInset' | 'customButtonsOnHover'); + titleBarStyle?: ('default' | 'hidden' | 'hidden-inset' | 'hiddenInset' | 'customButtonsOnHover'); /** - * Shows the title in the title bar in full screen mode on macOS for all + * Shows the title in the tile bar in full screen mode on macOS for all * titleBarStyle options. Default is false. */ fullscreenWindowTitle?: boolean; @@ -6798,11 +6196,7 @@ declare namespace Electron { /** * Verification result from chromium. */ - verificationResult: string; - /** - * Error code. - */ - errorCode: number; + error: string; } interface ClearStorageDataOptions { @@ -6812,7 +6206,7 @@ declare namespace Electron { origin?: string; /** * The types of storages to clear, can contain: appcache, cookies, filesystem, - * indexdb, localstorage, shadercache, websql, serviceworkers. + * indexdb, localstorage, shadercache, websql, serviceworkers */ storages?: string[]; /** @@ -6859,11 +6253,11 @@ declare namespace Electron { interface ContextMenuParams { /** - * x coordinate. + * x coordinate */ x: number; /** - * y coordinate. + * y coordinate */ y: number; /** @@ -6923,8 +6317,8 @@ declare namespace Electron { */ inputFieldType: string; /** - * Input source that invoked the context menu. Can be none, mouse, keyboard, touch - * or touchMenu. + * Input source that invoked the context menu. Can be none, mouse, keyboard, touch, + * touchMenu. */ menuSourceType: ('none' | 'mouse' | 'keyboard' | 'touch' | 'touchMenu'); /** @@ -6961,10 +6355,9 @@ declare namespace Electron { * properties are sent correctly. Nested objects are not supported and the property * names and values must be less than 64 characters long. */ - extra?: Extra; + extra?: any; /** - * Directory to store the crashreports temporarily (only used when the crash - * reporter is started via process.crashReporter.start). + * Only used when the crash reporter is used in a forked process (macOS only). */ crashesDirectory?: string; } @@ -7109,12 +6502,9 @@ declare namespace Electron { } interface DisplayBalloonOptions { - /** - * - - */ icon?: NativeImage | string; - title: string; - content: string; + title?: string; + content?: string; } interface Dock { @@ -7179,18 +6569,6 @@ declare namespace Electron { interface Extensions { } - interface FeedURLOptions { - url: string; - /** - * HTTP request headers. - */ - headers?: Headers; - /** - * Either json or default, see the README for more information. - */ - serverType?: string; - } - interface FileIconOptions { size: ('small' | 'normal' | 'large'); } @@ -7206,7 +6584,7 @@ declare namespace Electron { */ name?: string; /** - * Retrieves cookies whose domains match or are subdomains of domains. + * Retrieves cookies whose domains match or are subdomains of domains */ domain?: string; /** @@ -7266,18 +6644,6 @@ declare namespace Electron { name: string; } - interface Headers { - } - - interface IgnoreMouseEventsOptions { - /** - * If true, forwards mouse move messages to Chromium, enabling mouse related events - * such as mouseleave. Only used when ignore is true. If ignore is false, - * forwarding is always disabled regardless of this value. - */ - forward?: boolean; - } - interface ImportCertificateOptions { /** * Path for the pkcs12 file. @@ -7291,35 +6657,35 @@ declare namespace Electron { interface Input { /** - * Either keyUp or keyDown. + * Either keyUp or keyDown */ type: string; /** - * Equivalent to . + * Equivalent to */ key: string; /** - * Equivalent to . + * Equivalent to */ code: string; /** - * Equivalent to . + * Equivalent to */ isAutoRepeat: boolean; /** - * Equivalent to . + * Equivalent to */ shift: boolean; /** - * Equivalent to . + * Equivalent to */ control: boolean; /** - * Equivalent to . + * Equivalent to */ alt: boolean; /** - * Equivalent to . + * Equivalent to */ meta: boolean; } @@ -7345,14 +6711,6 @@ declare namespace Electron { uploadData: UploadData[]; } - interface InterceptStreamProtocolRequest { - url: string; - headers: Headers; - referrer: string; - method: string; - uploadData: UploadData[]; - } - interface InterceptStringProtocolRequest { url: string; referrer: string; @@ -7409,9 +6767,6 @@ declare namespace Electron { * Extra headers separated by "\n" */ extraHeaders?: string; - /** - * - - */ postData?: UploadRawData[] | UploadFile[] | UploadFileSystem[] | UploadBlob[]; /** * Base url (with trailing path separator) for files to be loaded by the data url. @@ -7428,25 +6783,25 @@ declare namespace Electron { */ openAtLogin: boolean; /** - * true if the app is set to open as hidden at login. This setting is not available - * on . + * true if the app is set to open as hidden at login. This setting is only + * supported on macOS. */ openAsHidden: boolean; /** - * true if the app was opened at login automatically. This setting is not available - * on . + * true if the app was opened at login automatically. This setting is only + * supported on macOS. */ wasOpenedAtLogin: boolean; /** * true if the app was opened as a hidden login item. This indicates that the app - * should not open any windows at startup. This setting is not available on . + * should not open any windows at startup. This setting is only supported on macOS. */ wasOpenedAsHidden: boolean; /** * true if the app was opened as a login item that should restore the state from * the previous session. This indicates that the app should restore the windows - * that were open the last time the app was closed. This setting is not available - * on . + * that were open the last time the app was closed. This setting is only supported + * on macOS. */ restoreState: boolean; } @@ -7472,7 +6827,7 @@ declare namespace Electron { * Define the action of the menu item, when specified the click property will be * ignored. See . */ - role?: string; + role?: MenuItemRole; /** * Can be normal, separator, submenu, checkbox or radio. */ @@ -7495,7 +6850,7 @@ declare namespace Electron { checked?: boolean; /** * Should be specified for submenu type menu items. If submenu is specified, the - * type: 'submenu' can be omitted. If the value is not a then it will be + * type: 'submenu' can be omitted. If the value is not a Menu then it will be * automatically converted to one using Menu.buildFromTemplate. */ submenu?: MenuItemConstructorOptions[] | Menu; @@ -7585,7 +6940,7 @@ declare namespace Electron { */ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'save-to-disk' | 'other'); /** - * The options which should be used for creating the new . + * The options which should be used for creating the new `BrowserWindow`. */ options: Options; } @@ -7593,7 +6948,7 @@ declare namespace Electron { interface NotificationConstructorOptions { /** * A title for the notification, which will be shown at the top of the notification - * window when it is shown. + * window when it is shown */ title: string; /** @@ -7602,17 +6957,17 @@ declare namespace Electron { subtitle?: string; /** * The body text of the notification, which will be displayed below the title or - * subtitle. + * subtitle */ body: string; /** - * Whether or not to emit an OS notification noise when showing the notification. + * Whether or not to emit an OS notification noise when showing the notification */ silent?: boolean; /** - * An icon to use in the notification. + * An icon to use in the notification */ - icon?: string | NativeImage; + icon?: NativeImage; /** * Whether or not to add an inline reply option to the notification. */ @@ -7627,21 +6982,15 @@ declare namespace Electron { sound?: string; /** * Actions to add to the notification. Please read the available actions and - * limitations in the NotificationAction documentation. + * limitations in the NotificationAction documentation */ actions?: NotificationAction[]; - /** - * A custom title for the close button of an alert. An empty string will cause the - * default localized text to be used. - */ - closeButtonText?: string; } interface OnBeforeRedirectDetails { - id: number; + id: string; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; redirectURL: string; @@ -7666,7 +7015,6 @@ declare namespace Electron { id: number; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; uploadData: UploadData[]; @@ -7692,7 +7040,6 @@ declare namespace Electron { id: number; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; responseHeaders: ResponseHeaders; @@ -7713,7 +7060,6 @@ declare namespace Electron { id: number; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; fromCache: boolean; @@ -7743,7 +7089,6 @@ declare namespace Electron { id: number; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; responseHeaders: ResponseHeaders; @@ -7767,7 +7112,6 @@ declare namespace Electron { id: number; url: string; method: string; - webContentsId?: number; resourceType: string; timestamp: number; requestHeaders: RequestHeaders; @@ -7808,10 +7152,6 @@ declare namespace Electron { * Message to display above input boxes. */ message?: string; - /** - * Create when packaged for the Mac App Store. - */ - securityScopedBookmarks?: boolean; } interface OpenExternalOptions { @@ -7835,56 +7175,50 @@ declare namespace Electron { interface Parameters { /** - * Specify the screen type to emulate (default: desktop): + * Specify the screen type to emulate (default: desktop) */ screenPosition: ('desktop' | 'mobile'); /** - * Set the emulated screen size (screenPosition == mobile). + * Set the emulated screen size (screenPosition == mobile) */ screenSize: Size; /** * Position the view on the screen (screenPosition == mobile) (default: {x: 0, y: - * 0}). + * 0}) */ viewPosition: Point; /** * Set the device scale factor (if zero defaults to original device scale factor) - * (default: 0). + * (default: 0) */ deviceScaleFactor: number; /** * Set the emulated view size (empty means no override) */ viewSize: Size; + /** + * Whether emulated view should be scaled down if necessary to fit into available + * space (default: false) + */ + fitToView: boolean; + /** + * Offset of the emulated view inside available space (not in fit to view mode) + * (default: {x: 0, y: 0}) + */ + offset: Point; /** * Scale of emulated view inside available space (not in fit to view mode) - * (default: 1). + * (default: 1) */ scale: number; } - interface Payment { - productIdentifier: string; - quantity: number; - } - - interface PermissionRequestHandlerDetails { - /** - * The url of the openExternal request. - */ - externalURL: string; - } - interface PluginCrashedEvent extends Event { name: string; version: string; } interface PopupOptions { - /** - * Default is the focused window. - */ - window?: BrowserWindow; /** * Default is the current mouse cursor position. Must be declared if y is declared. */ @@ -7893,15 +7227,16 @@ declare namespace Electron { * Default is the current mouse cursor position. Must be declared if x is declared. */ y?: number; + /** + * Set to true to have this method return immediately called, false to return after + * the menu has been selected or closed. Defaults to false. + */ + async?: boolean; /** * The index of the menu item to be positioned under the mouse cursor at the * specified coordinates. Default is -1. */ positioningItem?: number; - /** - * Called when menu is closed. - */ - callback?: () => void; } interface PrintOptions { @@ -7960,7 +7295,7 @@ declare namespace Electron { privateBytes: number; /** * The amount of memory shared between processes, typically memory consumed by the - * Electron code itself. + * Electron code itself */ sharedBytes: number; } @@ -7974,7 +7309,7 @@ declare namespace Electron { interface Provider { /** - * Returns Boolean. + * Returns Boolean */ spellCheck: (text: string) => void; } @@ -8019,14 +7354,6 @@ declare namespace Electron { secure?: boolean; } - interface RegisterStreamProtocolRequest { - url: string; - headers: Headers; - referrer: string; - method: string; - uploadData: UploadData[]; - } - interface RegisterStringProtocolRequest { url: string; referrer: string; @@ -8074,7 +7401,7 @@ declare namespace Electron { */ width?: number; /** - * Defaults to the image's height. + * Defaults to the image's height */ height?: number; /** @@ -8145,11 +7472,6 @@ declare namespace Electron { * Show the tags input box, defaults to true. */ showsTagField?: boolean; - /** - * Create a when packaged for the Mac App Store. If this option is enabled and the - * file doesn't already exist a blank file will be created at the chosen path. - */ - securityScopedBookmarks?: boolean; } interface Settings { @@ -8162,7 +7484,7 @@ declare namespace Electron { * true to open the app as hidden. Defaults to false. The user can edit this * setting from the System Preferences so * app.getLoginItemStatus().wasOpenedAsHidden should be checked when the app is - * opened to know the current value. This setting is not available on . + * opened to know the current value. This setting is only supported on macOS. */ openAsHidden?: boolean; /** @@ -8263,7 +7585,7 @@ declare namespace Electron { /** * Can be left, right or overlay. */ - iconPosition?: ('left' | 'right' | 'overlay'); + iconPosition: ('left' | 'right' | 'overlay'); /** * Function to call when the button is clicked. */ @@ -8286,8 +7608,8 @@ declare namespace Electron { } interface TouchBarConstructorOptions { - items: Array<TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer>; - escapeItem?: TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer | null; + items: (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer)[]; + escapeItem?: TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer; } interface TouchBarGroupConstructorOptions { @@ -8330,15 +7652,15 @@ declare namespace Electron { interface TouchBarScrubberConstructorOptions { /** - * An array of items to place in this scrubber. + * An array of items to place in this scrubber */ items: ScrubberItem[]; /** - * Called when the user taps an item that was not the last tapped item. + * Called when the user taps an item that was not the last tapped item */ select: (selectedIndex: number) => void; /** - * Called when the user taps any item. + * Called when the user taps any item */ highlight: (highlightedIndex: number) => void; /** @@ -8382,7 +7704,7 @@ declare namespace Electron { */ selectedIndex?: number; /** - * Called when the user selects a new segment. + * Called when the user selects a new segment */ change: (selectedIndex: number, isSelected: boolean) => void; } @@ -8487,6 +7809,9 @@ declare namespace Electron { finalUpdate: boolean; } + interface Headers { + } + interface MediaFlags { /** * Whether the media element has crashed. @@ -8586,15 +7911,6 @@ declare namespace Electron { * session. */ partition?: string; - /** - * When specified, web pages with the same affinity will run in the same renderer - * process. Note that due to reusing the renderer process, certain webPreferences - * options will also be shared between the web pages even when you specified - * different values for them, including but not limited to preload, sandbox and - * nodeIntegration. So it is suggested to use exact same webPreferences for web - * pages with the same affinity. - */ - affinity?: string; /** * The default zoom factor of the page, 3.0 represents 300%. Default is 1.0. */ @@ -8678,7 +7994,7 @@ declare namespace Electron { defaultEncoding?: string; /** * Whether to throttle animations and timers when the page becomes background. This - * also affects the . Defaults to true. + * also affects the [Page Visibility API][#page-visibility]. Defaults to true. */ backgroundThrottling?: boolean; /** @@ -8715,12 +8031,6 @@ declare namespace Electron { * alter the <webview>'s initial settings. */ webviewTag?: boolean; - /** - * A list of strings that will be appended to process.argv in the renderer process - * of this app. Useful for passing small bits of data down to renderer process - * preload scripts. - */ - additionArguments?: string[]; } interface DefaultFontFamily { @@ -8798,7 +8108,6 @@ declare namespace NodeJS { // Docs: http://electron.atom.io/docs/api/process - // ### BEGIN VSCODE MODIFICATION ### // /** // * Emitted when Electron has loaded its internal initialization script and is // * beginning to load the web page or the main script. It can be used by the preload @@ -8809,8 +8118,6 @@ declare namespace NodeJS { // once(event: 'loaded', listener: Function): this; // addListener(event: 'loaded', listener: Function): this; // removeListener(event: 'loaded', listener: Function): this; - // ### END VSCODE MODIFICATION ### - /** * Causes the main thread of the current process crash. */ @@ -8853,8 +8160,8 @@ declare namespace NodeJS { noAsar?: boolean; /** * A Boolean that controls whether or not deprecation warnings are printed to - * stderr. Setting this to true will silence deprecation warnings. This property is - * used instead of the --no-deprecation command line flag. + * stderr. Setting this to true will silence deprecation warnings. This property + * is used instead of the --no-deprecation command line flag. */ noDeprecation?: boolean; /** @@ -8863,21 +8170,21 @@ declare namespace NodeJS { resourcesPath?: string; /** * A Boolean that controls whether or not deprecation warnings will be thrown as - * exceptions. Setting this to true will throw errors for deprecations. This + * exceptions. Setting this to true will throw errors for deprecations. This * property is used instead of the --throw-deprecation command line flag. */ throwDeprecation?: boolean; /** * A Boolean that controls whether or not deprecations printed to stderr include - * their stack trace. Setting this to true will print stack traces for + * their stack trace. Setting this to true will print stack traces for * deprecations. This property is instead of the --trace-deprecation command line * flag. */ traceDeprecation?: boolean; /** * A Boolean that controls whether or not process warnings printed to stderr - * include their stack trace. Setting this to true will print stack traces for - * process warnings (including deprecations). This property is instead of the + * include their stack trace. Setting this to true will print stack traces for + * process warnings (including deprecations). This property is instead of the * --trace-warnings command line flag. */ traceProcessWarnings?: boolean; diff --git a/src/typings/node.d.ts b/src/typings/node.d.ts index a1c8edf9d48..1b6661edd71 100644 --- a/src/typings/node.d.ts +++ b/src/typings/node.d.ts @@ -1,62 +1,41 @@ -// Type definitions for Node.js 8.9.x +// Type definitions for Node.js v7.x // Project: http://nodejs.org/ // Definitions by: Microsoft TypeScript <http://typescriptlang.org> // DefinitelyTyped <https://github.com/DefinitelyTyped/DefinitelyTyped> // Parambir Singh <https://github.com/parambirs> +// Roberto Desideri <https://github.com/RobDesideri> // Christian Vaagland Tellnes <https://github.com/tellnes> // Wilco Bakker <https://github.com/WilcoBakker> -// Nicolas Voigt <https://github.com/octo-sniffle> -// Chigozirim C. <https://github.com/smac89> -// Flarna <https://github.com/Flarna> -// Mariusz Wiktorczyk <https://github.com/mwiktorczyk> -// wwwy3y3 <https://github.com/wwwy3y3> -// Deividas Bakanas <https://github.com/DeividasBakanas> -// Kelvin Jin <https://github.com/kjin> -// Alvis HT Tang <https://github.com/alvis> -// Oliver Joseph Ash <https://github.com/OliverJAsh> -// Sebastian Silbermann <https://github.com/eps1lon> -// Hannes Magnusson <https://github.com/Hannes-Magnusson-CK> -// Alberto Schiabel <https://github.com/jkomyno> -// Huw <https://github.com/hoo29> +// Daniel Imms <https://github.com/Tyriar> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.1 -// ### BEGIN VSCODE MODIFICATION ### -// /** inspector module types */ -// /// <reference path="./inspector.d.ts" /> -// ### BEGIN VSCODE MODIFICATION ### +/************************************************ +* * +* Node.js v7.x API * +* * +************************************************/ // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build interface Console { - Console: NodeJS.ConsoleConstructor; - assert(value: any, message?: string, ...optionalParams: any[]): void; - dir(obj: any, options?: NodeJS.InspectOptions): void; - error(message?: any, ...optionalParams: any[]): void; - info(message?: any, ...optionalParams: any[]): void; - log(message?: any, ...optionalParams: any[]): void; - time(label: string): void; - timeEnd(label: string): void; - trace(message?: any, ...optionalParams: any[]): void; - warn(message?: any, ...optionalParams: any[]): void; + Console: NodeJS.ConsoleConstructor; + assert(value: any, message?: string, ...optionalParams: any[]): void; + dir(obj: any, options?: NodeJS.InspectOptions): void; + error(message?: any, ...optionalParams: any[]): void; + info(message?: any, ...optionalParams: any[]): void; + log(message?: any, ...optionalParams: any[]): void; + time(label: string): void; + timeEnd(label: string): void; + trace(message?: any, ...optionalParams: any[]): void; + warn(message?: any, ...optionalParams: any[]): void; } interface Error { - stack?: string; + stack?: string; } -// Declare "static" methods in Error interface ErrorConstructor { - /** Create .stack property on a target object */ - captureStackTrace(targetObject: Object, constructorOpt?: Function): void; - - /** - * Optional override for formatting stack traces - * - * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces - */ - prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any; - - stackTraceLimit: number; + captureStackTrace(targetObject: Object, constructorOpt?: Function): void; + stackTraceLimit: number; } // compat for TypeScript 1.8 @@ -70,85 +49,55 @@ interface WeakSetConstructor { } // Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`) interface Iterable<T> { } interface Iterator<T> { - next(value?: any): IteratorResult<T>; + next(value?: any): IteratorResult<T>; } interface IteratorResult<T> { } interface SymbolConstructor { - readonly iterator: symbol; + readonly iterator: symbol; } declare var Symbol: SymbolConstructor; -// Node.js ESNEXT support -interface String { - /** Removes whitespace from the left end of a string. */ - trimLeft(): string; - /** Removes whitespace from the right end of a string. */ - trimRight(): string; -} - /************************************************ * * * GLOBAL * * * ************************************************/ declare var process: NodeJS.Process; -declare var global: NodeJS.Global; +declare var global: any; declare var console: Console; -// ### BEGIN VSCODE MODIFICATION ### +// Don't use these!! :) // declare var __filename: string; // declare var __dirname: string; // declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; -// declare namespace setTimeout { -// export function __promisify__(ms: number): Promise<void>; -// export function __promisify__<T>(ms: number, value: T): Promise<T>; -// } // declare function clearTimeout(timeoutId: NodeJS.Timer): void; // declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; // declare function clearInterval(intervalId: NodeJS.Timer): void; -// ### END VSCODE MODIFICATION ### - declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; -declare namespace setImmediate { - export function __promisify__(): Promise<void>; - export function __promisify__<T>(value: T): Promise<T>; -} declare function clearImmediate(immediateId: any): void; -// TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version. interface NodeRequireFunction { - /* tslint:disable-next-line:callable-types */ - (id: string): any; + (id: string): any; } -// ### BEGIN VSCODE MODIFICATION ### // interface NodeRequire extends NodeRequireFunction { // resolve(id: string): string; // cache: any; -// extensions: NodeExtensions; +// extensions: any; // main: NodeModule | undefined; // } -// interface NodeExtensions { -// '.js': (m: NodeModule, filename: string) => any; -// '.json': (m: NodeModule, filename: string) => any; -// '.node': (m: NodeModule, filename: string) => any; -// [ext: string]: (m: NodeModule, filename: string) => any; -// } - // declare var require: NodeRequire; -// ### END VSCODE MODIFICATION ### interface NodeModule { - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: NodeModule | null; - children: NodeModule[]; - paths: string[]; + exports: any; + require: NodeRequireFunction; + id: string; + filename: string; + loaded: boolean; + parent: NodeModule | null; + children: NodeModule[]; } declare var module: NodeModule; @@ -156,16 +105,17 @@ declare var module: NodeModule; // Same as module.exports declare var exports: any; declare var SlowBuffer: { - new(str: string, encoding?: string): Buffer; - new(size: number): Buffer; - new(size: Uint8Array): Buffer; - new(array: any[]): Buffer; - prototype: Buffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: Buffer[], totalLength?: number): Buffer; + new(str: string, encoding?: string): Buffer; + new(size: number): Buffer; + new(size: Uint8Array): Buffer; + new(array: any[]): Buffer; + prototype: Buffer; + isBuffer(obj: any): boolean; + byteLength(string: string, encoding?: string): number; + concat(list: Buffer[], totalLength?: number): Buffer; }; + // Buffer class type BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; interface Buffer extends NodeBuffer { } @@ -182,19 +132,19 @@ declare var Buffer: { * @param str String to store in buffer. * @param encoding encoding to use, optional. Default is 'utf8' */ - new(str: string, encoding?: string): Buffer; + new(str: string, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets. * * @param size count of octets to allocate. */ - new(size: number): Buffer; + new(size: number): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: Uint8Array): Buffer; + new(array: Uint8Array): Buffer; /** * Produces a Buffer backed by the same allocated memory as * the given {ArrayBuffer}. @@ -202,24 +152,26 @@ declare var Buffer: { * * @param arrayBuffer The ArrayBuffer with which to share memory. */ - new(arrayBuffer: ArrayBuffer): Buffer; + new(arrayBuffer: ArrayBuffer): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: any[]): Buffer; + new(array: any[]): Buffer; /** * Copies the passed {buffer} data onto a new {Buffer} instance. * * @param buffer The buffer to copy. */ - new(buffer: Buffer): Buffer; - prototype: Buffer; + new(buffer: Buffer): Buffer; + prototype: Buffer; /** * Allocates a new Buffer using an {array} of octets. + * + * @param array */ - from(array: any[]): Buffer; + from(array: any[]): Buffer; /** * When passed a reference to the .buffer property of a TypedArray instance, * the newly created Buffer will share the same allocated memory as the TypedArray. @@ -227,39 +179,45 @@ declare var Buffer: { * within the {arrayBuffer} that will be shared by the Buffer. * * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length */ - from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; /** * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer */ - from(buffer: Buffer): Buffer; + from(buffer: Buffer): Buffer; /** * Creates a new Buffer containing the given JavaScript string {str}. * If provided, the {encoding} parameter identifies the character encoding. * If not provided, {encoding} defaults to 'utf8'. + * + * @param str */ - from(str: string, encoding?: string): Buffer; + from(str: string, encoding?: string): Buffer; /** * Returns true if {obj} is a Buffer * * @param obj object to test. */ - isBuffer(obj: any): obj is Buffer; + isBuffer(obj: any): obj is Buffer; /** * Returns true if {encoding} is a valid encoding argument. * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' * * @param encoding string to test. */ - isEncoding(encoding: string): boolean; + isEncoding(encoding: string): boolean; /** * Gives the actual byte length of a string. encoding defaults to 'utf8'. * This is not the same as String.prototype.length since that returns the number of characters in a string. * - * @param string string to test. (TypedArray is also allowed, but it is only available starting ES2017) + * @param string string to test. * @param encoding encoding used to evaluate (defaults to 'utf8') */ - byteLength(string: string | Buffer | DataView | ArrayBuffer, encoding?: string): number; + byteLength(string: string, encoding?: string): number; /** * Returns a buffer which is the result of concatenating all the buffers in the list together. * @@ -271,11 +229,11 @@ declare var Buffer: { * @param totalLength Total length of the buffers when concatenated. * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. */ - concat(list: Buffer[], totalLength?: number): Buffer; + concat(list: Buffer[], totalLength?: number): Buffer; /** * The same as buf1.compare(buf2). */ - compare(buf1: Buffer, buf2: Buffer): number; + compare(buf1: Buffer, buf2: Buffer): number; /** * Allocates a new buffer of {size} octets. * @@ -284,25 +242,21 @@ declare var Buffer: { * If parameter is omitted, buffer will be filled with zeros. * @param encoding encoding used for call to buf.fill while initalizing */ - alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafe(size: number): Buffer; + allocUnsafe(size: number): Buffer; /** * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafeSlow(size: number): Buffer; - /** - * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified. - */ - poolSize: number; + allocUnsafeSlow(size: number): Buffer; }; /************************************************ @@ -311,501 +265,273 @@ declare var Buffer: { * * ************************************************/ declare namespace NodeJS { - export interface InspectOptions { - showHidden?: boolean; - depth?: number | null; - colors?: boolean; - customInspect?: boolean; - showProxy?: boolean; - maxArrayLength?: number | null; - breakLength?: number; - } + export interface InspectOptions { + showHidden?: boolean; + depth?: number | null; + colors?: boolean; + customInspect?: boolean; + showProxy?: boolean; + maxArrayLength?: number | null; + breakLength?: number; + } - export interface ConsoleConstructor { - prototype: Console; - new(stdout: WritableStream, stderr?: WritableStream): Console; - } + export interface ConsoleConstructor { + prototype: Console; + new(stdout: WritableStream, stderr?: WritableStream): Console; + } - export interface CallSite { - /** - * Value of "this" - */ - getThis(): any; + export interface ErrnoException extends Error { + errno?: number; + code?: string; + path?: string; + syscall?: string; + stack?: string; + } - /** - * Type of "this" as a string. - * This is the name of the function stored in the constructor field of - * "this", if available. Otherwise the object's [[Class]] internal - * property. - */ - getTypeName(): string | null; + export class EventEmitter { + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + listenerCount(type: string | symbol): number; + // Added in Node 6... + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + eventNames(): (string | symbol)[]; + } - /** - * Current function - */ - getFunction(): Function | undefined; + export interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: string | null): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe<T extends WritableStream>(destination: T, options?: { end?: boolean; }): T; + unpipe<T extends WritableStream>(destination?: T): this; + unshift(chunk: string): void; + unshift(chunk: Buffer): void; + wrap(oldStream: ReadableStream): ReadableStream; + } - /** - * Name of the current function, typically its name property. - * If a name property is not available an attempt will be made to try - * to infer a name from the function's context. - */ - getFunctionName(): string | null; + export interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Buffer | string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + } - /** - * Name of the property [of "this" or one of its prototypes] that holds - * the current function - */ - getMethodName(): string | null; + export interface ReadWriteStream extends ReadableStream, WritableStream { } - /** - * Name of the script [if this function was defined in a script] - */ - getFileName(): string | null; + export interface Events extends EventEmitter { } - /** - * Current line number [if this function was defined in a script] - */ - getLineNumber(): number | null; + export interface Domain extends Events { + run(fn: Function): void; + add(emitter: Events): void; + remove(emitter: Events): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; - /** - * Current column number [if this function was defined in a script] - */ - getColumnNumber(): number | null; + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + } - /** - * A call site object representing the location where eval was called - * [if this function was created using a call to eval] - */ - getEvalOrigin(): string | undefined; + export interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + } - /** - * Is this a toplevel invocation, that is, is "this" the global object? - */ - isToplevel(): boolean; + export interface CpuUsage { + user: number; + system: number; + } - /** - * Does this call take place in code defined by a call to eval? - */ - isEval(): boolean; + export interface ProcessVersions { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } - /** - * Is this call in native V8 code? - */ - isNative(): boolean; + type Platform = 'aix' + | 'android' + | 'darwin' + | 'freebsd' + | 'linux' + | 'openbsd' + | 'sunos' + | 'win32'; - /** - * Is this a constructor call? - */ - isConstructor(): boolean; - } + export interface Socket extends ReadWriteStream { + isTTY?: true; + } - export interface ErrnoException extends Error { - errno?: number; - code?: string; - path?: string; - syscall?: string; - stack?: string; - } + export interface WriteStream extends Socket { + columns?: number; + rows?: number; + } + export interface ReadStream extends Socket { + isRaw?: boolean; + setRawMode?(mode: boolean): void; + } - export class EventEmitter { - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - listenerCount(type: string | symbol): number; - // Added in Node 6... - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - eventNames(): Array<string | symbol>; - } + export interface Process extends EventEmitter { + stdout: WriteStream; + stderr: WriteStream; + stdin: ReadStream; + openStdin(): Socket; + argv: string[]; + argv0: string; + execArgv: string[]; + execPath: string; + abort(): void; + chdir(directory: string): void; + cwd(): string; + emitWarning(warning: string | Error, name?: string, ctor?: Function): void; + env: any; + exit(code?: number): void; + exitCode: number; + getgid(): number; + setgid(id: number): void; + setgid(id: string): void; + getuid(): number; + setuid(id: number): void; + setuid(id: string): void; + version: string; + versions: ProcessVersions; + config: { + target_defaults: { + cflags: any[]; + default_configuration: string; + defines: string[]; + include_dirs: string[]; + libraries: string[]; + }; + variables: { + clang: number; + host_arch: string; + node_install_npm: boolean; + node_install_waf: boolean; + node_prefix: string; + node_shared_openssl: boolean; + node_shared_v8: boolean; + node_shared_zlib: boolean; + node_use_dtrace: boolean; + node_use_etw: boolean; + node_use_openssl: boolean; + target_arch: string; + v8_no_strict_aliasing: number; + v8_use_snapshot: boolean; + visibility: string; + }; + }; + kill(pid: number, signal?: string | number): void; + pid: number; + title: string; + arch: string; + platform: Platform; + mainModule?: NodeModule; + memoryUsage(): MemoryUsage; + cpuUsage(previousValue?: CpuUsage): CpuUsage; + nextTick(callback: Function, ...args: any[]): void; + umask(mask?: number): number; + uptime(): number; + hrtime(time?: [number, number]): [number, number]; + domain: Domain; - export interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe<T extends WritableStream>(destination: T, options?: { end?: boolean; }): T; - unpipe<T extends WritableStream>(destination?: T): this; - unshift(chunk: string): void; - unshift(chunk: Buffer): void; - wrap(oldStream: ReadableStream): this; - } + // Worker + send?(message: any, sendHandle?: any): void; + disconnect(): void; + connected: boolean; + } - export interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Buffer | string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - end(cb?: Function): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - } + export interface Global { + Array: typeof Array; + ArrayBuffer: typeof ArrayBuffer; + Boolean: typeof Boolean; + Buffer: typeof Buffer; + DataView: typeof DataView; + Date: typeof Date; + Error: typeof Error; + EvalError: typeof EvalError; + Float32Array: typeof Float32Array; + Float64Array: typeof Float64Array; + Function: typeof Function; + GLOBAL: Global; + Infinity: typeof Infinity; + Int16Array: typeof Int16Array; + Int32Array: typeof Int32Array; + Int8Array: typeof Int8Array; + Intl: typeof Intl; + JSON: typeof JSON; + Map: MapConstructor; + Math: typeof Math; + NaN: typeof NaN; + Number: typeof Number; + Object: typeof Object; + Promise: Function; + RangeError: typeof RangeError; + ReferenceError: typeof ReferenceError; + RegExp: typeof RegExp; + Set: SetConstructor; + String: typeof String; + Symbol: Function; + SyntaxError: typeof SyntaxError; + TypeError: typeof TypeError; + URIError: typeof URIError; + Uint16Array: typeof Uint16Array; + Uint32Array: typeof Uint32Array; + Uint8Array: typeof Uint8Array; + Uint8ClampedArray: Function; + WeakMap: WeakMapConstructor; + WeakSet: WeakSetConstructor; + clearImmediate: (immediateId: any) => void; + clearInterval: (intervalId: NodeJS.Timer) => void; + clearTimeout: (timeoutId: NodeJS.Timer) => void; + console: typeof console; + decodeURI: typeof decodeURI; + decodeURIComponent: typeof decodeURIComponent; + encodeURI: typeof encodeURI; + encodeURIComponent: typeof encodeURIComponent; + escape: (str: string) => string; + eval: typeof eval; + global: Global; + isFinite: typeof isFinite; + isNaN: typeof isNaN; + parseFloat: typeof parseFloat; + parseInt: typeof parseInt; + process: Process; + root: Global; + setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; + setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + undefined: typeof undefined; + unescape: (str: string) => string; + gc: () => void; + v8debug?: any; + } - export interface ReadWriteStream extends ReadableStream, WritableStream { } - - export interface Events extends EventEmitter { } - - export interface Domain extends Events { - run(fn: Function): void; - add(emitter: Events): void; - remove(emitter: Events): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - - addListener(event: string, listener: (...args: any[]) => void): this; - on(event: string, listener: (...args: any[]) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - removeListener(event: string, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string): this; - } - - export interface MemoryUsage { - rss: number; - heapTotal: number; - heapUsed: number; - } - - export interface CpuUsage { - user: number; - system: number; - } - - export interface ProcessVersions { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } - - type Platform = 'aix' - | 'android' - | 'darwin' - | 'freebsd' - | 'linux' - | 'openbsd' - | 'sunos' - | 'win32' - | 'cygwin'; - - type Signals = - "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" | - "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" | - "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" | - "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO"; - - type BeforeExitListener = (code: number) => void; - type DisconnectListener = () => void; - type ExitListener = (code: number) => void; - type RejectionHandledListener = (promise: Promise<any>) => void; - type UncaughtExceptionListener = (error: Error) => void; - type UnhandledRejectionListener = (reason: any, promise: Promise<any>) => void; - type WarningListener = (warning: Error) => void; - type MessageListener = (message: any, sendHandle: any) => void; - type SignalsListener = () => void; - type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void; - - export interface Socket extends ReadWriteStream { - isTTY?: true; - } - - export interface ProcessEnv { - [key: string]: string | undefined; - } - - export interface WriteStream extends Socket { - columns?: number; - rows?: number; - _write(chunk: any, encoding: string, callback: Function): void; - _destroy(err: Error, callback: Function): void; - _final(callback: Function): void; - setDefaultEncoding(encoding: string): this; - cork(): void; - uncork(): void; - destroy(error?: Error): void; - } - export interface ReadStream extends Socket { - isRaw?: boolean; - setRawMode?(mode: boolean): void; - _read(size: number): void; - _destroy(err: Error, callback: Function): void; - push(chunk: any, encoding?: string): boolean; - destroy(error?: Error): void; - } - - export interface Process extends EventEmitter { - stdout: WriteStream; - stderr: WriteStream; - stdin: ReadStream; - openStdin(): Socket; - argv: string[]; - argv0: string; - execArgv: string[]; - execPath: string; - abort(): void; - chdir(directory: string): void; - cwd(): string; - emitWarning(warning: string | Error, name?: string, ctor?: Function): void; - env: ProcessEnv; - exit(code?: number): never; - exitCode: number; - getgid(): number; - setgid(id: number | string): void; - getuid(): number; - setuid(id: number | string): void; - geteuid(): number; - seteuid(id: number | string): void; - getegid(): number; - setegid(id: number | string): void; - getgroups(): number[]; - setgroups(groups: Array<string | number>): void; - version: string; - versions: ProcessVersions; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string | number): void; - pid: number; - title: string; - arch: string; - platform: Platform; - mainModule?: NodeModule; - memoryUsage(): MemoryUsage; - cpuUsage(previousValue?: CpuUsage): CpuUsage; - nextTick(callback: Function, ...args: any[]): void; - umask(mask?: number): number; - uptime(): number; - hrtime(time?: [number, number]): [number, number]; - domain: Domain; - - // Worker - send?(message: any, sendHandle?: any): void; - disconnect(): void; - connected: boolean; - - /** - * EventEmitter - * 1. beforeExit - * 2. disconnect - * 3. exit - * 4. message - * 5. rejectionHandled - * 6. uncaughtException - * 7. unhandledRejection - * 8. warning - * 9. message - * 10. <All OS Signals> - * 11. newListener/removeListener inherited from EventEmitter - */ - addListener(event: "beforeExit", listener: BeforeExitListener): this; - addListener(event: "disconnect", listener: DisconnectListener): this; - addListener(event: "exit", listener: ExitListener): this; - addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - addListener(event: "warning", listener: WarningListener): this; - addListener(event: "message", listener: MessageListener): this; - addListener(event: Signals, listener: SignalsListener): this; - addListener(event: "newListener", listener: NewListenerListener): this; - addListener(event: "removeListener", listener: RemoveListenerListener): this; - - emit(event: "beforeExit", code: number): boolean; - emit(event: "disconnect"): boolean; - emit(event: "exit", code: number): boolean; - emit(event: "rejectionHandled", promise: Promise<any>): boolean; - emit(event: "uncaughtException", error: Error): boolean; - emit(event: "unhandledRejection", reason: any, promise: Promise<any>): boolean; - emit(event: "warning", warning: Error): boolean; - emit(event: "message", message: any, sendHandle: any): this; - emit(event: Signals): boolean; - emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this; - emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this; - - on(event: "beforeExit", listener: BeforeExitListener): this; - on(event: "disconnect", listener: DisconnectListener): this; - on(event: "exit", listener: ExitListener): this; - on(event: "rejectionHandled", listener: RejectionHandledListener): this; - on(event: "uncaughtException", listener: UncaughtExceptionListener): this; - on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - on(event: "warning", listener: WarningListener): this; - on(event: "message", listener: MessageListener): this; - on(event: Signals, listener: SignalsListener): this; - on(event: "newListener", listener: NewListenerListener): this; - on(event: "removeListener", listener: RemoveListenerListener): this; - - once(event: "beforeExit", listener: BeforeExitListener): this; - once(event: "disconnect", listener: DisconnectListener): this; - once(event: "exit", listener: ExitListener): this; - once(event: "rejectionHandled", listener: RejectionHandledListener): this; - once(event: "uncaughtException", listener: UncaughtExceptionListener): this; - once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - once(event: "warning", listener: WarningListener): this; - once(event: "message", listener: MessageListener): this; - once(event: Signals, listener: SignalsListener): this; - once(event: "newListener", listener: NewListenerListener): this; - once(event: "removeListener", listener: RemoveListenerListener): this; - - prependListener(event: "beforeExit", listener: BeforeExitListener): this; - prependListener(event: "disconnect", listener: DisconnectListener): this; - prependListener(event: "exit", listener: ExitListener): this; - prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependListener(event: "warning", listener: WarningListener): this; - prependListener(event: "message", listener: MessageListener): this; - prependListener(event: Signals, listener: SignalsListener): this; - prependListener(event: "newListener", listener: NewListenerListener): this; - prependListener(event: "removeListener", listener: RemoveListenerListener): this; - - prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; - prependOnceListener(event: "disconnect", listener: DisconnectListener): this; - prependOnceListener(event: "exit", listener: ExitListener): this; - prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; - prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; - prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; - prependOnceListener(event: "warning", listener: WarningListener): this; - prependOnceListener(event: "message", listener: MessageListener): this; - prependOnceListener(event: Signals, listener: SignalsListener): this; - prependOnceListener(event: "newListener", listener: NewListenerListener): this; - prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this; - - listeners(event: "beforeExit"): BeforeExitListener[]; - listeners(event: "disconnect"): DisconnectListener[]; - listeners(event: "exit"): ExitListener[]; - listeners(event: "rejectionHandled"): RejectionHandledListener[]; - listeners(event: "uncaughtException"): UncaughtExceptionListener[]; - listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; - listeners(event: "warning"): WarningListener[]; - listeners(event: "message"): MessageListener[]; - listeners(event: Signals): SignalsListener[]; - listeners(event: "newListener"): NewListenerListener[]; - listeners(event: "removeListener"): RemoveListenerListener[]; - } - - export interface Global { - Array: typeof Array; - ArrayBuffer: typeof ArrayBuffer; - Boolean: typeof Boolean; - Buffer: typeof Buffer; - DataView: typeof DataView; - Date: typeof Date; - Error: typeof Error; - EvalError: typeof EvalError; - Float32Array: typeof Float32Array; - Float64Array: typeof Float64Array; - Function: typeof Function; - GLOBAL: Global; - Infinity: typeof Infinity; - Int16Array: typeof Int16Array; - Int32Array: typeof Int32Array; - Int8Array: typeof Int8Array; - Intl: typeof Intl; - JSON: typeof JSON; - Map: MapConstructor; - Math: typeof Math; - NaN: typeof NaN; - Number: typeof Number; - Object: typeof Object; - Promise: Function; - RangeError: typeof RangeError; - ReferenceError: typeof ReferenceError; - RegExp: typeof RegExp; - Set: SetConstructor; - String: typeof String; - Symbol: Function; - SyntaxError: typeof SyntaxError; - TypeError: typeof TypeError; - URIError: typeof URIError; - Uint16Array: typeof Uint16Array; - Uint32Array: typeof Uint32Array; - Uint8Array: typeof Uint8Array; - Uint8ClampedArray: Function; - WeakMap: WeakMapConstructor; - WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: any) => void; - clearInterval: (intervalId: NodeJS.Timer) => void; - clearTimeout: (timeoutId: NodeJS.Timer) => void; - console: typeof console; - decodeURI: typeof decodeURI; - decodeURIComponent: typeof decodeURIComponent; - encodeURI: typeof encodeURI; - encodeURIComponent: typeof encodeURIComponent; - escape: (str: string) => string; - eval: typeof eval; - global: Global; - isFinite: typeof isFinite; - isNaN: typeof isNaN; - parseFloat: typeof parseFloat; - parseInt: typeof parseInt; - process: Process; - root: Global; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - undefined: typeof undefined; - unescape: (str: string) => string; - gc: () => void; - v8debug?: any; - } - - export interface Timer { - ref(): void; - unref(): void; - } - - class Module { - static runMain(): void; - static wrap(code: string): string; - - static Module: typeof Module; - - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: Module | null; - children: Module[]; - paths: string[]; - - constructor(id: string, parent?: Module); - } + export interface Timer { + ref(): void; + unref(): void; + } } interface IterableIterator<T> { } @@ -814,59 +540,59 @@ interface IterableIterator<T> { } * @deprecated */ interface NodeBuffer extends Uint8Array { - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - entries(): IterableIterator<[number, number]>; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - keys(): IterableIterator<number>; - values(): IterableIterator<number>; + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + entries(): IterableIterator<[number, number]>; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + keys(): IterableIterator<number>; + values(): IterableIterator<number>; } /************************************************ @@ -875,269 +601,205 @@ interface NodeBuffer extends Uint8Array { * * ************************************************/ declare module "buffer" { - export var INSPECT_MAX_BYTES: number; - var BuffType: typeof Buffer; - var SlowBuffType: typeof SlowBuffer; - export { BuffType as Buffer, SlowBuffType as SlowBuffer }; + export var INSPECT_MAX_BYTES: number; + var BuffType: typeof Buffer; + var SlowBuffType: typeof SlowBuffer; + export { BuffType as Buffer, SlowBuffType as SlowBuffer }; } declare module "querystring" { - export interface StringifyOptions { - encodeURIComponent?: Function; - } + export interface StringifyOptions { + encodeURIComponent?: Function; + } - export interface ParseOptions { - maxKeys?: number; - decodeURIComponent?: Function; - } + export interface ParseOptions { + maxKeys?: number; + decodeURIComponent?: Function; + } - interface ParsedUrlQuery { [key: string]: string | string[]; } - - export function stringify<T>(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; - export function parse<T extends {}>(str: string, sep?: string, eq?: string, options?: ParseOptions): T; - export function escape(str: string): string; - export function unescape(str: string): string; + export function stringify<T>(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; + export function parse<T extends {}>(str: string, sep?: string, eq?: string, options?: ParseOptions): T; + export function escape(str: string): string; + export function unescape(str: string): string; } declare module "events" { - class internal extends NodeJS.EventEmitter { } + class internal extends NodeJS.EventEmitter { } - namespace internal { - export class EventEmitter extends internal { - static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated - static defaultMaxListeners: number; + namespace internal { + export class EventEmitter extends internal { + static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated + static defaultMaxListeners: number; - addListener(event: string | symbol, listener: (...args: any[]) => void): this; - on(event: string | symbol, listener: (...args: any[]) => void): this; - once(event: string | symbol, listener: (...args: any[]) => void): this; - prependListener(event: string | symbol, listener: (...args: any[]) => void): this; - prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeListener(event: string | symbol, listener: (...args: any[]) => void): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - eventNames(): Array<string | symbol>; - listenerCount(type: string | symbol): number; - } - } + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + eventNames(): (string | symbol)[]; + listenerCount(type: string | symbol): number; + } + } - export = internal; + export = internal; } declare module "http" { - import * as events from "events"; - import * as net from "net"; - import * as stream from "stream"; - import { URL } from "url"; + import * as events from "events"; + import * as net from "net"; + import * as stream from "stream"; - // incoming headers will never contain number - export interface IncomingHttpHeaders { - 'accept'?: string; - 'access-control-allow-origin'?: string; - 'access-control-allow-credentials'?: string; - 'access-control-expose-headers'?: string; - 'access-control-max-age'?: string; - 'access-control-allow-methods'?: string; - 'access-control-allow-headers'?: string; - 'accept-patch'?: string; - 'accept-ranges'?: string; - 'age'?: string; - 'allow'?: string; - 'alt-svc'?: string; - 'cache-control'?: string; - 'connection'?: string; - 'content-disposition'?: string; - 'content-encoding'?: string; - 'content-language'?: string; - 'content-length'?: string; - 'content-location'?: string; - 'content-range'?: string; - 'content-type'?: string; - 'date'?: string; - 'expires'?: string; - 'host'?: string; - 'last-modified'?: string; - 'location'?: string; - 'pragma'?: string; - 'proxy-authenticate'?: string; - 'public-key-pins'?: string; - 'retry-after'?: string; - 'set-cookie'?: string[]; - 'strict-transport-security'?: string; - 'trailer'?: string; - 'transfer-encoding'?: string; - 'tk'?: string; - 'upgrade'?: string; - 'vary'?: string; - 'via'?: string; - 'warning'?: string; - 'www-authenticate'?: string; - [header: string]: string | string[] | undefined; - } + export interface RequestOptions { + protocol?: string; + host?: string; + hostname?: string; + family?: number; + port?: number; + localAddress?: string; + socketPath?: string; + method?: string; + path?: string; + headers?: { [key: string]: any }; + auth?: string; + agent?: Agent | boolean; + timeout?: number; + } - // outgoing headers allows numbers (as they are converted internally to strings) - export interface OutgoingHttpHeaders { - [header: string]: number | string | string[] | undefined; - } - - export interface ClientRequestArgs { - protocol?: string; - host?: string; - hostname?: string; - family?: number; - port?: number | string; - defaultPort?: number | string; - localAddress?: string; - socketPath?: string; - method?: string; - path?: string; - headers?: OutgoingHttpHeaders; - auth?: string; - agent?: Agent | boolean; - _defaultAgent?: Agent; - timeout?: number; - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278 - createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: net.Socket) => void) => net.Socket; - } - - export class Server extends net.Server { - constructor(requestListener?: (req: IncomingMessage, res: ServerResponse) => void); - - setTimeout(msecs?: number, callback?: () => void): this; - setTimeout(callback: () => void): this; - maxHeadersCount: number; - timeout: number; - keepAliveTimeout: number; - } + export interface Server extends net.Server { + setTimeout(msecs: number, callback: Function): void; + maxHeadersCount: number; + timeout: number; + listening: boolean; + } /** * @deprecated Use IncomingMessage */ - export class ServerRequest extends IncomingMessage { - connection: net.Socket; - } + export interface ServerRequest extends IncomingMessage { + connection: net.Socket; + } + export interface ServerResponse extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js - export class OutgoingMessage extends stream.Writable { - upgrading: boolean; - chunkedEncoding: boolean; - shouldKeepAlive: boolean; - useChunkedEncodingByDefault: boolean; - sendDate: boolean; - finished: boolean; - headersSent: boolean; - connection: net.Socket; + writeContinue(): void; + writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; + writeHead(statusCode: number, headers?: any): void; + statusCode: number; + statusMessage: string; + headersSent: boolean; + setHeader(name: string, value: string | string[]): void; + setTimeout(msecs: number, callback: Function): ServerResponse; + sendDate: boolean; + getHeader(name: string): string; + removeHeader(name: string): void; + write(chunk: any, encoding?: string): any; + addTrailers(headers: any): void; + finished: boolean; - constructor(); + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface ClientRequest extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - setTimeout(msecs: number, callback?: () => void): this; - destroy(error: Error): void; - setHeader(name: string, value: number | string | string[]): void; - getHeader(name: string): number | string | string[] | undefined; - getHeaders(): OutgoingHttpHeaders; - getHeaderNames(): string[]; - hasHeader(name: string): boolean; - removeHeader(name: string): void; - addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void; - flushHeaders(): void; - } + write(chunk: any, encoding?: string): void; + abort(): void; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256 - export class ServerResponse extends OutgoingMessage { - statusCode: number; - statusMessage: string; + setHeader(name: string, value: string | string[]): void; + getHeader(name: string): string; + removeHeader(name: string): void; + addTrailers(headers: any): void; - constructor(req: IncomingMessage); - - assignSocket(socket: net.Socket): void; - detachSocket(socket: net.Socket): void; - // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53 - // no args in writeContinue callback - writeContinue(callback?: () => void): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): void; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void; - } - - // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77 - export class ClientRequest extends OutgoingMessage { - connection: net.Socket; - socket: net.Socket; - aborted: number; - - constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); - - abort(): void; - onSocket(socket: net.Socket): void; - setTimeout(timeout: number, callback?: () => void): this; - setNoDelay(noDelay?: boolean): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - } - - export class IncomingMessage extends stream.Readable { - constructor(socket: net.Socket); - - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - connection: net.Socket; - headers: IncomingHttpHeaders; - rawHeaders: string[]; - trailers: { [key: string]: string | undefined }; - rawTrailers: string[]; - setTimeout(msecs: number, callback: () => void): this; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface IncomingMessage extends stream.Readable { + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + connection: net.Socket; + headers: any; + rawHeaders: string[]; + trailers: any; + rawTrailers: any; + setTimeout(msecs: number, callback: Function): NodeJS.Timer; /** * Only valid for request obtained from http.Server. */ - method?: string; + method?: string; /** * Only valid for request obtained from http.Server. */ - url?: string; + url?: string; /** * Only valid for response obtained from http.ClientRequest. */ - statusCode?: number; + statusCode?: number; /** * Only valid for response obtained from http.ClientRequest. */ - statusMessage?: string; - socket: net.Socket; - destroy(error?: Error): void; - } - + statusMessage?: string; + socket: net.Socket; + destroy(error?: Error): void; + } /** * @deprecated Use IncomingMessage */ - export class ClientResponse extends IncomingMessage { } + export interface ClientResponse extends IncomingMessage { } - export interface AgentOptions { + export interface AgentOptions { /** * Keep sockets around in a pool to be used by other requests in the future. Default = false */ - keepAlive?: boolean; + keepAlive?: boolean; /** * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. * Only relevant if keepAlive is set to true. */ - keepAliveMsecs?: number; + keepAliveMsecs?: number; /** * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity */ - maxSockets?: number; + maxSockets?: number; /** * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. */ - maxFreeSockets?: number; - } + maxFreeSockets?: number; + } - export class Agent { - maxSockets: number; - sockets: any; - requests: any; + export class Agent { + maxSockets: number; + sockets: any; + requests: any; - constructor(opts?: AgentOptions); + constructor(opts?: AgentOptions); /** * Destroy any sockets that are currently in use by the agent. @@ -1145,61 +807,62 @@ declare module "http" { * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, * sockets may hang open for quite a long time before the server terminates them. */ - destroy(): void; - } + destroy(): void; + } - export var METHODS: string[]; + export var METHODS: string[]; - export var STATUS_CODES: { - [errorCode: number]: string | undefined; - [errorCode: string]: string | undefined; - }; - - export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; - export function createClient(port?: number, host?: string): any; - - // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, - // create interface RequestOptions would make the naming more clear to developers - export interface RequestOptions extends ClientRequestArgs { } - export function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; - export var globalAgent: Agent; + export var STATUS_CODES: { + [errorCode: number]: string; + [errorCode: string]: string; + }; + export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; + export function createClient(port?: number, host?: string): any; + export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; + export var globalAgent: Agent; } declare module "cluster" { - import * as child from "child_process"; - import * as events from "events"; - import * as net from "net"; + import * as child from "child_process"; + import * as events from "events"; + import * as net from "net"; - // interfaces - export interface ClusterSettings { - execArgv?: string[]; // default: process.execArgv - exec?: string; - args?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - inspectPort?: number | (() => number); - } + // interfaces + export interface ClusterSettings { + execArgv?: string[]; // default: process.execArgv + exec?: string; + args?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } - export interface Address { - address: string; - port: number; - addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" - } + export interface ClusterSetupMasterSettings { + exec?: string; // default: process.argv[1] + args?: string[]; // default: process.argv.slice(2) + silent?: boolean; // default: false + stdio?: any[]; + } - export class Worker extends events.EventEmitter { - id: number; - process: child.ChildProcess; - suicide: boolean; - send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; - kill(signal?: string): void; - destroy(signal?: string): void; - disconnect(): void; - isConnected(): boolean; - isDead(): boolean; - exitedAfterDisconnect: boolean; + export interface Address { + address: string; + port: number; + addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" + } + + export class Worker extends events.EventEmitter { + id: string; + process: child.ChildProcess; + suicide: boolean; + send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; + kill(signal?: string): void; + destroy(signal?: string): void; + disconnect(): void; + isConnected(): boolean; + isDead(): boolean; + exitedAfterDisconnect: boolean; /** * events.EventEmitter @@ -1210,68 +873,68 @@ declare module "cluster" { * 5. message * 6. online */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "listening", listener: (address: Address) => void): this; + addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "listening", address: Address): boolean; - emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: () => void): boolean + emit(event: "error", listener: (error: Error) => void): boolean + emit(event: "exit", listener: (code: number, signal: string) => void): boolean + emit(event: "listening", listener: (address: Address) => void): boolean + emit(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): boolean + emit(event: "online", listener: () => void): boolean - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "listening", listener: (address: Address) => void): this; + on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "listening", listener: (address: Address) => void): this; + once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "listening", listener: (address: Address) => void): this; + prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "listening", listener: (address: Address) => void): this; + prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: () => void): this; + } - export interface Cluster extends events.EventEmitter { - Worker: Worker; - disconnect(callback?: Function): void; - fork(env?: any): Worker; - isMaster: boolean; - isWorker: boolean; - // TODO: cluster.schedulingPolicy - settings: ClusterSettings; - setupMaster(settings?: ClusterSettings): void; - worker?: Worker; - workers?: { - [index: string]: Worker | undefined - }; + export interface Cluster extends events.EventEmitter { + Worker: Worker; + disconnect(callback?: Function): void; + fork(env?: any): Worker; + isMaster: boolean; + isWorker: boolean; + // TODO: cluster.schedulingPolicy + settings: ClusterSettings; + setupMaster(settings?: ClusterSetupMasterSettings): void; + worker: Worker; + workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -1283,72 +946,73 @@ declare module "cluster" { * 6. online * 7. setup */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: any) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: (worker: Worker) => void): this; + addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + addListener(event: "fork", listener: (worker: Worker) => void): this; + addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: (worker: Worker) => void): this; + addListener(event: "setup", listener: (settings: any) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", worker: Worker): boolean; - emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - emit(event: "fork", worker: Worker): boolean; - emit(event: "listening", worker: Worker, address: Address): boolean; - emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - emit(event: "online", worker: Worker): boolean; - emit(event: "setup", settings: any): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + emit(event: "fork", listener: (worker: Worker) => void): boolean; + emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + emit(event: "online", listener: (worker: Worker) => void): boolean; + emit(event: "setup", listener: (settings: any) => void): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: any) => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: (worker: Worker) => void): this; + on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + on(event: "fork", listener: (worker: Worker) => void): this; + on(event: "listening", listener: (worker: Worker, address: Address) => void): this; + on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: (worker: Worker) => void): this; + on(event: "setup", listener: (settings: any) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: any) => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: (worker: Worker) => void): this; + once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + once(event: "fork", listener: (worker: Worker) => void): this; + once(event: "listening", listener: (worker: Worker, address: Address) => void): this; + once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: (worker: Worker) => void): this; + once(event: "setup", listener: (settings: any) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: any) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependListener(event: "fork", listener: (worker: Worker) => void): this; + prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: (worker: Worker) => void): this; + prependListener(event: "setup", listener: (settings: any) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: any) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; + prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: (worker: Worker) => void): this; + prependOnceListener(event: "setup", listener: (settings: any) => void): this; - export function disconnect(callback?: Function): void; - export function fork(env?: any): Worker; - export var isMaster: boolean; - export var isWorker: boolean; - // TODO: cluster.schedulingPolicy - export var settings: ClusterSettings; - export function setupMaster(settings?: ClusterSettings): void; - export var worker: Worker; - export var workers: { - [index: string]: Worker | undefined - }; + } + + export function disconnect(callback?: Function): void; + export function fork(env?: any): Worker; + export var isMaster: boolean; + export var isWorker: boolean; + // TODO: cluster.schedulingPolicy + export var settings: ClusterSettings; + export function setupMaster(settings?: ClusterSetupMasterSettings): void; + export var worker: Worker; + export var workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -1360,520 +1024,499 @@ declare module "cluster" { * 6. online * 7. setup */ - export function addListener(event: string, listener: (...args: any[]) => void): Cluster; - export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "setup", listener: (settings: any) => void): Cluster; + export function addListener(event: string, listener: Function): Cluster; + export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "setup", listener: (settings: any) => void): Cluster; - export function emit(event: string | symbol, ...args: any[]): boolean; - export function emit(event: "disconnect", worker: Worker): boolean; - export function emit(event: "exit", worker: Worker, code: number, signal: string): boolean; - export function emit(event: "fork", worker: Worker): boolean; - export function emit(event: "listening", worker: Worker, address: Address): boolean; - export function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; - export function emit(event: "online", worker: Worker): boolean; - export function emit(event: "setup", settings: any): boolean; + export function emit(event: string | symbol, ...args: any[]): boolean; + export function emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + export function emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + export function emit(event: "fork", listener: (worker: Worker) => void): boolean; + export function emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + export function emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + export function emit(event: "online", listener: (worker: Worker) => void): boolean; + export function emit(event: "setup", listener: (settings: any) => void): boolean; - export function on(event: string, listener: (...args: any[]) => void): Cluster; - export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function on(event: "fork", listener: (worker: Worker) => void): Cluster; - export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function on(event: "online", listener: (worker: Worker) => void): Cluster; - export function on(event: "setup", listener: (settings: any) => void): Cluster; + export function on(event: string, listener: Function): Cluster; + export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function on(event: "fork", listener: (worker: Worker) => void): Cluster; + export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function on(event: "online", listener: (worker: Worker) => void): Cluster; + export function on(event: "setup", listener: (settings: any) => void): Cluster; - export function once(event: string, listener: (...args: any[]) => void): Cluster; - export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function once(event: "fork", listener: (worker: Worker) => void): Cluster; - export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function once(event: "online", listener: (worker: Worker) => void): Cluster; - export function once(event: "setup", listener: (settings: any) => void): Cluster; + export function once(event: string, listener: Function): Cluster; + export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function once(event: "fork", listener: (worker: Worker) => void): Cluster; + export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function once(event: "online", listener: (worker: Worker) => void): Cluster; + export function once(event: "setup", listener: (settings: any) => void): Cluster; - export function removeListener(event: string, listener: (...args: any[]) => void): Cluster; - export function removeAllListeners(event?: string): Cluster; - export function setMaxListeners(n: number): Cluster; - export function getMaxListeners(): number; - export function listeners(event: string): Function[]; - export function listenerCount(type: string): number; + export function removeListener(event: string, listener: Function): Cluster; + export function removeAllListeners(event?: string): Cluster; + export function setMaxListeners(n: number): Cluster; + export function getMaxListeners(): number; + export function listeners(event: string): Function[]; + export function listenerCount(type: string): number; - export function prependListener(event: string, listener: (...args: any[]) => void): Cluster; - export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependListener(event: string, listener: Function): Cluster; + export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; - export function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster; - export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependOnceListener(event: string, listener: Function): Cluster; + export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; - export function eventNames(): string[]; + export function eventNames(): string[]; } declare module "zlib" { - import * as stream from "stream"; + import * as stream from "stream"; - export interface ZlibOptions { - flush?: number; // default: zlib.constants.Z_NO_FLUSH - finishFlush?: number; // default: zlib.constants.Z_FINISH - chunkSize?: number; // default: 16*1024 - windowBits?: number; - level?: number; // compression only - memLevel?: number; // compression only - strategy?: number; // compression only - dictionary?: any; // deflate/inflate only, empty dictionary by default - } + export interface ZlibOptions { + flush?: number; // default: zlib.constants.Z_NO_FLUSH + finishFlush?: number; // default: zlib.constants.Z_FINISH + chunkSize?: number; // default: 16*1024 + windowBits?: number; + level?: number; // compression only + memLevel?: number; // compression only + strategy?: number; // compression only + dictionary?: any; // deflate/inflate only, empty dictionary by default + } - export interface Zlib { - readonly bytesRead: number; - close(callback?: () => void): void; - flush(kind?: number | (() => void), callback?: () => void): void; - } + export interface Gzip extends stream.Transform { } + export interface Gunzip extends stream.Transform { } + export interface Deflate extends stream.Transform { } + export interface Inflate extends stream.Transform { } + export interface DeflateRaw extends stream.Transform { } + export interface InflateRaw extends stream.Transform { } + export interface Unzip extends stream.Transform { } - export interface ZlibParams { - params(level: number, strategy: number, callback: () => void): void; - } + export function createGzip(options?: ZlibOptions): Gzip; + export function createGunzip(options?: ZlibOptions): Gunzip; + export function createDeflate(options?: ZlibOptions): Deflate; + export function createInflate(options?: ZlibOptions): Inflate; + export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; + export function createInflateRaw(options?: ZlibOptions): InflateRaw; + export function createUnzip(options?: ZlibOptions): Unzip; - export interface ZlibReset { - reset(): void; - } + export function deflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function deflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gunzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function unzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export interface Gzip extends stream.Transform, Zlib { } - export interface Gunzip extends stream.Transform, Zlib { } - export interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { } - export interface Inflate extends stream.Transform, Zlib, ZlibReset { } - export interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { } - export interface InflateRaw extends stream.Transform, Zlib, ZlibReset { } - export interface Unzip extends stream.Transform, Zlib { } + export namespace constants { + // Allowed flush values. - export function createGzip(options?: ZlibOptions): Gzip; - export function createGunzip(options?: ZlibOptions): Gunzip; - export function createDeflate(options?: ZlibOptions): Deflate; - export function createInflate(options?: ZlibOptions): Inflate; - export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; - export function createInflateRaw(options?: ZlibOptions): InflateRaw; - export function createUnzip(options?: ZlibOptions): Unzip; + export const Z_NO_FLUSH: number; + export const Z_PARTIAL_FLUSH: number; + export const Z_SYNC_FLUSH: number; + export const Z_FULL_FLUSH: number; + export const Z_FINISH: number; + export const Z_BLOCK: number; + export const Z_TREES: number; - export function deflate(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function deflateRaw(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gunzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflate(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflateRaw(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function unzip(buf: Buffer | string, callback: (error: Error | null, result: Buffer) => void): void; - export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void; - export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. - export namespace constants { - // Allowed flush values. + export const Z_OK: number; + export const Z_STREAM_END: number; + export const Z_NEED_DICT: number; + export const Z_ERRNO: number; + export const Z_STREAM_ERROR: number; + export const Z_DATA_ERROR: number; + export const Z_MEM_ERROR: number; + export const Z_BUF_ERROR: number; + export const Z_VERSION_ERROR: number; - export const Z_NO_FLUSH: number; - export const Z_PARTIAL_FLUSH: number; - export const Z_SYNC_FLUSH: number; - export const Z_FULL_FLUSH: number; - export const Z_FINISH: number; - export const Z_BLOCK: number; - export const Z_TREES: number; + // Compression levels. - // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. + export const Z_NO_COMPRESSION: number; + export const Z_BEST_SPEED: number; + export const Z_BEST_COMPRESSION: number; + export const Z_DEFAULT_COMPRESSION: number; - export const Z_OK: number; - export const Z_STREAM_END: number; - export const Z_NEED_DICT: number; - export const Z_ERRNO: number; - export const Z_STREAM_ERROR: number; - export const Z_DATA_ERROR: number; - export const Z_MEM_ERROR: number; - export const Z_BUF_ERROR: number; - export const Z_VERSION_ERROR: number; + // Compression strategy. - // Compression levels. + export const Z_FILTERED: number; + export const Z_HUFFMAN_ONLY: number; + export const Z_RLE: number; + export const Z_FIXED: number; + export const Z_DEFAULT_STRATEGY: number; + } - export const Z_NO_COMPRESSION: number; - export const Z_BEST_SPEED: number; - export const Z_BEST_COMPRESSION: number; - export const Z_DEFAULT_COMPRESSION: number; - - // Compression strategy. - - export const Z_FILTERED: number; - export const Z_HUFFMAN_ONLY: number; - export const Z_RLE: number; - export const Z_FIXED: number; - export const Z_DEFAULT_STRATEGY: number; - } - - // Constants - export var Z_NO_FLUSH: number; - export var Z_PARTIAL_FLUSH: number; - export var Z_SYNC_FLUSH: number; - export var Z_FULL_FLUSH: number; - export var Z_FINISH: number; - export var Z_BLOCK: number; - export var Z_TREES: number; - export var Z_OK: number; - export var Z_STREAM_END: number; - export var Z_NEED_DICT: number; - export var Z_ERRNO: number; - export var Z_STREAM_ERROR: number; - export var Z_DATA_ERROR: number; - export var Z_MEM_ERROR: number; - export var Z_BUF_ERROR: number; - export var Z_VERSION_ERROR: number; - export var Z_NO_COMPRESSION: number; - export var Z_BEST_SPEED: number; - export var Z_BEST_COMPRESSION: number; - export var Z_DEFAULT_COMPRESSION: number; - export var Z_FILTERED: number; - export var Z_HUFFMAN_ONLY: number; - export var Z_RLE: number; - export var Z_FIXED: number; - export var Z_DEFAULT_STRATEGY: number; - export var Z_BINARY: number; - export var Z_TEXT: number; - export var Z_ASCII: number; - export var Z_UNKNOWN: number; - export var Z_DEFLATED: number; + // Constants + export var Z_NO_FLUSH: number; + export var Z_PARTIAL_FLUSH: number; + export var Z_SYNC_FLUSH: number; + export var Z_FULL_FLUSH: number; + export var Z_FINISH: number; + export var Z_BLOCK: number; + export var Z_TREES: number; + export var Z_OK: number; + export var Z_STREAM_END: number; + export var Z_NEED_DICT: number; + export var Z_ERRNO: number; + export var Z_STREAM_ERROR: number; + export var Z_DATA_ERROR: number; + export var Z_MEM_ERROR: number; + export var Z_BUF_ERROR: number; + export var Z_VERSION_ERROR: number; + export var Z_NO_COMPRESSION: number; + export var Z_BEST_SPEED: number; + export var Z_BEST_COMPRESSION: number; + export var Z_DEFAULT_COMPRESSION: number; + export var Z_FILTERED: number; + export var Z_HUFFMAN_ONLY: number; + export var Z_RLE: number; + export var Z_FIXED: number; + export var Z_DEFAULT_STRATEGY: number; + export var Z_BINARY: number; + export var Z_TEXT: number; + export var Z_ASCII: number; + export var Z_UNKNOWN: number; + export var Z_DEFLATED: number; } declare module "os" { - export interface CpuInfo { - model: string; - speed: number; - times: { - user: number; - nice: number; - sys: number; - idle: number; - irq: number; - }; - } + export interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } - export interface NetworkInterfaceBase { - address: string; - netmask: string; - mac: string; - internal: boolean; - } + export interface NetworkInterfaceInfo { + address: string; + netmask: string; + family: string; + mac: string; + internal: boolean; + } - export interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { - family: "IPv4"; - } - - export interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { - family: "IPv6"; - scopeid: number; - } - - export type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; - - export function hostname(): string; - export function loadavg(): number[]; - export function uptime(): number; - export function freemem(): number; - export function totalmem(): number; - export function cpus(): CpuInfo[]; - export function type(): string; - export function release(): string; - export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; - export function homedir(): string; - export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string }; - export var constants: { - UV_UDP_REUSEADDR: number, - signals: { - SIGHUP: number; - SIGINT: number; - SIGQUIT: number; - SIGILL: number; - SIGTRAP: number; - SIGABRT: number; - SIGIOT: number; - SIGBUS: number; - SIGFPE: number; - SIGKILL: number; - SIGUSR1: number; - SIGSEGV: number; - SIGUSR2: number; - SIGPIPE: number; - SIGALRM: number; - SIGTERM: number; - SIGCHLD: number; - SIGSTKFLT: number; - SIGCONT: number; - SIGSTOP: number; - SIGTSTP: number; - SIGTTIN: number; - SIGTTOU: number; - SIGURG: number; - SIGXCPU: number; - SIGXFSZ: number; - SIGVTALRM: number; - SIGPROF: number; - SIGWINCH: number; - SIGIO: number; - SIGPOLL: number; - SIGPWR: number; - SIGSYS: number; - SIGUNUSED: number; - }, - errno: { - E2BIG: number; - EACCES: number; - EADDRINUSE: number; - EADDRNOTAVAIL: number; - EAFNOSUPPORT: number; - EAGAIN: number; - EALREADY: number; - EBADF: number; - EBADMSG: number; - EBUSY: number; - ECANCELED: number; - ECHILD: number; - ECONNABORTED: number; - ECONNREFUSED: number; - ECONNRESET: number; - EDEADLK: number; - EDESTADDRREQ: number; - EDOM: number; - EDQUOT: number; - EEXIST: number; - EFAULT: number; - EFBIG: number; - EHOSTUNREACH: number; - EIDRM: number; - EILSEQ: number; - EINPROGRESS: number; - EINTR: number; - EINVAL: number; - EIO: number; - EISCONN: number; - EISDIR: number; - ELOOP: number; - EMFILE: number; - EMLINK: number; - EMSGSIZE: number; - EMULTIHOP: number; - ENAMETOOLONG: number; - ENETDOWN: number; - ENETRESET: number; - ENETUNREACH: number; - ENFILE: number; - ENOBUFS: number; - ENODATA: number; - ENODEV: number; - ENOENT: number; - ENOEXEC: number; - ENOLCK: number; - ENOLINK: number; - ENOMEM: number; - ENOMSG: number; - ENOPROTOOPT: number; - ENOSPC: number; - ENOSR: number; - ENOSTR: number; - ENOSYS: number; - ENOTCONN: number; - ENOTDIR: number; - ENOTEMPTY: number; - ENOTSOCK: number; - ENOTSUP: number; - ENOTTY: number; - ENXIO: number; - EOPNOTSUPP: number; - EOVERFLOW: number; - EPERM: number; - EPIPE: number; - EPROTO: number; - EPROTONOSUPPORT: number; - EPROTOTYPE: number; - ERANGE: number; - EROFS: number; - ESPIPE: number; - ESRCH: number; - ESTALE: number; - ETIME: number; - ETIMEDOUT: number; - ETXTBSY: number; - EWOULDBLOCK: number; - EXDEV: number; - }, - }; - export function arch(): string; - export function platform(): NodeJS.Platform; - export function tmpdir(): string; - export const EOL: string; - export function endianness(): "BE" | "LE"; + export function hostname(): string; + export function loadavg(): number[]; + export function uptime(): number; + export function freemem(): number; + export function totalmem(): number; + export function cpus(): CpuInfo[]; + export function type(): string; + export function release(): string; + export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; + export function homedir(): string; + export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string } + export var constants: { + UV_UDP_REUSEADDR: number, + signals: { + SIGHUP: number; + SIGINT: number; + SIGQUIT: number; + SIGILL: number; + SIGTRAP: number; + SIGABRT: number; + SIGIOT: number; + SIGBUS: number; + SIGFPE: number; + SIGKILL: number; + SIGUSR1: number; + SIGSEGV: number; + SIGUSR2: number; + SIGPIPE: number; + SIGALRM: number; + SIGTERM: number; + SIGCHLD: number; + SIGSTKFLT: number; + SIGCONT: number; + SIGSTOP: number; + SIGTSTP: number; + SIGTTIN: number; + SIGTTOU: number; + SIGURG: number; + SIGXCPU: number; + SIGXFSZ: number; + SIGVTALRM: number; + SIGPROF: number; + SIGWINCH: number; + SIGIO: number; + SIGPOLL: number; + SIGPWR: number; + SIGSYS: number; + SIGUNUSED: number; + }, + errno: { + E2BIG: number; + EACCES: number; + EADDRINUSE: number; + EADDRNOTAVAIL: number; + EAFNOSUPPORT: number; + EAGAIN: number; + EALREADY: number; + EBADF: number; + EBADMSG: number; + EBUSY: number; + ECANCELED: number; + ECHILD: number; + ECONNABORTED: number; + ECONNREFUSED: number; + ECONNRESET: number; + EDEADLK: number; + EDESTADDRREQ: number; + EDOM: number; + EDQUOT: number; + EEXIST: number; + EFAULT: number; + EFBIG: number; + EHOSTUNREACH: number; + EIDRM: number; + EILSEQ: number; + EINPROGRESS: number; + EINTR: number; + EINVAL: number; + EIO: number; + EISCONN: number; + EISDIR: number; + ELOOP: number; + EMFILE: number; + EMLINK: number; + EMSGSIZE: number; + EMULTIHOP: number; + ENAMETOOLONG: number; + ENETDOWN: number; + ENETRESET: number; + ENETUNREACH: number; + ENFILE: number; + ENOBUFS: number; + ENODATA: number; + ENODEV: number; + ENOENT: number; + ENOEXEC: number; + ENOLCK: number; + ENOLINK: number; + ENOMEM: number; + ENOMSG: number; + ENOPROTOOPT: number; + ENOSPC: number; + ENOSR: number; + ENOSTR: number; + ENOSYS: number; + ENOTCONN: number; + ENOTDIR: number; + ENOTEMPTY: number; + ENOTSOCK: number; + ENOTSUP: number; + ENOTTY: number; + ENXIO: number; + EOPNOTSUPP: number; + EOVERFLOW: number; + EPERM: number; + EPIPE: number; + EPROTO: number; + EPROTONOSUPPORT: number; + EPROTOTYPE: number; + ERANGE: number; + EROFS: number; + ESPIPE: number; + ESRCH: number; + ESTALE: number; + ETIME: number; + ETIMEDOUT: number; + ETXTBSY: number; + EWOULDBLOCK: number; + EXDEV: number; + }, + }; + export function arch(): string; + export function platform(): NodeJS.Platform; + export function tmpdir(): string; + export var EOL: string; + export function endianness(): "BE" | "LE"; } declare module "https" { - import * as tls from "tls"; - import * as events from "events"; - import * as http from "http"; - import { URL } from "url"; + import * as tls from "tls"; + import * as events from "events"; + import * as http from "http"; - export type ServerOptions = tls.SecureContextOptions & tls.TlsOptions; + export interface ServerOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + crl?: any; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: any; + SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; + } - // see https://nodejs.org/docs/latest-v8.x/api/https.html#https_https_request_options_callback - type extendedRequestKeys = "pfx" | - "key" | - "passphrase" | - "cert" | - "ca" | - "ciphers" | - "rejectUnauthorized" | - "secureProtocol" | - "servername"; + export interface RequestOptions extends http.RequestOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + } - export type RequestOptions = http.RequestOptions & Pick<tls.ConnectionOptions, extendedRequestKeys>; + export interface Agent extends http.Agent { } - export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { - rejectUnauthorized?: boolean; - maxCachedSessions?: number; - } + export interface AgentOptions extends http.AgentOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + maxCachedSessions?: number; + } - export class Agent extends http.Agent { - constructor(options?: AgentOptions); - } - - export class Server extends tls.Server { - setTimeout(callback: () => void): this; - setTimeout(msecs?: number, callback?: () => void): this; - timeout: number; - keepAliveTimeout: number; - } - - export function createServer(options: ServerOptions, requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void): Server; - export function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export var globalAgent: Agent; + export var Agent: { + new(options?: AgentOptions): Agent; + }; + export interface Server extends tls.Server { } + export function createServer(options: ServerOptions, requestListener?: Function): Server; + export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export var globalAgent: Agent; } declare module "punycode" { - export function decode(string: string): string; - export function encode(string: string): string; - export function toUnicode(domain: string): string; - export function toASCII(domain: string): string; - export var ucs2: ucs2; - interface ucs2 { - decode(string: string): number[]; - encode(codePoints: number[]): string; - } - export var version: any; + export function decode(string: string): string; + export function encode(string: string): string; + export function toUnicode(domain: string): string; + export function toASCII(domain: string): string; + export var ucs2: ucs2; + interface ucs2 { + decode(string: string): number[]; + encode(codePoints: number[]): string; + } + export var version: any; } declare module "repl" { - import * as stream from "stream"; - import * as readline from "readline"; + import * as stream from "stream"; + import * as readline from "readline"; - export interface ReplOptions { - prompt?: string; - input?: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - terminal?: boolean; - eval?: Function; - useColors?: boolean; - useGlobal?: boolean; - ignoreUndefined?: boolean; - writer?: Function; - completer?: Function; - replMode?: any; - breakEvalOnSigint?: any; - } + export interface ReplOptions { + prompt?: string; + input?: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + terminal?: boolean; + eval?: Function; + useColors?: boolean; + useGlobal?: boolean; + ignoreUndefined?: boolean; + writer?: Function; + completer?: Function; + replMode?: any; + breakEvalOnSigint?: any; + } - export interface REPLServer extends readline.ReadLine { - context: any; - inputStream: NodeJS.ReadableStream; - outputStream: NodeJS.WritableStream; - - defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; - displayPrompt(preserveCursor?: boolean): void; + export interface REPLServer extends readline.ReadLine { + context: any; + defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; + displayPrompt(preserveCursor?: boolean): void; /** * events.EventEmitter * 1. exit * 2. reset - */ + **/ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: (...args: any[]) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: Function): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: any): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: any): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: (...args: any[]) => void): this; + on(event: string, listener: Function): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: Function): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: (...args: any[]) => void): this; + once(event: string, listener: Function): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: Function): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: (...args: any[]) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: Function): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: (...args: any[]) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: Function): this; + } - export function start(options?: string | ReplOptions): REPLServer; - - export class Recoverable extends SyntaxError { - err: Error; - - constructor(err: Error); - } + export function start(options?: string | ReplOptions): REPLServer; } declare module "readline" { - import * as events from "events"; - import * as stream from "stream"; + import * as events from "events"; + import * as stream from "stream"; - export interface Key { - sequence?: string; - name?: string; - ctrl?: boolean; - meta?: boolean; - shift?: boolean; - } + export interface Key { + sequence?: string; + name?: string; + ctrl?: boolean; + meta?: boolean; + shift?: boolean; + } - export interface ReadLine extends events.EventEmitter { - setPrompt(prompt: string): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: (answer: string) => void): void; - pause(): ReadLine; - resume(): ReadLine; - close(): void; - write(data: string | Buffer, key?: Key): void; + export interface ReadLine extends events.EventEmitter { + setPrompt(prompt: string): void; + prompt(preserveCursor?: boolean): void; + question(query: string, callback: (answer: string) => void): void; + pause(): ReadLine; + resume(): ReadLine; + close(): void; + write(data: string | Buffer, key?: Key): void; /** * events.EventEmitter @@ -1884,138 +1527,138 @@ declare module "readline" { * 5. SIGCONT * 6. SIGINT * 7. SIGTSTP - */ + **/ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: any) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: any) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: any): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: any): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: any) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: any) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: any) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: any) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: any) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: any) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: any) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: any) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + } - type Completer = (line: string) => CompleterResult; - type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; + type Completer = (line: string) => CompleterResult; + type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; - export type CompleterResult = [string[], string]; + export type CompleterResult = [string[], string]; - export interface ReadLineOptions { - input: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - completer?: Completer | AsyncCompleter; - terminal?: boolean; - historySize?: number; - } + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + completer?: Completer | AsyncCompleter; + terminal?: boolean; + historySize?: number; + prompt?: string; + crlfDelay?: number; + removeHistoryDuplicates?: boolean; + } - export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; - export function createInterface(options: ReadLineOptions): ReadLine; + export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; + export function createInterface(options: ReadLineOptions): ReadLine; - export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number): void; - export function emitKeypressEvents(stream: NodeJS.ReadableStream, interface?: ReadLine): void; - export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; - export function clearLine(stream: NodeJS.WritableStream, dir: number): void; - export function clearScreenDown(stream: NodeJS.WritableStream): void; + export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; + export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; + export function clearLine(stream: NodeJS.WritableStream, dir: number): void; + export function clearScreenDown(stream: NodeJS.WritableStream): void; } declare module "vm" { - export interface Context { } - export interface ScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - cachedData?: Buffer; - produceCachedData?: boolean; - } - export interface RunningScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - } - export class Script { - constructor(code: string, options?: ScriptOptions); - runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; - runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; - runInThisContext(options?: RunningScriptOptions): any; - } - export function createContext(sandbox?: Context): Context; - export function isContext(sandbox: Context): boolean; - export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; - export function runInDebugContext(code: string): any; - export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; - export function runInThisContext(code: string, options?: RunningScriptOptions): any; + export interface Context { } + export interface ScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + cachedData?: Buffer; + produceCachedData?: boolean; + } + export interface RunningScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + } + export class Script { + constructor(code: string, options?: ScriptOptions); + runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; + runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; + runInThisContext(options?: RunningScriptOptions): any; + } + export function createContext(sandbox?: Context): Context; + export function isContext(sandbox: Context): boolean; + export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; + export function runInDebugContext(code: string): any; + export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; + export function runInThisContext(code: string, options?: RunningScriptOptions): any; } declare module "child_process" { - import * as events from "events"; - import * as stream from "stream"; - import * as net from "net"; + import * as events from "events"; + import * as stream from "stream"; + import * as net from "net"; - export interface ChildProcess extends events.EventEmitter { - stdin: stream.Writable; - stdout: stream.Readable; - stderr: stream.Readable; - stdio: [stream.Writable, stream.Readable, stream.Readable]; - killed: boolean; - pid: number; - kill(signal?: string): void; - send(message: any, callback?: (error: Error) => void): boolean; - send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error) => void): boolean; - send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error) => void): boolean; - connected: boolean; - disconnect(): void; - unref(): void; - ref(): void; + export interface ChildProcess extends events.EventEmitter { + stdin: stream.Writable; + stdout: stream.Readable; + stderr: stream.Readable; + stdio: [stream.Writable, stream.Readable, stream.Readable]; + killed: boolean; + pid: number; + kill(signal?: string): void; + send(message: any, sendHandle?: any): boolean; + connected: boolean; + disconnect(): void; + unref(): void; + ref(): void; /** * events.EventEmitter @@ -2024,610 +1667,464 @@ declare module "child_process" { * 3. error * 4. exit * 5. message - */ + **/ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (code: number, signal: string) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (code: number, signal: string) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number, signal: string): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", code: number, signal: string): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "exit", code: number, signal: string): boolean; + emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (code: number, signal: string) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (code: number, signal: string) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (code: number, signal: string) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (code: number, signal: string) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (code: number, signal: string) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (code: number, signal: string) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + } - export interface MessageOptions { - keepOpen?: boolean; - } + export interface SpawnOptions { + cwd?: string; + env?: any; + stdio?: any; + detached?: boolean; + uid?: number; + gid?: number; + shell?: boolean | string; + windowsVerbatimArguments?: boolean; + } + export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; - export interface SpawnOptions { - cwd?: string; - env?: any; - stdio?: any; - detached?: boolean; - uid?: number; - gid?: number; - shell?: boolean | string; - windowsVerbatimArguments?: boolean; - } + export interface ExecOptions { + cwd?: string; + env?: any; + shell?: string; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + export interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: string; // specify `null`. + } + export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); + export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; + export interface ExecFileOptions { + cwd?: string; + env?: any; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: string; // specify `null`. + } + export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export interface ExecOptions { - cwd?: string; - env?: any; - shell?: string; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } + export interface ForkOptions { + cwd?: string; + env?: any; + execPath?: string; + execArgv?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } + export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; - export interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } + export interface SpawnSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + shell?: boolean | string; + } + export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding: string; // specify `null`. + } + export interface SpawnSyncReturns<T> { + pid: number; + output: string[]; + stdout: T; + stderr: T; + status: number; + signal: string; + error: Error; + } + export function spawnSync(command: string): SpawnSyncReturns<Buffer>; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>; + export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>; - export interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: string | null; // specify `null`. - } + export interface ExecSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + shell?: string; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding: string; // specify `null`. + } + export function execSync(command: string): Buffer; + export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; + export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; + export function execSync(command: string, options?: ExecSyncOptions): Buffer; - // no `options` definitely means stdout/stderr are `string`. - export function exec(command: string, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - export function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - export function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - export function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - export function exec(command: string, options: ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - export function exec(command: string, options: ({ encoding?: string | null } & ExecOptions) | undefined | null, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace exec { - export function __promisify__(command: string): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options: ExecOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - export interface ExecFileOptions { - cwd?: string; - env?: any; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - windowsVerbatimArguments?: boolean; - } - export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: 'buffer' | null; - } - export interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { - encoding: string; - } - - export function execFile(file: string): ChildProcess; - export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess; - - // no `options` definitely means stdout/stderr are `string`. - export function execFile(file: string, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. - export function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - - // `options` with well known `encoding` means stdout/stderr are definitely `string`. - export function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. - // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. - export function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess; - - // `options` without an `encoding` means stdout/stderr are definitely `string`. - export function execFile(file: string, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess; - - // fallback if nothing else matches. Worst case is always `string | Buffer`. - export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess; - export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace execFile { - export function __promisify__(file: string): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>; - export function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>; - export function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - export function __promisify__(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>; - } - - export interface ForkOptions { - cwd?: string; - env?: any; - execPath?: string; - execArgv?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - windowsVerbatimArguments?: boolean; - } - export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; - - export interface SpawnSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - shell?: boolean | string; - windowsVerbatimArguments?: boolean; - } - export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding: string; // specify `null`. - } - export interface SpawnSyncReturns<T> { - pid: number; - output: string[]; - stdout: T; - stderr: T; - status: number; - signal: string; - error: Error; - } - export function spawnSync(command: string): SpawnSyncReturns<Buffer>; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>; - export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>; - - export interface ExecSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - shell?: string; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding: string; // specify `null`. - } - export function execSync(command: string): Buffer; - export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; - export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; - export function execSync(command: string, options?: ExecSyncOptions): Buffer; - - export interface ExecFileSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding: string; // specify `null`. - } - export function execFileSync(command: string): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; + export interface ExecFileSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding: string; // specify `null`. + } + export function execFileSync(command: string): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; } declare module "url" { - import { ParsedUrlQuery } from 'querystring'; + export interface Url { + href?: string; + protocol?: string; + auth?: string; + hostname?: string; + port?: string; + host?: string; + pathname?: string; + search?: string; + query?: string | any; + slashes?: boolean; + hash?: string; + path?: string; + } - export interface UrlObjectCommon { - auth?: string; - hash?: string; - host?: string; - hostname?: string; - href?: string; - path?: string; - pathname?: string; - protocol?: string; - search?: string; - slashes?: boolean; - } + export interface UrlObject { + protocol?: string; + slashes?: boolean; + auth?: string; + host?: string; + hostname?: string; + port?: string | number; + pathname?: string; + search?: string; + query?: { [key: string]: any; }; + hash?: string; + } - // Input to `url.format` - export interface UrlObject extends UrlObjectCommon { - port?: string | number; - query?: string | null | { [key: string]: any }; - } + export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; + export function format(URL: URL, options?: URLFormatOptions): string; + export function format(urlObject: UrlObject): string; + export function resolve(from: string, to: string): string; - // Output of `url.parse` - export interface Url extends UrlObjectCommon { - port?: string; - query?: string | null | ParsedUrlQuery; - } + export interface URLFormatOptions { + auth?: boolean; + fragment?: boolean; + search?: boolean; + unicode?: boolean; + } - export interface UrlWithParsedQuery extends Url { - query: ParsedUrlQuery; - } + export class URLSearchParams implements Iterable<string[]> { + constructor(init?: URLSearchParams | string | { [key: string]: string | string[] } | Iterable<string[]>); + append(name: string, value: string): void; + delete(name: string): void; + entries(): Iterator<string[]>; + forEach(callback: (value: string, name: string) => void): void; + get(name: string): string | null; + getAll(name: string): string[]; + has(name: string): boolean; + keys(): Iterator<string>; + set(name: string, value: string): void; + sort(): void; + toString(): string; + values(): Iterator<string>; + [Symbol.iterator](): Iterator<string[]>; + } - export interface UrlWithStringQuery extends Url { - query: string | null; - } - - export function parse(urlStr: string): UrlWithStringQuery; - export function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery; - export function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; - export function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; - - export function format(URL: URL, options?: URLFormatOptions): string; - export function format(urlObject: UrlObject | string): string; - export function resolve(from: string, to: string): string; - - export interface URLFormatOptions { - auth?: boolean; - fragment?: boolean; - search?: boolean; - unicode?: boolean; - } - - export class URLSearchParams implements Iterable<[string, string]> { - constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>); - append(name: string, value: string): void; - delete(name: string): void; - entries(): IterableIterator<[string, string]>; - forEach(callback: (value: string, name: string) => void): void; - get(name: string): string | null; - getAll(name: string): string[]; - has(name: string): boolean; - keys(): IterableIterator<string>; - set(name: string, value: string): void; - sort(): void; - toString(): string; - values(): IterableIterator<string>; - [Symbol.iterator](): IterableIterator<[string, string]>; - } - - export class URL { - constructor(input: string, base?: string | URL); - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; - } + export class URL { + constructor(input: string, base?: string | URL); + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + readonly searchParams: URLSearchParams; + username: string; + toString(): string; + toJSON(): string; + } } declare module "dns" { - // Supported getaddrinfo flags. - export const ADDRCONFIG: number; - export const V4MAPPED: number; + // Supported getaddrinfo flags. + export const ADDRCONFIG: number; + export const V4MAPPED: number; - export interface LookupOptions { - family?: number; - hints?: number; - all?: boolean; - } + export interface LookupOptions { + family?: number; + hints?: number; + all?: boolean; + } - export interface LookupOneOptions extends LookupOptions { - all?: false; - } + export interface LookupOneOptions extends LookupOptions { + all?: false; + } - export interface LookupAllOptions extends LookupOptions { - all: true; - } + export interface LookupAllOptions extends LookupOptions { + all: true; + } - export interface LookupAddress { - address: string; - family: number; - } + export interface LookupAddress { + address: string; + family: number; + } - export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; - export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; - export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; + export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; + export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lookup { - export function __promisify__(hostname: string, options: LookupAllOptions): Promise<{ address: LookupAddress[] }>; - export function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<{ address: string, family: number }>; - export function __promisify__(hostname: string, options?: LookupOptions | number): Promise<{ address: string | LookupAddress[], family?: number }>; - } + export interface ResolveOptions { + ttl: boolean; + } - export interface ResolveOptions { - ttl: boolean; - } + export interface ResolveWithTtlOptions extends ResolveOptions { + ttl: true; + } - export interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } + export interface RecordWithTtl { + address: string; + ttl: number; + } - export interface RecordWithTtl { - address: string; - ttl: number; - } + export interface MxRecord { + priority: number; + exchange: string; + } - export interface MxRecord { - priority: number; - exchange: string; - } + export interface NaptrRecord { + flags: string; + service: string; + regexp: string; + replacement: string; + order: number; + preference: number; + } - export interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } + export interface SoaRecord { + nsname: string; + hostmaster: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minttl: number; + } - export interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } + export interface SrvRecord { + priority: number; + weight: number; + port: number; + name: string; + } - export interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } + export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; + export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; + export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; - export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; - export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; + export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve { - export function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>; - export function __promisify__(hostname: string, rrtype: "MX"): Promise<MxRecord[]>; - export function __promisify__(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>; - export function __promisify__(hostname: string, rrtype: "SOA"): Promise<SoaRecord>; - export function __promisify__(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>; - export function __promisify__(hostname: string, rrtype: "TXT"): Promise<string[][]>; - export function __promisify__(hostname: string, rrtype?: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]>; - } + export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; + export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; + export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve4 { - export function __promisify__(hostname: string): Promise<string[]>; - export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>; - export function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>; - } + export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; + export function setServers(servers: string[]): void; - export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace resolve6 { - export function __promisify__(hostname: string): Promise<string[]>; - export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>; - export function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>; - } - - export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; - export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - - export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; - export function setServers(servers: string[]): void; - - // Error codes - export var NODATA: string; - export var FORMERR: string; - export var SERVFAIL: string; - export var NOTFOUND: string; - export var NOTIMP: string; - export var REFUSED: string; - export var BADQUERY: string; - export var BADNAME: string; - export var BADFAMILY: string; - export var BADRESP: string; - export var CONNREFUSED: string; - export var TIMEOUT: string; - export var EOF: string; - export var FILE: string; - export var NOMEM: string; - export var DESTRUCTION: string; - export var BADSTR: string; - export var BADFLAGS: string; - export var NONAME: string; - export var BADHINTS: string; - export var NOTINITIALIZED: string; - export var LOADIPHLPAPI: string; - export var ADDRGETNETWORKPARAMS: string; - export var CANCELLED: string; + //Error codes + export var NODATA: string; + export var FORMERR: string; + export var SERVFAIL: string; + export var NOTFOUND: string; + export var NOTIMP: string; + export var REFUSED: string; + export var BADQUERY: string; + export var BADNAME: string; + export var BADFAMILY: string; + export var BADRESP: string; + export var CONNREFUSED: string; + export var TIMEOUT: string; + export var EOF: string; + export var FILE: string; + export var NOMEM: string; + export var DESTRUCTION: string; + export var BADSTR: string; + export var BADFLAGS: string; + export var NONAME: string; + export var BADHINTS: string; + export var NOTINITIALIZED: string; + export var LOADIPHLPAPI: string; + export var ADDRGETNETWORKPARAMS: string; + export var CANCELLED: string; } declare module "net" { - import * as stream from "stream"; - import * as events from "events"; - import * as dns from "dns"; + import * as stream from "stream"; + import * as events from "events"; - type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void; + export interface Socket extends stream.Duplex { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - export interface SocketConstructorOpts { - fd?: number; - allowHalfOpen?: boolean; - readable?: boolean; - writable?: boolean; - } + connect(port: number, host?: string, connectionListener?: Function): void; + connect(path: string, connectionListener?: Function): void; + bufferSize: number; + setEncoding(encoding?: string): this; + write(data: any, encoding?: string, callback?: Function): void; + destroy(err?: any): void; + pause(): this; + resume(): this; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setKeepAlive(enable?: boolean, initialDelay?: number): void; + address(): { port: number; family: string; address: string; }; + unref(): void; + ref(): void; - export interface TcpSocketConnectOpts { - port: number; - host?: string; - localAddress?: string; - localPort?: number; - hints?: number; - family?: number; - lookup?: LookupFunction; - } + remoteAddress: string; + remoteFamily: string; + remotePort: number; + localAddress: string; + localPort: number; + bytesRead: number; + bytesWritten: number; + connecting: boolean; + destroyed: boolean; - export interface IpcSocketConnectOpts { - path: string; - } - - export type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; - - export class Socket extends stream.Duplex { - constructor(options?: SocketConstructorOpts); - - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(data: any, encoding?: string, callback?: Function): void; - - connect(options: SocketConnectOpts, connectionListener?: Function): this; - connect(port: number, host: string, connectionListener?: Function): this; - connect(port: number, connectionListener?: Function): this; - connect(path: string, connectionListener?: Function): this; - - bufferSize: number; - setEncoding(encoding?: string): this; - destroy(err?: any): void; - pause(): this; - resume(): this; - setTimeout(timeout: number, callback?: Function): this; - setNoDelay(noDelay?: boolean): this; - setKeepAlive(enable?: boolean, initialDelay?: number): this; - address(): { port: number; family: string; address: string; }; - unref(): void; - ref(): void; - - remoteAddress?: string; - remoteFamily?: string; - remotePort?: number; - localAddress: string; - localPort: number; - bytesRead: number; - bytesWritten: number; - connecting: boolean; - destroyed: boolean; - - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; /** * events.EventEmitter @@ -2640,97 +2137,97 @@ declare module "net" { * 7. lookup * 8. timeout */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (had_error: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - addListener(event: "timeout", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (had_error: boolean) => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "data", listener: (data: Buffer) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + addListener(event: "timeout", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", had_error: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", had_error: boolean): boolean; + emit(event: "connect"): boolean; + emit(event: "data", data: Buffer): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; + emit(event: "timeout"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (had_error: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - on(event: "timeout", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (had_error: boolean) => void): this; + on(event: "connect", listener: () => void): this; + on(event: "data", listener: (data: Buffer) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + on(event: "timeout", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (had_error: boolean) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - once(event: "timeout", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (had_error: boolean) => void): this; + once(event: "connect", listener: () => void): this; + once(event: "data", listener: (data: Buffer) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + once(event: "timeout", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (had_error: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (had_error: boolean) => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "data", listener: (data: Buffer) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "data", listener: (data: Buffer) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + } - export interface ListenOptions { - port?: number; - host?: string; - backlog?: number; - path?: string; - exclusive?: boolean; - } + export var Socket: { + new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; + }; - // https://github.com/nodejs/node/blob/master/lib/net.js - export class Server extends events.EventEmitter { - constructor(connectionListener?: (socket: Socket) => void); - constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void); + export interface ListenOptions { + port?: number; + host?: string; + backlog?: number; + path?: string; + exclusive?: boolean; + } - listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this; - listen(port?: number, hostname?: string, listeningListener?: Function): this; - listen(port?: number, backlog?: number, listeningListener?: Function): this; - listen(port?: number, listeningListener?: Function): this; - listen(path: string, backlog?: number, listeningListener?: Function): this; - listen(path: string, listeningListener?: Function): this; - listen(options: ListenOptions, listeningListener?: Function): this; - listen(handle: any, backlog?: number, listeningListener?: Function): this; - listen(handle: any, listeningListener?: Function): this; - close(callback?: Function): this; - address(): { port: number; family: string; address: string; }; - getConnections(cb: (error: Error | null, count: number) => void): void; - ref(): this; - unref(): this; - maxConnections: number; - connections: number; - listening: boolean; + export interface Server extends events.EventEmitter { + listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; + listen(port: number, hostname?: string, listeningListener?: Function): Server; + listen(port: number, backlog?: number, listeningListener?: Function): Server; + listen(port: number, listeningListener?: Function): Server; + listen(path: string, backlog?: number, listeningListener?: Function): Server; + listen(path: string, listeningListener?: Function): Server; + listen(options: ListenOptions, listeningListener?: Function): Server; + listen(handle: any, backlog?: number, listeningListener?: Function): Server; + listen(handle: any, listeningListener?: Function): Server; + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + getConnections(cb: (error: Error, count: number) => void): void; + ref(): Server; + unref(): Server; + maxConnections: number; + connections: number; + listening: boolean; /** * events.EventEmitter @@ -2739,123 +2236,101 @@ declare module "net" { * 3. error * 4. listening */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - } - - export interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts { - timeout?: number; - } - - export interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts { - timeout?: number; - } - - export type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts; - - export function createServer(connectionListener?: (socket: Socket) => void): Server; - export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; - export function connect(options: NetConnectOpts, connectionListener?: Function): Socket; - export function connect(port: number, host?: string, connectionListener?: Function): Socket; - export function connect(path: string, connectionListener?: Function): Socket; - export function createConnection(options: NetConnectOpts, connectionListener?: Function): Socket; - export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; - export function createConnection(path: string, connectionListener?: Function): Socket; - export function isIP(input: string): number; - export function isIPv4(input: string): boolean; - export function isIPv6(input: string): boolean; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + } + export function createServer(connectionListener?: (socket: Socket) => void): Server; + export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; + export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function connect(port: number, host?: string, connectionListener?: Function): Socket; + export function connect(path: string, connectionListener?: Function): Socket; + export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; + export function createConnection(path: string, connectionListener?: Function): Socket; + export function isIP(input: string): number; + export function isIPv4(input: string): boolean; + export function isIPv6(input: string): boolean; } declare module "dgram" { - import * as events from "events"; - import * as dns from "dns"; + import * as events from "events"; - interface RemoteInfo { - address: string; - family: string; - port: number; - } + interface RemoteInfo { + address: string; + family: string; + port: number; + } - interface AddressInfo { - address: string; - family: string; - port: number; - } + interface AddressInfo { + address: string; + family: string; + port: number; + } - interface BindOptions { - port: number; - address?: string; - exclusive?: boolean; - } + interface BindOptions { + port: number; + address?: string; + exclusive?: boolean; + } - type SocketType = "udp4" | "udp6"; + type SocketType = "udp4" | "udp6"; - interface SocketOptions { - type: SocketType; - reuseAddr?: boolean; - recvBufferSize?: number; - sendBufferSize?: number; - lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void) => void; - } + interface SocketOptions { + type: SocketType; + reuseAddr?: boolean; + } - export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export class Socket extends events.EventEmitter { - send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error | null, bytes: number) => void): void; - send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error | null, bytes: number) => void): void; - bind(port?: number, address?: string, callback?: () => void): void; - bind(port?: number, callback?: () => void): void; - bind(callback?: () => void): void; - bind(options: BindOptions, callback?: Function): void; - close(callback?: () => void): void; - address(): AddressInfo; - setBroadcast(flag: boolean): void; - setTTL(ttl: number): void; - setMulticastTTL(ttl: number): void; - setMulticastInterface(multicastInterface: string): void; - setMulticastLoopback(flag: boolean): void; - addMembership(multicastAddress: string, multicastInterface?: string): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - ref(): this; - unref(): this; - setRecvBufferSize(size: number): void; - setSendBufferSize(size: number): void; - getRecvBufferSize(): number; - getSendBufferSize(): number; + export interface Socket extends events.EventEmitter { + send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + bind(port?: number, address?: string, callback?: () => void): void; + bind(options: BindOptions, callback?: Function): void; + close(callback?: () => void): void; + address(): AddressInfo; + setBroadcast(flag: boolean): void; + setTTL(ttl: number): void; + setMulticastTTL(ttl: number): void; + setMulticastLoopback(flag: boolean): void; + addMembership(multicastAddress: string, multicastInterface?: string): void; + dropMembership(multicastAddress: string, multicastInterface?: string): void; + ref(): this; + unref(): this; /** * events.EventEmitter @@ -2863,1736 +2338,586 @@ declare module "dgram" { * 2. error * 3. listening * 4. message - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + **/ + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + } } declare module "fs" { - import * as stream from "stream"; - import * as events from "events"; - import { URL } from "url"; + import * as stream from "stream"; + import * as events from "events"; - /** - * Valid types for path values in "fs". - */ - export type PathLike = string | Buffer | URL; + interface Stats { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } - export class Stats { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atimeMs: number; - mtimeMs: number; - ctimeMs: number; - birthtimeMs: number; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } - - export interface FSWatcher extends events.EventEmitter { - close(): void; + interface FSWatcher extends events.EventEmitter { + close(): void; /** * events.EventEmitter * 1. change * 2. error */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + addListener(event: "error", listener: (error: Error) => void): this; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "error", listener: (error: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + on(event: "error", listener: (error: Error) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "error", listener: (error: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + once(event: "error", listener: (error: Error) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + } - export class ReadStream extends stream.Readable { - close(): void; - destroy(): void; - bytesRead: number; - path: string | Buffer; + export interface ReadStream extends stream.Readable { + close(): void; + destroy(): void; + bytesRead: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } - export class WriteStream extends stream.Writable { - close(): void; - bytesWritten: number; - path: string | Buffer; + export interface WriteStream extends stream.Writable { + close(): void; + bytesWritten: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; + + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; + + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; + + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; + + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } + + /** + * Asynchronous rename. + * @param oldPath + * @param newPath + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Synchronous rename + * @param oldPath + * @param newPath + */ + export function renameSync(oldPath: string, newPath: string): void; + export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncateSync(path: string | Buffer, len?: number): void; + export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncateSync(fd: number, len?: number): void; + export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chownSync(path: string | Buffer, uid: number, gid: number): void; + export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchownSync(fd: number, uid: number, gid: number): void; + export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchownSync(path: string | Buffer, uid: number, gid: number): void; + export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmodSync(path: string | Buffer, mode: number): void; + export function chmodSync(path: string | Buffer, mode: string): void; + export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmodSync(fd: number, mode: number): void; + export function fchmodSync(fd: number, mode: string): void; + export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmodSync(path: string | Buffer, mode: number): void; + export function lchmodSync(path: string | Buffer, mode: string): void; + export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function statSync(path: string | Buffer): Stats; + export function lstatSync(path: string | Buffer): Stats; + export function fstatSync(fd: number): Stats; + export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; + export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; + export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; + export function readlinkSync(path: string | Buffer): string; + export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; + /** + * Asynchronous unlink - deletes the file specified in {path} + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Synchronous unlink - deletes the file specified in {path} + * + * @param path + */ + export function unlinkSync(path: string | Buffer): void; + /** + * Asynchronous rmdir - removes the directory specified in {path} + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Synchronous rmdir - removes the directory specified in {path} + * + * @param path + */ + export function rmdirSync(path: string | Buffer): void; + /** + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdirSync(path: string | Buffer, mode?: number): void; + /** + * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdirSync(path: string | Buffer, mode?: string): void; + /** + * Asynchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * + * @param prefix + * @param callback The created folder path is passed as a string to the callback's second parameter. + */ + export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; + /** + * Synchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * + * @param prefix + * @returns Returns the created folder path. + */ + export function mkdtempSync(prefix: string): string; + export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdir(path: string | Buffer, options: string | {}, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdirSync(path: string | Buffer, options?: string | {}): string[]; + export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function closeSync(fd: number): void; + export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; + export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; + export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; + export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimesSync(fd: number, atime: number, mtime: number): void; + export function futimesSync(fd: number, atime: Date, mtime: Date): void; + export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fsyncSync(fd: number): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number | null): number; + export function writeSync(fd: number, data: any, position?: number | null, enconding?: string): number; + export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; + export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number | null): number; + /** + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param encoding + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, encoding: null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, encoding: string | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + /** + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, options: { encoding: null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, options: { encoding: string | null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + /** + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + /** + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + /** + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param encoding + */ + export function readFileSync(filename: string, encoding: null): Buffer; + export function readFileSync(filename: string, encoding: string): string; + export function readFileSync(filename: string, encoding: string | null): string | Buffer; + /** + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. + */ + export function readFileSync(filename: string, options: { encoding: null; flag?: string; }): Buffer; + export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; + export function readFileSync(filename: string, options: { encoding: string | null; flag?: string; }): string | Buffer; + /** + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. + */ + export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; + export function writeFile(filename: string | number, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFileSync(filename: string | number, data: any, encoding: string): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function appendFile(filename: string, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFileSync(filename: string, data: any, encoding: string): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; + export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; + export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; + export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; + export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; + export function existsSync(path: string | Buffer): boolean; + + export namespace constants { + // File Access Constants - on(event: string, listener: (...args: any[]) => void): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + /** Constant for fs.access(). File is visible to the calling process. */ + export const F_OK: number; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + /** Constant for fs.access(). File can be read by the calling process. */ + export const R_OK: number; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + /** Constant for fs.access(). File can be written by the calling process. */ + export const W_OK: number; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + /** Constant for fs.access(). File can be executed by the calling process. */ + export const X_OK: number; - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function rename(oldPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rename { - /** - * Asynchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function __promisify__(oldPath: PathLike, newPath: PathLike): Promise<void>; - } - - /** - * Synchronous rename(2) - Change the name or location of a file or directory. - * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function renameSync(oldPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncate(path: PathLike, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function truncate(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace truncate { - /** - * Asynchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function __promisify__(path: PathLike, len?: number | null): Promise<void>; - } - - /** - * Synchronous truncate(2) - Truncate a file to a specified length. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param len If not specified, defaults to `0`. - */ - export function truncateSync(path: PathLike, len?: number | null): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncate(fd: number, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - */ - export function ftruncate(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace ftruncate { - /** - * Asynchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function __promisify__(fd: number, len?: number | null): Promise<void>; - } - - /** - * Synchronous ftruncate(2) - Truncate a file to a specified length. - * @param fd A file descriptor. - * @param len If not specified, defaults to `0`. - */ - export function ftruncateSync(fd: number, len?: number | null): void; - - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chown { - /** - * Asynchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>; - } - - /** - * Synchronous chown(2) - Change ownership of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function chownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchown(fd: number, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchown { - /** - * Asynchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number, uid: number, gid: number): Promise<void>; - } - - /** - * Synchronous fchown(2) - Change ownership of a file. - * @param fd A file descriptor. - */ - export function fchownSync(fd: number, uid: number, gid: number): void; - - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchown { - /** - * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>; - } - - /** - * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lchownSync(path: PathLike, uid: number, gid: number): void; - - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace chmod { - /** - * Asynchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(path: PathLike, mode: string | number): Promise<void>; - } - - /** - * Synchronous chmod(2) - Change permissions of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function chmodSync(path: PathLike, mode: string | number): void; - - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmod(fd: number, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fchmod { - /** - * Asynchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(fd: number, mode: string | number): Promise<void>; - } - - /** - * Synchronous fchmod(2) - Change permissions of a file. - * @param fd A file descriptor. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function fchmodSync(fd: number, mode: string | number): void; - - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lchmod { - /** - * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function __promisify__(path: PathLike, mode: string | number): Promise<void>; - } - - /** - * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. - */ - export function lchmodSync(path: PathLike, mode: string | number): void; - - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace stat { - /** - * Asynchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise<Stats>; - } - - /** - * Synchronous stat(2) - Get file status. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function statSync(path: PathLike): Stats; - - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstat(fd: number, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fstat { - /** - * Asynchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise<Stats>; - } - - /** - * Synchronous fstat(2) - Get file status. - * @param fd A file descriptor. - */ - export function fstatSync(fd: number): Stats; - - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace lstat { - /** - * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise<Stats>; - } - - /** - * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function lstatSync(path: PathLike): Stats; - - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function link(existingPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace link { - /** - * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function link(existingPath: PathLike, newPath: PathLike): Promise<void>; - } - - /** - * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file. - * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function linkSync(existingPath: PathLike, newPath: PathLike): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlink(target: PathLike, path: PathLike, type: string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - */ - export function symlink(target: PathLike, path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace symlink { - /** - * Asynchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise<void>; - } + // File Open Constants - /** - * Synchronous symlink(2) - Create a new symbolic link to an existing file. - * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. - * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. - * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). - * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. - */ - export function symlinkSync(target: PathLike, path: PathLike, type?: string | null): void; + /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ + export const O_RDONLY: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void; + /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ + export const O_WRONLY: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, linkString: Buffer) => void): void; + /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ + export const O_RDWR: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string | Buffer) => void): void; + /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ + export const O_CREAT: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void; + /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ + export const O_EXCL: number; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readlink { - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>; + /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ + export const O_NOCTTY: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>; + /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ + export const O_TRUNC: number; - /** - * Asynchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>; - } + /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ + export const O_APPEND: number; - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ + export const O_DIRECTORY: number; - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer; + /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ + export const O_NOATIME: number; - /** - * Synchronous readlink(2) - read value of a symbolic link. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ + export const O_NOFOLLOW: number; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ + export const O_SYNC: number; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, resolvedPath: Buffer) => void): void; + /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ + export const O_SYMLINK: number; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string | Buffer) => void): void; + /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ + export const O_DIRECT: number; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void; + /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ + export const O_NONBLOCK: number; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace realpath { - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>; + // File Type Constants - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>; + /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ + export const S_IFMT: number; - /** - * Asynchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>; - } + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ + export const S_IFREG: number; - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ + export const S_IFDIR: number; - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ + export const S_IFCHR: number; - /** - * Synchronous realpath(3) - return the canonicalized absolute pathname. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ + export const S_IFBLK: number; - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlink(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ + export const S_IFIFO: number; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace unlink { - /** - * Asynchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise<void>; - } + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ + export const S_IFLNK: number; - /** - * Synchronous unlink(2) - delete a name and possibly the file it refers to. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function unlinkSync(path: PathLike): void; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ + export const S_IFSOCK: number; - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; + // File Mode Constants - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace rmdir { - /** - * Asynchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function __promisify__(path: PathLike): Promise<void>; - } + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ + export const S_IRWXU: number; - /** - * Synchronous rmdir(2) - delete a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function rmdirSync(path: PathLike): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ + export const S_IRUSR: number; - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdir(path: PathLike, mode: number | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ + export const S_IWUSR: number; - /** - * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function mkdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ + export const S_IXUSR: number; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdir { - /** - * Asynchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function __promisify__(path: PathLike, mode?: number | string | null): Promise<void>; - } + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ + export const S_IRWXG: number; - /** - * Synchronous mkdir(2) - create a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. - */ - export function mkdirSync(path: PathLike, mode?: number | string | null): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ + export const S_IRGRP: number; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ + export const S_IWGRP: number; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException, folder: Buffer) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ + export const S_IXGRP: number; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string | Buffer) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ + export const S_IRWXO: number; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - */ - export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException, folder: string) => void): void; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ + export const S_IROTH: number; - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace mkdtemp { - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ + export const S_IWOTH: number; - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>; - - /** - * Asynchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>; - } - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer; - - /** - * Synchronously creates a unique temporary directory. - * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readdir { - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): Promise<string[]>; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer" }): Promise<Buffer[]>; - - /** - * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string[] | Buffer[]>; - } - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer[]; - - /** - * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. - */ - export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): string[] | Buffer[]; - - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function close(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace close { - /** - * Asynchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise<void>; - } - - /** - * Synchronous close(2) - close a file descriptor. - * @param fd A file descriptor. - */ - export function closeSync(fd: number): void; - - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - - /** - * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - */ - export function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace open { - /** - * Asynchronous open(2) - open and possibly create a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise<number>; - } - - /** - * Synchronous open(2) - open and possibly create a file, returning a file descriptor.. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. - */ - export function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ + export const S_IXOTH: number; + } - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace utimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied path. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace futimes { - /** - * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise<void>; - } - - /** - * Synchronously change file timestamps of the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param atime The last access time. If a string is provided, it will be coerced to number. - * @param mtime The last modified time. If a string is provided, it will be coerced to number. - */ - export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void; - - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fsync { - /** - * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise<void>; - } - - /** - * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. - * @param fd A file descriptor. - */ - export function fsyncSync(fd: number): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - */ - export function write<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - */ - export function write<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, offset: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - */ - export function write<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function write(fd: number, string: any, position: number | undefined | null, encoding: string | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - */ - export function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace write { - /** - * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function __promisify__<TBuffer extends Buffer | Uint8Array>(fd: number, buffer?: TBuffer, offset?: number, length?: number, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>; - - /** - * Asynchronously writes `string` to the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>; - } - - /** - * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. - * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - */ - export function writeSync(fd: number, buffer: Buffer | Uint8Array, offset?: number | null, length?: number | null, position?: number | null): number; - - /** - * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. - * @param fd A file descriptor. - * @param string A string to write. If something other than a string is supplied it will be coerced to a string. - * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. - * @param encoding The expected string encoding. - */ - export function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number; - - /** - * Asynchronously reads data from the file referenced by the supplied file descriptor. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function read<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: TBuffer) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace read { - /** - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function __promisify__<TBuffer extends Buffer | Uint8Array>(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>; - } - - /** - * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read. - * @param fd A file descriptor. - * @param buffer The buffer that the data will be written to. - * @param offset The offset in the buffer at which to start writing. - * @param length The number of bytes to read. - * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. - */ - export function readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFile(path: PathLike | number, options: { encoding?: string | null; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - */ - export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace readFile { - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise<Buffer>; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise<string>; - - /** - * Asynchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise<string | Buffer>; - } - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string; - - /** - * Synchronously reads the entire contents of a file. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. - * If a flag is not provided, it defaults to `'r'`. - */ - export function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFile(path: PathLike | number, data: any, options: { encoding?: string | null; mode?: number | string; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function writeFile(path: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace writeFile { - /** - * Asynchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function __promisify__(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): Promise<void>; - } - - /** - * Synchronously writes data to a file, replacing the file if it already exists. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'w'` is used. - */ - export function writeFileSync(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFile(file: PathLike | number, data: any, options: { encoding?: string | null, mode?: string | number, flag?: string } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - */ - export function appendFile(file: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace appendFile { - /** - * Asynchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function __promisify__(file: PathLike | number, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string } | string | null): Promise<void>; - } - - /** - * Synchronously append data to a file, creating the file if it does not exist. - * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * If a file descriptor is provided, the underlying file will _not_ be closed automatically. - * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. - * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `mode` is not supplied, the default of `0o666` is used. - * If `mode` is a string, it is parsed as an octal integer. - * If `flag` is not supplied, the default of `'a'` is used. - */ - export function appendFileSync(file: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - */ - export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void; - - /** - * Stop watching for changes on `filename`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null, listener?: (event: string, filename: string) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. - * If `encoding` is not supplied, the default of `'utf8'` is used. - * If `persistent` is not supplied, the default of `true` is used. - * If `recursive` is not supplied, the default of `false` is used. - */ - export function watch(filename: PathLike, options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null, listener?: (event: string, filename: string | Buffer) => void): FSWatcher; - - /** - * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. - * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher; - - /** - * Asynchronously tests whether or not the given path exists by checking with the file system. - * @deprecated - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function exists(path: PathLike, callback: (exists: boolean) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace exists { - /** - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - function __promisify__(path: PathLike): Promise<boolean>; - } - - /** - * Synchronously tests whether or not the given path exists by checking with the file system. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function existsSync(path: PathLike): boolean; - - export namespace constants { - // File Access Constants - - /** Constant for fs.access(). File is visible to the calling process. */ - export const F_OK: number; - - /** Constant for fs.access(). File can be read by the calling process. */ - export const R_OK: number; - - /** Constant for fs.access(). File can be written by the calling process. */ - export const W_OK: number; - - /** Constant for fs.access(). File can be executed by the calling process. */ - export const X_OK: number; - - // File Open Constants - - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - export const O_RDONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - export const O_WRONLY: number; - - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - export const O_RDWR: number; - - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - export const O_CREAT: number; - - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - export const O_EXCL: number; - - /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ - export const O_NOCTTY: number; - - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - export const O_TRUNC: number; - - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - export const O_APPEND: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - export const O_DIRECTORY: number; - - /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ - export const O_NOATIME: number; - - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - export const O_NOFOLLOW: number; - - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - export const O_SYNC: number; - - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */ - export const O_DSYNC: number; - - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - export const O_SYMLINK: number; - - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - export const O_DIRECT: number; - - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - export const O_NONBLOCK: number; - - // File Type Constants - - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - export const S_IFMT: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - export const S_IFREG: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - export const S_IFDIR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - export const S_IFCHR: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - export const S_IFBLK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - export const S_IFIFO: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - export const S_IFLNK: number; - - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - export const S_IFSOCK: number; - - // File Mode Constants - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - export const S_IRWXU: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - export const S_IRUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - export const S_IWUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - export const S_IXUSR: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - export const S_IRWXG: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - export const S_IRGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - export const S_IWGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - export const S_IXGRP: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - export const S_IRWXO: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - export const S_IROTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - export const S_IWOTH: number; - - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - export const S_IXOTH: number; - - /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */ - export const COPYFILE_EXCL: number; - } - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, mode: number | undefined, callback: (err: NodeJS.ErrnoException) => void): void; - - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function access(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace access { - /** - * Asynchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function __promisify__(path: PathLike, mode?: number): Promise<void>; - } - - /** - * Synchronously tests a user's permissions for the file specified by path. - * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function accessSync(path: PathLike, mode?: number): void; - - /** - * Returns a new `ReadStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createReadStream(path: PathLike, options?: string | { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - highWaterMark?: number; - }): ReadStream; - - /** - * Returns a new `WriteStream` object. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. - * URL support is _experimental_. - */ - export function createWriteStream(path: PathLike, options?: string | { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - }): WriteStream; - - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace fdatasync { - /** - * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function __promisify__(fd: number): Promise<void>; - } - - /** - * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device. - * @param fd A file descriptor. - */ - export function fdatasyncSync(fd: number): void; - - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - */ - export function copyFile(src: PathLike, dest: PathLike, callback: (err: NodeJS.ErrnoException) => void): void; - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists. - */ - export function copyFile(src: PathLike, dest: PathLike, flags: number, callback: (err: NodeJS.ErrnoException) => void): void; - - // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime. - export namespace copyFile { - /** - * Asynchronously copies src to dest. By default, dest is overwritten if it already exists. - * No arguments other than a possible exception are given to the callback function. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists. - */ - export function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise<void>; - } - - /** - * Synchronously copies src to dest. By default, dest is overwritten if it already exists. - * Node.js makes no guarantees about the atomicity of the copy operation. - * If an error occurs after the destination file has been opened for writing, Node.js will attempt - * to remove the destination. - * @param src A path to the source file. - * @param dest A path to the destination file. - * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists. - */ - export function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void; + /** Tests a user's permissions for the file specified by path. */ + export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; + export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; + /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ + export function accessSync(path: string | Buffer, mode?: number): void; + export function createReadStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + end?: number; + }): ReadStream; + export function createWriteStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + }): WriteStream; + export function fdatasync(fd: number, callback: Function): void; + export function fdatasyncSync(fd: number): void; } declare module "path" { + /** * A parsed path object generated by path.parse() or consumed by path.format(). */ - export interface ParsedPath { + export interface ParsedPath { /** * The root of the path such as '/' or 'c:\' */ - root: string; + root: string; /** * The full directory path such as '/home/user/dir' or 'c:\path\dir' */ - dir: string; + dir: string; /** * The file name including extension (if any) such as 'index.html' */ - base: string; + base: string; /** * The file extension (if any) such as '.html' */ - ext: string; + ext: string; /** * The file name without extension (if any) such as 'index' */ - name: string; - } - export interface FormatInputPathObject { - /** - * The root of the path such as '/' or 'c:\' - */ - root?: string; - /** - * The full directory path such as '/home/user/dir' or 'c:\path\dir' - */ - dir?: string; - /** - * The file name including extension (if any) such as 'index.html' - */ - base?: string; - /** - * The file extension (if any) such as '.html' - */ - ext?: string; - /** - * The file name without extension (if any) such as 'index' - */ - name?: string; - } + name: string; + } /** * Normalize a string path, reducing '..' and '.' parts. @@ -4600,14 +2925,14 @@ declare module "path" { * * @param p string path to normalize. */ - export function normalize(p: string): string; + export function normalize(p: string): string; /** * Join all arguments together and normalize the resulting path. * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. * * @param paths paths to join. */ - export function join(...paths: string[]): string; + export function join(...paths: string[]): string; /** * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. * @@ -4617,24 +2942,27 @@ declare module "path" { * * @param pathSegments string paths to join. Non-string arguments are ignored. */ - export function resolve(...pathSegments: string[]): string; + export function resolve(...pathSegments: any[]): string; /** * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. * * @param path path to test. */ - export function isAbsolute(path: string): boolean; + export function isAbsolute(path: string): boolean; /** * Solve the relative path from {from} to {to}. * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. + * + * @param from + * @param to */ - export function relative(from: string, to: string): string; + export function relative(from: string, to: string): string; /** * Return the directory name of a path. Similar to the Unix dirname command. * * @param p the path to evaluate. */ - export function dirname(p: string): string; + export function dirname(p: string): string; /** * Return the last portion of a path. Similar to the Unix basename command. * Often used to extract the file name from a fully qualified path. @@ -4642,177 +2970,176 @@ declare module "path" { * @param p the path to evaluate. * @param ext optionally, an extension to remove from the result. */ - export function basename(p: string, ext?: string): string; + export function basename(p: string, ext?: string): string; /** * Return the extension of the path, from the last '.' to end of string in the last portion of the path. * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string * * @param p the path to evaluate. */ - export function extname(p: string): string; + export function extname(p: string): string; /** * The platform-specific file separator. '\\' or '/'. */ - export var sep: string; + export var sep: string; /** * The platform-specific file delimiter. ';' or ':'. */ - export var delimiter: string; + export var delimiter: string; /** * Returns an object from a path string - the opposite of format(). * * @param pathString path to evaluate. */ - export function parse(pathString: string): ParsedPath; + export function parse(pathString: string): ParsedPath; /** * Returns a path string from an object - the opposite of parse(). * * @param pathString path to evaluate. */ - export function format(pathObject: FormatInputPathObject): string; + export function format(pathObject: ParsedPath): string; - export module posix { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: FormatInputPathObject): string; - } + export module posix { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } - export module win32 { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: FormatInputPathObject): string; - } + export module win32 { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } } declare module "string_decoder" { - export interface NodeStringDecoder { - write(buffer: Buffer): string; - end(buffer?: Buffer): string; - } - export var StringDecoder: { - new(encoding?: string): NodeStringDecoder; - }; + export interface NodeStringDecoder { + write(buffer: Buffer): string; + end(buffer?: Buffer): string; + } + export var StringDecoder: { + new(encoding?: string): NodeStringDecoder; + }; } declare module "tls" { - import * as crypto from "crypto"; - import * as dns from "dns"; - import * as net from "net"; - import * as stream from "stream"; + import * as crypto from "crypto"; + import * as net from "net"; + import * as stream from "stream"; - var CLIENT_RENEG_LIMIT: number; - var CLIENT_RENEG_WINDOW: number; + var CLIENT_RENEG_LIMIT: number; + var CLIENT_RENEG_WINDOW: number; - export interface Certificate { + export interface Certificate { /** * Country code. */ - C: string; + C: string; /** * Street. */ - ST: string; + ST: string; /** * Locality. */ - L: string; + L: string; /** * Organization. */ - O: string; + O: string; /** * Organizational unit. */ - OU: string; + OU: string; /** * Common name. */ - CN: string; - } + CN: string; + } - export interface PeerCertificate { - subject: Certificate; - issuer: Certificate; - subjectaltname: string; - infoAccess: { [index: string]: string[] | undefined }; - modulus: string; - exponent: string; - valid_from: string; - valid_to: string; - fingerprint: string; - ext_key_usage: string[]; - serialNumber: string; - raw: Buffer; - } + export interface PeerCertificate { + subject: Certificate; + issuer: Certificate; + subjectaltname: string; + infoAccess: { [index: string]: string[] }; + modulus: string; + exponent: string; + valid_from: string; + valid_to: string; + fingerprint: string; + ext_key_usage: string[]; + serialNumber: string; + raw: Buffer; + } - export interface DetailedPeerCertificate extends PeerCertificate { - issuerCertificate: DetailedPeerCertificate; - } + export interface DetailedPeerCertificate extends PeerCertificate { + issuerCertificate: DetailedPeerCertificate; + } - export interface CipherNameAndProtocol { + export interface CipherNameAndProtocol { /** * The cipher name. */ - name: string; + name: string; /** * SSL/TLS protocol version. */ - version: string; - } + version: string; + } - export class TLSSocket extends net.Socket { + export class TLSSocket extends net.Socket { /** * Construct a new tls.TLSSocket object from an existing TCP socket. */ - constructor(socket: net.Socket, options?: { + constructor(socket: net.Socket, options?: { /** * An optional TLS context object from tls.createSecureContext() */ - secureContext?: SecureContext, + secureContext?: SecureContext, /** * If true the TLS socket will be instantiated in server-mode. * Defaults to false. */ - isServer?: boolean, + isServer?: boolean, /** * An optional net.Server instance. */ - server?: net.Server, + server?: net.Server, /** * If true the server will request a certificate from clients that * connect and attempt to verify that certificate. Defaults to * false. */ - requestCert?: boolean, + requestCert?: boolean, /** * If true the server will reject any connection which is not * authorized with the list of supplied CAs. This option only has an * effect if requestCert is true. Defaults to false. */ - rejectUnauthorized?: boolean, + rejectUnauthorized?: boolean, /** * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, + NPNProtocols?: string[] | Buffer, /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -4820,7 +3147,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, + ALPNProtocols?: string[] | Buffer, /** * SNICallback(servername, cb) <Function> A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -4830,73 +3157,99 @@ declare module "tls" { * SecureContext.) If SNICallback wasn't provided the default callback * with high-level API will be used (see below). */ - SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void, + SNICallback?: Function, /** * An optional Buffer instance containing a TLS session. */ - session?: Buffer, + session?: Buffer, /** * If true, specifies that the OCSP status request extension will be * added to the client hello and an 'OCSPResponse' event will be * emitted on the socket before establishing a secure communication */ - requestOCSP?: boolean - }); - + requestOCSP?: boolean + }); + /** + * Returns the bound address, the address family name and port of the underlying socket as reported by + * the operating system. + * @returns {any} - An object with three properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }. + */ + address(): { port: number; family: string; address: string }; /** * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. */ - authorized: boolean; + authorized: boolean; /** * The reason why the peer's certificate has not been verified. * This property becomes available only when tlsSocket.authorized === false. */ - authorizationError: Error; + authorizationError: Error; /** * Static boolean value, always true. * May be used to distinguish TLS sockets from regular ones. */ - encrypted: boolean; + encrypted: boolean; /** * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. - * @returns Returns an object representing the cipher name + * @returns {CipherNameAndProtocol} - Returns an object representing the cipher name * and the SSL/TLS protocol version of the current connection. */ - getCipher(): CipherNameAndProtocol; + getCipher(): CipherNameAndProtocol; /** * Returns an object representing the peer's certificate. * The returned object has some properties corresponding to the field of the certificate. * If detailed argument is true the full chain with issuer property will be returned, * if false only the top certificate without issuer property. * If the peer does not provide a certificate, it returns null or an empty object. - * @param detailed - If true; the full chain with issuer property will be returned. - * @returns An object representing the peer's certificate. + * @param {boolean} detailed - If true; the full chain with issuer property will be returned. + * @returns {PeerCertificate | DetailedPeerCertificate} - An object representing the peer's certificate. */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; /** * Could be used to speed up handshake establishment when reconnecting to the server. - * @returns ASN.1 encoded TLS session or undefined if none was negotiated. + * @returns {any} - ASN.1 encoded TLS session or undefined if none was negotiated. */ - getSession(): any; + getSession(): any; /** * NOTE: Works only with client TLS sockets. * Useful only for debugging, for session reuse provide session option to tls.connect(). - * @returns TLS session ticket or undefined if none was negotiated. + * @returns {any} - TLS session ticket or undefined if none was negotiated. */ - getTLSTicket(): any; + getTLSTicket(): any; + /** + * The string representation of the local IP address. + */ + localAddress: string; + /** + * The numeric representation of the local port. + */ + localPort: number; + /** + * The string representation of the remote IP address. + * For example, '74.125.127.100' or '2001:4860:a005::68'. + */ + remoteAddress: string; + /** + * The string representation of the remote IP family. 'IPv4' or 'IPv6'. + */ + remoteFamily: string; + /** + * The numeric representation of the remote port. For example, 443. + */ + remotePort: number; /** * Initiate TLS renegotiation process. * * NOTE: Can be used to request peer's certificate after the secure connection has been established. * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout. - * @param options - The options may contain the following fields: rejectUnauthorized, + * @param {TlsOptions} options - The options may contain the following fields: rejectUnauthorized, * requestCert (See tls.createServer() for details). - * @param callback - callback(err) will be executed with null as err, once the renegotiation + * @param {Function} callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): any; + renegotiate(options: TlsOptions, callback: (err: Error) => any): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by @@ -4904,74 +3257,97 @@ declare module "tls" { * large fragments can span multiple roundtrips, and their processing can be delayed due to packet * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead, * which may decrease overall server throughput. - * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). - * @returns Returns true on success, false otherwise. + * @param {number} size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). + * @returns {boolean} - Returns true on success, false otherwise. */ - setMaxSendFragment(size: number): boolean; + setMaxSendFragment(size: number): boolean; /** * events.EventEmitter * 1. OCSPResponse * 2. secureConnect - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; + **/ + addListener(event: string, listener: Function): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + } - export interface TlsOptions extends SecureContextOptions { - handshakeTimeout?: number; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; - ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; - SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; - sessionTimeout?: number; - ticketKeys?: Buffer; - } + export interface TlsOptions { + host?: string; + port?: number; + pfx?: string | Buffer[]; + key?: string | string[] | Buffer | any[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | string[] | Buffer | Buffer[]; + crl?: string | string[]; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: string[] | Buffer; + SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; + ecdhCurve?: string; + dhparam?: string | Buffer; + handshakeTimeout?: number; + ALPNProtocols?: string[] | Buffer; + sessionTimeout?: number; + ticketKeys?: any; + sessionIdContext?: string; + secureProtocol?: string; + } - export interface ConnectionOptions extends SecureContextOptions { - host?: string; - port?: number; - path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. - socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket - rejectUnauthorized?: boolean; // Defaults to true - NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; - ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; - checkServerIdentity?: typeof checkServerIdentity; - servername?: string; // SNI TLS Extension - session?: Buffer; - minDHSize?: number; - secureContext?: SecureContext; // If not provided, the entire ConnectionOptions object will be passed to tls.createSecureContext() - lookup?: net.LookupFunction; - } + export interface ConnectionOptions { + host?: string; + port?: number; + socket?: net.Socket; + pfx?: string | Buffer + key?: string | string[] | Buffer | Buffer[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | Buffer | (string | Buffer)[]; + rejectUnauthorized?: boolean; + NPNProtocols?: (string | Buffer)[]; + servername?: string; + path?: string; + ALPNProtocols?: (string | Buffer)[]; + checkServerIdentity?: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any; + secureProtocol?: string; + secureContext?: Object; + session?: Buffer; + minDHSize?: number; + } - export class Server extends net.Server { - addContext(hostName: string, credentials: { - key: string; - cert: string; - ca: string; - }): void; + export interface Server extends net.Server { + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + addContext(hostName: string, credentials: { + key: string; + cert: string; + ca: string; + }): void; + maxConnections: number; + connections: number; /** * events.EventEmitter @@ -4980,2162 +3356,1022 @@ declare module "tls" { * 3. OCSPRequest * 4. resumeSession * 5. secureConnection - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + **/ + addListener(event: string, listener: Function): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; - emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; - emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; + emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; + emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: string, listener: Function): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: string, listener: Function): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + } - export interface ClearTextStream extends stream.Duplex { - authorized: boolean; - authorizationError: Error; - getPeerCertificate(): any; - getCipher: { - name: string; - version: string; - }; - address: { - port: number; - family: string; - address: string; - }; - remoteAddress: string; - remotePort: number; - } + export interface ClearTextStream extends stream.Duplex { + authorized: boolean; + authorizationError: Error; + getPeerCertificate(): any; + getCipher: { + name: string; + version: string; + }; + address: { + port: number; + family: string; + address: string; + }; + remoteAddress: string; + remotePort: number; + } - export interface SecurePair { - encrypted: any; - cleartext: any; - } + export interface SecurePair { + encrypted: any; + cleartext: any; + } - export interface SecureContextOptions { - pfx?: string | Buffer | Array<string | Buffer | Object>; - key?: string | Buffer | Array<Buffer | Object>; - passphrase?: string; - cert?: string | Buffer | Array<string | Buffer>; - ca?: string | Buffer | Array<string | Buffer>; - ciphers?: string; - honorCipherOrder?: boolean; - ecdhCurve?: string; - crl?: string | Buffer | Array<string | Buffer>; - dhparam?: string | Buffer; - secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options - secureProtocol?: string; // SSL Method, e.g. SSLv23_method - sessionIdContext?: string; - } + export interface SecureContextOptions { + pfx?: string | Buffer; + key?: string | Buffer; + passphrase?: string; + cert?: string | Buffer; + ca?: string | Buffer; + crl?: string | string[] + ciphers?: string; + honorCipherOrder?: boolean; + } - export interface SecureContext { - context: any; - } + export interface SecureContext { + context: any; + } - /* - * Verifies the certificate `cert` is issued to host `host`. - * @host The hostname to verify the certificate against - * @cert PeerCertificate representing the peer's certificate - * - * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined. - */ - export function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined; - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; - export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; - export function createSecureContext(details: SecureContextOptions): SecureContext; - export function getCiphers(): string[]; - - export var DEFAULT_ECDH_CURVE: string; + export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; + export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; + export function createSecureContext(details: SecureContextOptions): SecureContext; } declare module "crypto" { - export interface Certificate { - exportChallenge(spkac: string | Buffer): Buffer; - exportPublicKey(spkac: string | Buffer): Buffer; - verifySpkac(spkac: Buffer): boolean; - } - export var Certificate: { - new(): Certificate; - (): Certificate; - }; + export interface Certificate { + exportChallenge(spkac: string | Buffer): Buffer; + exportPublicKey(spkac: string | Buffer): Buffer; + verifySpkac(spkac: Buffer): boolean; + } + export var Certificate: { + new(): Certificate; + (): Certificate; + } - export var fips: boolean; + export var fips: boolean; - export interface CredentialDetails { - pfx: string; - key: string; - passphrase: string; - cert: string; - ca: string | string[]; - crl: string | string[]; - ciphers: string; - } - export interface Credentials { context?: any; } - export function createCredentials(details: CredentialDetails): Credentials; - export function createHash(algorithm: string): Hash; - export function createHmac(algorithm: string, key: string | Buffer): Hmac; + export interface CredentialDetails { + pfx: string; + key: string; + passphrase: string; + cert: string; + ca: string | string[]; + crl: string | string[]; + ciphers: string; + } + export interface Credentials { context?: any; } + export function createCredentials(details: CredentialDetails): Credentials; + export function createHash(algorithm: string): Hash; + export function createHmac(algorithm: string, key: string | Buffer): Hmac; - type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; - type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; - type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; - type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; - type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; + type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; + type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; + type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; + type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; + type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; - export interface Hash extends NodeJS.ReadWriteStream { - update(data: string | Buffer | DataView): Hash; - update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hash; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export interface Hmac extends NodeJS.ReadWriteStream { - update(data: string | Buffer | DataView): Hmac; - update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hmac; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export function createCipher(algorithm: string, password: any): Cipher; - export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; - export interface Cipher extends NodeJS.ReadWriteStream { - update(data: Buffer | DataView): Buffer; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; - update(data: Buffer | DataView, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - getAuthTag(): Buffer; - setAAD(buffer: Buffer): void; - } - export function createDecipher(algorithm: string, password: any): Decipher; - export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; - export interface Decipher extends NodeJS.ReadWriteStream { - update(data: Buffer | DataView): Buffer; - update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; - update(data: Buffer | DataView, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; - update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - setAuthTag(tag: Buffer): void; - setAAD(buffer: Buffer): void; - } - export function createSign(algorithm: string): Signer; - export interface Signer extends NodeJS.WritableStream { - update(data: string | Buffer | DataView): Signer; - update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Signer; - sign(private_key: string | { key: string; passphrase: string }): Buffer; - sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; - } - export function createVerify(algorith: string): Verify; - export interface Verify extends NodeJS.WritableStream { - update(data: string | Buffer | DataView): Verify; - update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Verify; - verify(object: string | Object, signature: Buffer | DataView): boolean; - verify(object: string | Object, signature: string, signature_format: HexBase64Latin1Encoding): boolean; - // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format - // The signature field accepts a TypedArray type, but it is only available starting ES2017 - } - export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; - export function createDiffieHellman(prime: Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; - export interface DiffieHellman { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrime(): Buffer; - getPrime(encoding: HexBase64Latin1Encoding): string; - getGenerator(): Buffer; - getGenerator(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - setPublicKey(public_key: Buffer): void; - setPublicKey(public_key: string, encoding: string): void; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: string): void; - verifyError: number; - } - export function getDiffieHellman(group_name: string): DiffieHellman; - export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; - export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; - export function randomBytes(size: number): Buffer; - export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function pseudoRandomBytes(size: number): Buffer; - export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; - export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; - export interface RsaPublicKey { - key: string; - padding?: number; - } - export interface RsaPrivateKey { - key: string; - passphrase?: string; - padding?: number; - } - export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer; - export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer; - export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer; - export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer; - export function getCiphers(): string[]; - export function getCurves(): string[]; - export function getHashes(): string[]; - export interface ECDH { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; - } - export function createECDH(curve_name: string): ECDH; - export function timingSafeEqual(a: Buffer, b: Buffer): boolean; - export var DEFAULT_ENCODING: string; + export interface Hash extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hash; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export interface Hmac extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hmac; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export function createCipher(algorithm: string, password: any): Cipher; + export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; + export interface Cipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + getAuthTag(): Buffer; + setAAD(buffer: Buffer): void; + } + export function createDecipher(algorithm: string, password: any): Decipher; + export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; + export interface Decipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; + update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + setAuthTag(tag: Buffer): void; + setAAD(buffer: Buffer): void; + } + export function createSign(algorithm: string): Signer; + export interface Signer extends NodeJS.WritableStream { + update(data: string | Buffer): Signer; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; + sign(private_key: string | { key: string; passphrase: string }): Buffer; + sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; + } + export function createVerify(algorith: string): Verify; + export interface Verify extends NodeJS.WritableStream { + update(data: string | Buffer): Verify; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; + verify(object: string, signature: Buffer): boolean; + verify(object: string, signature: string, signature_format: HexBase64Latin1Encoding): boolean; + } + export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; + export function createDiffieHellman(prime: Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; + export interface DiffieHellman { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrime(): Buffer; + getPrime(encoding: HexBase64Latin1Encoding): string; + getGenerator(): Buffer; + getGenerator(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + setPublicKey(public_key: Buffer): void; + setPublicKey(public_key: string, encoding: string): void; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: string): void; + verifyError: number; + } + export function getDiffieHellman(group_name: string): DiffieHellman; + export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; + export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; + export function randomBytes(size: number): Buffer; + export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function pseudoRandomBytes(size: number): Buffer; + export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; + export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; + export interface RsaPublicKey { + key: string; + padding?: number; + } + export interface RsaPrivateKey { + key: string; + passphrase?: string, + padding?: number; + } + export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function getCiphers(): string[]; + export function getCurves(): string[]; + export function getHashes(): string[]; + export interface ECDH { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; + } + export function createECDH(curve_name: string): ECDH; + export function timingSafeEqual(a: Buffer, b: Buffer): boolean; + export var DEFAULT_ENCODING: string; } declare module "stream" { - import * as events from "events"; + import * as events from "events"; - class internal extends events.EventEmitter { - pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T; - } + class internal extends events.EventEmitter { + pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T; + } - namespace internal { - export class Stream extends internal { } + namespace internal { - export interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?: (this: Readable, size?: number) => any; - destroy?: (error?: Error) => any; - } + export class Stream extends internal { } - export class Readable extends Stream implements NodeJS.ReadableStream { - readable: boolean; - constructor(opts?: ReadableOptions); - _read(size: number): void; - read(size?: number): any; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - unpipe<T extends NodeJS.WritableStream>(destination?: T): this; - unshift(chunk: any): void; - wrap(oldStream: NodeJS.ReadableStream): this; - push(chunk: any, encoding?: string): boolean; - _destroy(err: Error, callback: Function): void; - destroy(error?: Error): void; + export interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?: (this: Readable, size?: number) => any; + } + + export class Readable extends Stream implements NodeJS.ReadableStream { + readable: boolean; + constructor(opts?: ReadableOptions); + _read(size: number): void; + read(size?: number): any; + setEncoding(encoding: string): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T; + unpipe<T extends NodeJS.WritableStream>(destination?: T): this; + unshift(chunk: any): void; + wrap(oldStream: NodeJS.ReadableStream): Readable; + push(chunk: any, encoding?: string): boolean; /** * Event emitter * The defined events on documents including: - * 1. close - * 2. data - * 3. end - * 4. readable - * 5. error - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; + * 1. close + * 2. data + * 3. end + * 4. readable + * 5. error + **/ + addListener(event: string, listener: Function): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "end"): boolean; + emit(event: "readable"): boolean; + emit(event: "error", err: Error): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: string, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + } - export interface WritableOptions { - highWaterMark?: number; - decodeStrings?: boolean; - objectMode?: boolean; - write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - writev?: (chunks: Array<{ chunk: string | Buffer, encoding: string }>, callback: Function) => any; - destroy?: (error?: Error) => any; - final?: (callback: (error?: Error) => void) => void; - } + export interface WritableOptions { + highWaterMark?: number; + decodeStrings?: boolean; + objectMode?: boolean; + write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + writev?: (chunks: { chunk: string | Buffer, encoding: string }[], callback: Function) => any; + } - export class Writable extends Stream implements NodeJS.WritableStream { - writable: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; - _destroy(err: Error, callback: Function): void; - _final(callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(cb?: Function): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - cork(): void; - uncork(): void; - destroy(error?: Error): void; + export class Writable extends Stream implements NodeJS.WritableStream { + writable: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; /** * Event emitter * The defined events on documents including: - * 1. close - * 2. drain - * 3. error - * 4. finish - * 5. pipe - * 6. unpipe - */ - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; + * 1. close + * 2. drain + * 3. error + * 4. finish + * 5. pipe + * 6. unpipe + **/ + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "drain", chunk: Buffer | string): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "drain", chunk: Buffer | string): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string, listener: (...args: any[]) => void): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + } - export interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean; - readableObjectMode?: boolean; - writableObjectMode?: boolean; - } + export interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean; + readableObjectMode?: boolean; + writableObjectMode?: boolean; + } - // Note: Duplex extends both Readable and Writable. - export class Duplex extends Readable implements Writable { - writable: boolean; - constructor(opts?: DuplexOptions); - _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; - _destroy(err: Error, callback: Function): void; - _final(callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(cb?: Function): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - cork(): void; - uncork(): void; - } + // Note: Duplex extends both Readable and Writable. + export class Duplex extends Readable implements Writable { + writable: boolean; + constructor(opts?: DuplexOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } - export interface TransformOptions extends DuplexOptions { - transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - flush?: (callback: Function) => any; - } + export interface TransformOptions extends DuplexOptions { + transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + flush?: (callback: Function) => any; + } - export class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: string, callback: Function): void; - destroy(error?: Error): void; - } + export class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: string, callback: Function): void; + } - export class PassThrough extends Transform { } - } + export class PassThrough extends Transform { } + } - export = internal; + export = internal; } declare module "util" { - export interface InspectOptions extends NodeJS.InspectOptions { } - export function format(format: any, ...param: any[]): string; - export function debug(string: string): void; - export function error(...param: any[]): void; - export function puts(...param: any[]): void; - export function print(...param: any[]): void; - export function log(string: string): void; - export var inspect: { - (object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - (object: any, options: InspectOptions): string; - colors: { - [color: string]: [number, number] | undefined - } - styles: { - [style: string]: string | undefined - } - defaultOptions: InspectOptions; - custom: symbol; - }; - export function isArray(object: any): object is any[]; - export function isRegExp(object: any): object is RegExp; - export function isDate(object: any): object is Date; - export function isError(object: any): object is Error; - export function inherits(constructor: any, superConstructor: any): void; - export function debuglog(key: string): (msg: string, ...param: any[]) => void; - export function isBoolean(object: any): object is boolean; - export function isBuffer(object: any): object is Buffer; - export function isFunction(object: any): boolean; - export function isNull(object: any): object is null; - export function isNullOrUndefined(object: any): object is null | undefined; - export function isNumber(object: any): object is number; - export function isObject(object: any): boolean; - export function isPrimitive(object: any): boolean; - export function isString(object: any): object is string; - export function isSymbol(object: any): object is symbol; - export function isUndefined(object: any): object is undefined; - export function deprecate<T extends Function>(fn: T, message: string): T; - - export interface CustomPromisify<TCustom extends Function> extends Function { - __promisify__: TCustom; - } - - export function callbackify(fn: () => Promise<void>): (callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - export function callbackify<T1, T2, T3, T4, T5, T6>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify<T1, T2, T3, T4, T5, T6, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; - - export function promisify<TCustom extends Function>(fn: CustomPromisify<TCustom>): TCustom; - export function promisify<TResult>(fn: (callback: (err: Error, result: TResult) => void) => void): () => Promise<TResult>; - export function promisify(fn: (callback: (err: Error) => void) => void): () => Promise<void>; - export function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: Error, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>; - export function promisify<T1>(fn: (arg1: T1, callback: (err: Error) => void) => void): (arg1: T1) => Promise<void>; - export function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: Error, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>; - export function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err: Error) => void) => void): (arg1: T1, arg2: T2) => Promise<void>; - export function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>; - export function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>; - export function promisify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>; - export function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>; - export function promisify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>; - export function promisify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>; - export function promisify(fn: Function): Function; - export namespace promisify { - const custom: symbol; - } + export interface InspectOptions extends NodeJS.InspectOptions { } + export function format(format: any, ...param: any[]): string; + export function debug(string: string): void; + export function error(...param: any[]): void; + export function puts(...param: any[]): void; + export function print(...param: any[]): void; + export function log(string: string): void; + export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; + export function inspect(object: any, options: InspectOptions): string; + export function isArray(object: any): object is any[]; + export function isRegExp(object: any): object is RegExp; + export function isDate(object: any): object is Date; + export function isError(object: any): object is Error; + export function inherits(constructor: any, superConstructor: any): void; + export function debuglog(key: string): (msg: string, ...param: any[]) => void; + export function isBoolean(object: any): object is boolean; + export function isBuffer(object: any): object is Buffer; + export function isFunction(object: any): boolean; + export function isNull(object: any): object is null; + export function isNullOrUndefined(object: any): object is null | undefined; + export function isNumber(object: any): object is number; + export function isObject(object: any): boolean; + export function isPrimitive(object: any): boolean; + export function isString(object: any): object is string; + export function isSymbol(object: any): object is symbol; + export function isUndefined(object: any): object is undefined; + export function deprecate<T extends Function>(fn: T, message: string): T; } declare module "assert" { - function internal(value: any, message?: string): void; - namespace internal { - export class AssertionError implements Error { - name: string; - message: string; - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; + function internal(value: any, message?: string): void; + namespace internal { + export class AssertionError implements Error { + name: string; + message: string; + actual: any; + expected: any; + operator: string; + generatedMessage: boolean; - constructor(options?: { - message?: string; actual?: any; expected?: any; - operator?: string; stackStartFunction?: Function - }); - } + constructor(options?: { + message?: string; actual?: any; expected?: any; + operator?: string; stackStartFunction?: Function + }); + } - export function fail(message: string): void; - export function fail(actual: any, expected: any, message?: string, operator?: string): void; - export function ok(value: any, message?: string): void; - export function equal(actual: any, expected: any, message?: string): void; - export function notEqual(actual: any, expected: any, message?: string): void; - export function deepEqual(actual: any, expected: any, message?: string): void; - export function notDeepEqual(acutal: any, expected: any, message?: string): void; - export function strictEqual(actual: any, expected: any, message?: string): void; - export function notStrictEqual(actual: any, expected: any, message?: string): void; - export function deepStrictEqual(actual: any, expected: any, message?: string): void; - export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; + export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; + export function ok(value: any, message?: string): void; + export function equal(actual: any, expected: any, message?: string): void; + export function notEqual(actual: any, expected: any, message?: string): void; + export function deepEqual(actual: any, expected: any, message?: string): void; + export function notDeepEqual(acutal: any, expected: any, message?: string): void; + export function strictEqual(actual: any, expected: any, message?: string): void; + export function notStrictEqual(actual: any, expected: any, message?: string): void; + export function deepStrictEqual(actual: any, expected: any, message?: string): void; + export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; - export function throws(block: Function, message?: string): void; - export function throws(block: Function, error: Function, message?: string): void; - export function throws(block: Function, error: RegExp, message?: string): void; - export function throws(block: Function, error: (err: any) => boolean, message?: string): void; + export function throws(block: Function, message?: string): void; + export function throws(block: Function, error: Function, message?: string): void; + export function throws(block: Function, error: RegExp, message?: string): void; + export function throws(block: Function, error: (err: any) => boolean, message?: string): void; - export function doesNotThrow(block: Function, message?: string): void; - export function doesNotThrow(block: Function, error: Function, message?: string): void; - export function doesNotThrow(block: Function, error: RegExp, message?: string): void; - export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; + export function doesNotThrow(block: Function, message?: string): void; + export function doesNotThrow(block: Function, error: Function, message?: string): void; + export function doesNotThrow(block: Function, error: RegExp, message?: string): void; + export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; - export function ifError(value: any): void; - } + export function ifError(value: any): void; + } - export = internal; + export = internal; } declare module "tty" { - import * as net from "net"; + import * as net from "net"; - export function isatty(fd: number): boolean; - export class ReadStream extends net.Socket { - isRaw: boolean; - setRawMode(mode: boolean): void; - isTTY: boolean; - } - export class WriteStream extends net.Socket { - columns: number; - rows: number; - isTTY: boolean; - } + export function isatty(fd: number): boolean; + export interface ReadStream extends net.Socket { + isRaw: boolean; + setRawMode(mode: boolean): void; + isTTY: boolean; + } + export interface WriteStream extends net.Socket { + columns: number; + rows: number; + isTTY: boolean; + } } declare module "domain" { - import * as events from "events"; + import * as events from "events"; - export class Domain extends events.EventEmitter implements NodeJS.Domain { - run(fn: Function): void; - add(emitter: events.EventEmitter): void; - remove(emitter: events.EventEmitter): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - members: any[]; - enter(): void; - exit(): void; - } + export class Domain extends events.EventEmitter implements NodeJS.Domain { + run(fn: Function): void; + add(emitter: events.EventEmitter): void; + remove(emitter: events.EventEmitter): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; + members: any[]; + enter(): void; + exit(): void; + } - export function create(): Domain; + export function create(): Domain; } declare module "constants" { - export var E2BIG: number; - export var EACCES: number; - export var EADDRINUSE: number; - export var EADDRNOTAVAIL: number; - export var EAFNOSUPPORT: number; - export var EAGAIN: number; - export var EALREADY: number; - export var EBADF: number; - export var EBADMSG: number; - export var EBUSY: number; - export var ECANCELED: number; - export var ECHILD: number; - export var ECONNABORTED: number; - export var ECONNREFUSED: number; - export var ECONNRESET: number; - export var EDEADLK: number; - export var EDESTADDRREQ: number; - export var EDOM: number; - export var EEXIST: number; - export var EFAULT: number; - export var EFBIG: number; - export var EHOSTUNREACH: number; - export var EIDRM: number; - export var EILSEQ: number; - export var EINPROGRESS: number; - export var EINTR: number; - export var EINVAL: number; - export var EIO: number; - export var EISCONN: number; - export var EISDIR: number; - export var ELOOP: number; - export var EMFILE: number; - export var EMLINK: number; - export var EMSGSIZE: number; - export var ENAMETOOLONG: number; - export var ENETDOWN: number; - export var ENETRESET: number; - export var ENETUNREACH: number; - export var ENFILE: number; - export var ENOBUFS: number; - export var ENODATA: number; - export var ENODEV: number; - export var ENOENT: number; - export var ENOEXEC: number; - export var ENOLCK: number; - export var ENOLINK: number; - export var ENOMEM: number; - export var ENOMSG: number; - export var ENOPROTOOPT: number; - export var ENOSPC: number; - export var ENOSR: number; - export var ENOSTR: number; - export var ENOSYS: number; - export var ENOTCONN: number; - export var ENOTDIR: number; - export var ENOTEMPTY: number; - export var ENOTSOCK: number; - export var ENOTSUP: number; - export var ENOTTY: number; - export var ENXIO: number; - export var EOPNOTSUPP: number; - export var EOVERFLOW: number; - export var EPERM: number; - export var EPIPE: number; - export var EPROTO: number; - export var EPROTONOSUPPORT: number; - export var EPROTOTYPE: number; - export var ERANGE: number; - export var EROFS: number; - export var ESPIPE: number; - export var ESRCH: number; - export var ETIME: number; - export var ETIMEDOUT: number; - export var ETXTBSY: number; - export var EWOULDBLOCK: number; - export var EXDEV: number; - export var WSAEINTR: number; - export var WSAEBADF: number; - export var WSAEACCES: number; - export var WSAEFAULT: number; - export var WSAEINVAL: number; - export var WSAEMFILE: number; - export var WSAEWOULDBLOCK: number; - export var WSAEINPROGRESS: number; - export var WSAEALREADY: number; - export var WSAENOTSOCK: number; - export var WSAEDESTADDRREQ: number; - export var WSAEMSGSIZE: number; - export var WSAEPROTOTYPE: number; - export var WSAENOPROTOOPT: number; - export var WSAEPROTONOSUPPORT: number; - export var WSAESOCKTNOSUPPORT: number; - export var WSAEOPNOTSUPP: number; - export var WSAEPFNOSUPPORT: number; - export var WSAEAFNOSUPPORT: number; - export var WSAEADDRINUSE: number; - export var WSAEADDRNOTAVAIL: number; - export var WSAENETDOWN: number; - export var WSAENETUNREACH: number; - export var WSAENETRESET: number; - export var WSAECONNABORTED: number; - export var WSAECONNRESET: number; - export var WSAENOBUFS: number; - export var WSAEISCONN: number; - export var WSAENOTCONN: number; - export var WSAESHUTDOWN: number; - export var WSAETOOMANYREFS: number; - export var WSAETIMEDOUT: number; - export var WSAECONNREFUSED: number; - export var WSAELOOP: number; - export var WSAENAMETOOLONG: number; - export var WSAEHOSTDOWN: number; - export var WSAEHOSTUNREACH: number; - export var WSAENOTEMPTY: number; - export var WSAEPROCLIM: number; - export var WSAEUSERS: number; - export var WSAEDQUOT: number; - export var WSAESTALE: number; - export var WSAEREMOTE: number; - export var WSASYSNOTREADY: number; - export var WSAVERNOTSUPPORTED: number; - export var WSANOTINITIALISED: number; - export var WSAEDISCON: number; - export var WSAENOMORE: number; - export var WSAECANCELLED: number; - export var WSAEINVALIDPROCTABLE: number; - export var WSAEINVALIDPROVIDER: number; - export var WSAEPROVIDERFAILEDINIT: number; - export var WSASYSCALLFAILURE: number; - export var WSASERVICE_NOT_FOUND: number; - export var WSATYPE_NOT_FOUND: number; - export var WSA_E_NO_MORE: number; - export var WSA_E_CANCELLED: number; - export var WSAEREFUSED: number; - export var SIGHUP: number; - export var SIGINT: number; - export var SIGILL: number; - export var SIGABRT: number; - export var SIGFPE: number; - export var SIGKILL: number; - export var SIGSEGV: number; - export var SIGTERM: number; - export var SIGBREAK: number; - export var SIGWINCH: number; - export var SSL_OP_ALL: number; - export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; - export var SSL_OP_CISCO_ANYCONNECT: number; - export var SSL_OP_COOKIE_EXCHANGE: number; - export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - export var SSL_OP_EPHEMERAL_RSA: number; - export var SSL_OP_LEGACY_SERVER_CONNECT: number; - export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; - export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; - export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; - export var SSL_OP_NETSCAPE_CA_DN_BUG: number; - export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; - export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NO_COMPRESSION: number; - export var SSL_OP_NO_QUERY_MTU: number; - export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - export var SSL_OP_NO_SSLv2: number; - export var SSL_OP_NO_SSLv3: number; - export var SSL_OP_NO_TICKET: number; - export var SSL_OP_NO_TLSv1: number; - export var SSL_OP_NO_TLSv1_1: number; - export var SSL_OP_NO_TLSv1_2: number; - export var SSL_OP_PKCS1_CHECK_1: number; - export var SSL_OP_PKCS1_CHECK_2: number; - export var SSL_OP_SINGLE_DH_USE: number; - export var SSL_OP_SINGLE_ECDH_USE: number; - export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; - export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; - export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; - export var SSL_OP_TLS_D5_BUG: number; - export var SSL_OP_TLS_ROLLBACK_BUG: number; - export var ENGINE_METHOD_DSA: number; - export var ENGINE_METHOD_DH: number; - export var ENGINE_METHOD_RAND: number; - export var ENGINE_METHOD_ECDH: number; - export var ENGINE_METHOD_ECDSA: number; - export var ENGINE_METHOD_CIPHERS: number; - export var ENGINE_METHOD_DIGESTS: number; - export var ENGINE_METHOD_STORE: number; - export var ENGINE_METHOD_PKEY_METHS: number; - export var ENGINE_METHOD_PKEY_ASN1_METHS: number; - export var ENGINE_METHOD_ALL: number; - export var ENGINE_METHOD_NONE: number; - export var DH_CHECK_P_NOT_SAFE_PRIME: number; - export var DH_CHECK_P_NOT_PRIME: number; - export var DH_UNABLE_TO_CHECK_GENERATOR: number; - export var DH_NOT_SUITABLE_GENERATOR: number; - export var NPN_ENABLED: number; - export var RSA_PKCS1_PADDING: number; - export var RSA_SSLV23_PADDING: number; - export var RSA_NO_PADDING: number; - export var RSA_PKCS1_OAEP_PADDING: number; - export var RSA_X931_PADDING: number; - export var RSA_PKCS1_PSS_PADDING: number; - export var POINT_CONVERSION_COMPRESSED: number; - export var POINT_CONVERSION_UNCOMPRESSED: number; - export var POINT_CONVERSION_HYBRID: number; - export var O_RDONLY: number; - export var O_WRONLY: number; - export var O_RDWR: number; - export var S_IFMT: number; - export var S_IFREG: number; - export var S_IFDIR: number; - export var S_IFCHR: number; - export var S_IFBLK: number; - export var S_IFIFO: number; - export var S_IFSOCK: number; - export var S_IRWXU: number; - export var S_IRUSR: number; - export var S_IWUSR: number; - export var S_IXUSR: number; - export var S_IRWXG: number; - export var S_IRGRP: number; - export var S_IWGRP: number; - export var S_IXGRP: number; - export var S_IRWXO: number; - export var S_IROTH: number; - export var S_IWOTH: number; - export var S_IXOTH: number; - export var S_IFLNK: number; - export var O_CREAT: number; - export var O_EXCL: number; - export var O_NOCTTY: number; - export var O_DIRECTORY: number; - export var O_NOATIME: number; - export var O_NOFOLLOW: number; - export var O_SYNC: number; - export var O_DSYNC: number; - export var O_SYMLINK: number; - export var O_DIRECT: number; - export var O_NONBLOCK: number; - export var O_TRUNC: number; - export var O_APPEND: number; - export var F_OK: number; - export var R_OK: number; - export var W_OK: number; - export var X_OK: number; - export var UV_UDP_REUSEADDR: number; - export var SIGQUIT: number; - export var SIGTRAP: number; - export var SIGIOT: number; - export var SIGBUS: number; - export var SIGUSR1: number; - export var SIGUSR2: number; - export var SIGPIPE: number; - export var SIGALRM: number; - export var SIGCHLD: number; - export var SIGSTKFLT: number; - export var SIGCONT: number; - export var SIGSTOP: number; - export var SIGTSTP: number; - export var SIGTTIN: number; - export var SIGTTOU: number; - export var SIGURG: number; - export var SIGXCPU: number; - export var SIGXFSZ: number; - export var SIGVTALRM: number; - export var SIGPROF: number; - export var SIGIO: number; - export var SIGPOLL: number; - export var SIGPWR: number; - export var SIGSYS: number; - export var SIGUNUSED: number; - export var defaultCoreCipherList: string; - export var defaultCipherList: string; - export var ENGINE_METHOD_RSA: number; - export var ALPN_ENABLED: number; -} - -declare module "module" { - export = NodeJS.Module; + export var E2BIG: number; + export var EACCES: number; + export var EADDRINUSE: number; + export var EADDRNOTAVAIL: number; + export var EAFNOSUPPORT: number; + export var EAGAIN: number; + export var EALREADY: number; + export var EBADF: number; + export var EBADMSG: number; + export var EBUSY: number; + export var ECANCELED: number; + export var ECHILD: number; + export var ECONNABORTED: number; + export var ECONNREFUSED: number; + export var ECONNRESET: number; + export var EDEADLK: number; + export var EDESTADDRREQ: number; + export var EDOM: number; + export var EEXIST: number; + export var EFAULT: number; + export var EFBIG: number; + export var EHOSTUNREACH: number; + export var EIDRM: number; + export var EILSEQ: number; + export var EINPROGRESS: number; + export var EINTR: number; + export var EINVAL: number; + export var EIO: number; + export var EISCONN: number; + export var EISDIR: number; + export var ELOOP: number; + export var EMFILE: number; + export var EMLINK: number; + export var EMSGSIZE: number; + export var ENAMETOOLONG: number; + export var ENETDOWN: number; + export var ENETRESET: number; + export var ENETUNREACH: number; + export var ENFILE: number; + export var ENOBUFS: number; + export var ENODATA: number; + export var ENODEV: number; + export var ENOENT: number; + export var ENOEXEC: number; + export var ENOLCK: number; + export var ENOLINK: number; + export var ENOMEM: number; + export var ENOMSG: number; + export var ENOPROTOOPT: number; + export var ENOSPC: number; + export var ENOSR: number; + export var ENOSTR: number; + export var ENOSYS: number; + export var ENOTCONN: number; + export var ENOTDIR: number; + export var ENOTEMPTY: number; + export var ENOTSOCK: number; + export var ENOTSUP: number; + export var ENOTTY: number; + export var ENXIO: number; + export var EOPNOTSUPP: number; + export var EOVERFLOW: number; + export var EPERM: number; + export var EPIPE: number; + export var EPROTO: number; + export var EPROTONOSUPPORT: number; + export var EPROTOTYPE: number; + export var ERANGE: number; + export var EROFS: number; + export var ESPIPE: number; + export var ESRCH: number; + export var ETIME: number; + export var ETIMEDOUT: number; + export var ETXTBSY: number; + export var EWOULDBLOCK: number; + export var EXDEV: number; + export var WSAEINTR: number; + export var WSAEBADF: number; + export var WSAEACCES: number; + export var WSAEFAULT: number; + export var WSAEINVAL: number; + export var WSAEMFILE: number; + export var WSAEWOULDBLOCK: number; + export var WSAEINPROGRESS: number; + export var WSAEALREADY: number; + export var WSAENOTSOCK: number; + export var WSAEDESTADDRREQ: number; + export var WSAEMSGSIZE: number; + export var WSAEPROTOTYPE: number; + export var WSAENOPROTOOPT: number; + export var WSAEPROTONOSUPPORT: number; + export var WSAESOCKTNOSUPPORT: number; + export var WSAEOPNOTSUPP: number; + export var WSAEPFNOSUPPORT: number; + export var WSAEAFNOSUPPORT: number; + export var WSAEADDRINUSE: number; + export var WSAEADDRNOTAVAIL: number; + export var WSAENETDOWN: number; + export var WSAENETUNREACH: number; + export var WSAENETRESET: number; + export var WSAECONNABORTED: number; + export var WSAECONNRESET: number; + export var WSAENOBUFS: number; + export var WSAEISCONN: number; + export var WSAENOTCONN: number; + export var WSAESHUTDOWN: number; + export var WSAETOOMANYREFS: number; + export var WSAETIMEDOUT: number; + export var WSAECONNREFUSED: number; + export var WSAELOOP: number; + export var WSAENAMETOOLONG: number; + export var WSAEHOSTDOWN: number; + export var WSAEHOSTUNREACH: number; + export var WSAENOTEMPTY: number; + export var WSAEPROCLIM: number; + export var WSAEUSERS: number; + export var WSAEDQUOT: number; + export var WSAESTALE: number; + export var WSAEREMOTE: number; + export var WSASYSNOTREADY: number; + export var WSAVERNOTSUPPORTED: number; + export var WSANOTINITIALISED: number; + export var WSAEDISCON: number; + export var WSAENOMORE: number; + export var WSAECANCELLED: number; + export var WSAEINVALIDPROCTABLE: number; + export var WSAEINVALIDPROVIDER: number; + export var WSAEPROVIDERFAILEDINIT: number; + export var WSASYSCALLFAILURE: number; + export var WSASERVICE_NOT_FOUND: number; + export var WSATYPE_NOT_FOUND: number; + export var WSA_E_NO_MORE: number; + export var WSA_E_CANCELLED: number; + export var WSAEREFUSED: number; + export var SIGHUP: number; + export var SIGINT: number; + export var SIGILL: number; + export var SIGABRT: number; + export var SIGFPE: number; + export var SIGKILL: number; + export var SIGSEGV: number; + export var SIGTERM: number; + export var SIGBREAK: number; + export var SIGWINCH: number; + export var SSL_OP_ALL: number; + export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; + export var SSL_OP_CISCO_ANYCONNECT: number; + export var SSL_OP_COOKIE_EXCHANGE: number; + export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + export var SSL_OP_EPHEMERAL_RSA: number; + export var SSL_OP_LEGACY_SERVER_CONNECT: number; + export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; + export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; + export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; + export var SSL_OP_NETSCAPE_CA_DN_BUG: number; + export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; + export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NO_COMPRESSION: number; + export var SSL_OP_NO_QUERY_MTU: number; + export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + export var SSL_OP_NO_SSLv2: number; + export var SSL_OP_NO_SSLv3: number; + export var SSL_OP_NO_TICKET: number; + export var SSL_OP_NO_TLSv1: number; + export var SSL_OP_NO_TLSv1_1: number; + export var SSL_OP_NO_TLSv1_2: number; + export var SSL_OP_PKCS1_CHECK_1: number; + export var SSL_OP_PKCS1_CHECK_2: number; + export var SSL_OP_SINGLE_DH_USE: number; + export var SSL_OP_SINGLE_ECDH_USE: number; + export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; + export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; + export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; + export var SSL_OP_TLS_D5_BUG: number; + export var SSL_OP_TLS_ROLLBACK_BUG: number; + export var ENGINE_METHOD_DSA: number; + export var ENGINE_METHOD_DH: number; + export var ENGINE_METHOD_RAND: number; + export var ENGINE_METHOD_ECDH: number; + export var ENGINE_METHOD_ECDSA: number; + export var ENGINE_METHOD_CIPHERS: number; + export var ENGINE_METHOD_DIGESTS: number; + export var ENGINE_METHOD_STORE: number; + export var ENGINE_METHOD_PKEY_METHS: number; + export var ENGINE_METHOD_PKEY_ASN1_METHS: number; + export var ENGINE_METHOD_ALL: number; + export var ENGINE_METHOD_NONE: number; + export var DH_CHECK_P_NOT_SAFE_PRIME: number; + export var DH_CHECK_P_NOT_PRIME: number; + export var DH_UNABLE_TO_CHECK_GENERATOR: number; + export var DH_NOT_SUITABLE_GENERATOR: number; + export var NPN_ENABLED: number; + export var RSA_PKCS1_PADDING: number; + export var RSA_SSLV23_PADDING: number; + export var RSA_NO_PADDING: number; + export var RSA_PKCS1_OAEP_PADDING: number; + export var RSA_X931_PADDING: number; + export var RSA_PKCS1_PSS_PADDING: number; + export var POINT_CONVERSION_COMPRESSED: number; + export var POINT_CONVERSION_UNCOMPRESSED: number; + export var POINT_CONVERSION_HYBRID: number; + export var O_RDONLY: number; + export var O_WRONLY: number; + export var O_RDWR: number; + export var S_IFMT: number; + export var S_IFREG: number; + export var S_IFDIR: number; + export var S_IFCHR: number; + export var S_IFBLK: number; + export var S_IFIFO: number; + export var S_IFSOCK: number; + export var S_IRWXU: number; + export var S_IRUSR: number; + export var S_IWUSR: number; + export var S_IXUSR: number; + export var S_IRWXG: number; + export var S_IRGRP: number; + export var S_IWGRP: number; + export var S_IXGRP: number; + export var S_IRWXO: number; + export var S_IROTH: number; + export var S_IWOTH: number; + export var S_IXOTH: number; + export var S_IFLNK: number; + export var O_CREAT: number; + export var O_EXCL: number; + export var O_NOCTTY: number; + export var O_DIRECTORY: number; + export var O_NOATIME: number; + export var O_NOFOLLOW: number; + export var O_SYNC: number; + export var O_SYMLINK: number; + export var O_DIRECT: number; + export var O_NONBLOCK: number; + export var O_TRUNC: number; + export var O_APPEND: number; + export var F_OK: number; + export var R_OK: number; + export var W_OK: number; + export var X_OK: number; + export var UV_UDP_REUSEADDR: number; + export var SIGQUIT: number; + export var SIGTRAP: number; + export var SIGIOT: number; + export var SIGBUS: number; + export var SIGUSR1: number; + export var SIGUSR2: number; + export var SIGPIPE: number; + export var SIGALRM: number; + export var SIGCHLD: number; + export var SIGSTKFLT: number; + export var SIGCONT: number; + export var SIGSTOP: number; + export var SIGTSTP: number; + export var SIGTTIN: number; + export var SIGTTOU: number; + export var SIGURG: number; + export var SIGXCPU: number; + export var SIGXFSZ: number; + export var SIGVTALRM: number; + export var SIGPROF: number; + export var SIGIO: number; + export var SIGPOLL: number; + export var SIGPWR: number; + export var SIGSYS: number; + export var SIGUNUSED: number; + export var defaultCoreCipherList: string; + export var defaultCipherList: string; + export var ENGINE_METHOD_RSA: number; + export var ALPN_ENABLED: number; } declare module "process" { - export = process; + export = process; } -// tslint:disable-next-line:no-declare-current-package declare module "v8" { - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } + interface HeapSpaceInfo { + space_name: string; + space_size: number; + space_used_size: number; + space_available_size: number; + physical_space_size: number; + } - // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; + //** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ + type DoesZapCodeSpaceFlag = 0 | 1; - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - } + interface HeapInfo { + total_heap_size: number; + total_heap_size_executable: number; + total_physical_size: number; + total_available_size: number; + used_heap_size: number; + heap_size_limit: number; + malloced_memory: number; + peak_malloced_memory: number; + does_zap_garbage: DoesZapCodeSpaceFlag; + } - export function getHeapStatistics(): HeapInfo; - export function getHeapSpaceStatistics(): HeapSpaceInfo[]; - export function setFlagsFromString(flags: string): void; + export function getHeapStatistics(): HeapInfo; + export function getHeapSpaceStatistics(): HeapSpaceInfo[]; + export function setFlagsFromString(flags: string): void; } declare module "timers" { - export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export namespace setTimeout { - export function __promisify__(ms: number): Promise<void>; - export function __promisify__<T>(ms: number, value: T): Promise<T>; - } - export function clearTimeout(timeoutId: NodeJS.Timer): void; - export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearInterval(intervalId: NodeJS.Timer): void; - export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; - export namespace setImmediate { - export function __promisify__(): Promise<void>; - export function __promisify__<T>(value: T): Promise<T>; - } - export function clearImmediate(immediateId: any): void; + export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearTimeout(timeoutId: NodeJS.Timer): void; + export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearInterval(intervalId: NodeJS.Timer): void; + export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; + export function clearImmediate(immediateId: any): void; } declare module "console" { - export = console; + export = console; } /** - * Async Hooks module: https://nodejs.org/api/async_hooks.html + * _debugger module is not documented. + * Source code is at https://github.com/nodejs/node/blob/master/lib/_debugger.js */ -declare module "async_hooks" { - /** - * Returns the asyncId of the current execution context. - */ - export function executionAsyncId(): number; - /// @deprecated - replaced by executionAsyncId() - export function currentId(): number; +declare module "_debugger" { + export interface Packet { + raw: string; + headers: string[]; + body: Message; + } - /** - * Returns the ID of the resource responsible for calling the callback that is currently being executed. - */ - export function triggerAsyncId(): number; - /// @deprecated - replaced by triggerAsyncId() - export function triggerId(): number; + export interface Message { + seq: number; + type: string; + } - export interface HookCallbacks { - /** - * Called when a class is constructed that has the possibility to emit an asynchronous event. - * @param asyncId a unique ID for the async resource - * @param type the type of the async resource - * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created - * @param resource reference to the resource representing the async operation, needs to be released during destroy - */ - init?(asyncId: number, type: string, triggerAsyncId: number, resource: Object): void; + export interface RequestInfo { + command: string; + arguments: any; + } - /** - * When an asynchronous operation is initiated or completes a callback is called to notify the user. - * The before callback is called just before said callback is executed. - * @param asyncId the unique identifier assigned to the resource about to execute the callback. - */ - before?(asyncId: number): void; + export interface Request extends Message, RequestInfo { + } - /** - * Called immediately after the callback specified in before is completed. - * @param asyncId the unique identifier assigned to the resource which has executed the callback. - */ - after?(asyncId: number): void; + export interface Event extends Message { + event: string; + body?: any; + } - /** - * Called when a promise has resolve() called. This may not be in the same execution id - * as the promise itself. - * @param asyncId the unique id for the promise that was resolve()d. - */ - promiseResolve?(asyncId: number): void; + export interface Response extends Message { + request_seq: number; + success: boolean; + /** Contains error message if success === false. */ + message?: string; + /** Contains message body if success === true. */ + body?: any; + } - /** - * Called after the resource corresponding to asyncId is destroyed - * @param asyncId a unique ID for the async resource - */ - destroy?(asyncId: number): void; - } + export interface BreakpointMessageBody { + type: string; + target: number; + line: number; + } - export interface AsyncHook { - /** - * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. - */ - enable(): this; + export class Protocol { + res: Packet; + state: string; + execute(data: string): void; + serialize(rq: Request): string; + onResponse: (pkt: Packet) => void; + } - /** - * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. - */ - disable(): this; - } + export var NO_FRAME: number; + export var port: number; - /** - * Registers functions to be called for different lifetime events of each async operation. - * @param options the callbacks to register - * @return an AsyncHooks instance used for disabling and enabling hooks - */ - export function createHook(options: HookCallbacks): AsyncHook; + export interface ScriptDesc { + name: string; + id: number; + isNative?: boolean; + handle?: number; + type: string; + lineOffset?: number; + columnOffset?: number; + lineCount?: number; + } - /** - * The class AsyncResource was designed to be extended by the embedder's async resources. - * Using this users can easily trigger the lifetime events of their own resources. - */ - export class AsyncResource { - /** - * AsyncResource() is meant to be extended. Instantiating a - * new AsyncResource() also triggers init. If triggerAsyncId is omitted then - * async_hook.executionAsyncId() is used. - * @param type the name of this async resource type - * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created - */ - constructor(type: string, triggerAsyncId?: number) + export interface Breakpoint { + id: number; + scriptId: number; + script: ScriptDesc; + line: number; + condition?: string; + scriptReq?: string; + } - /** - * Call AsyncHooks before callbacks. - */ - emitBefore(): void; + export interface RequestHandler { + (err: boolean, body: Message, res: Packet): void; + request_seq?: number; + } - /** - * Call AsyncHooks after callbacks - */ - emitAfter(): void; + export interface ResponseBodyHandler { + (err: boolean, body?: any): void; + request_seq?: number; + } - /** - * Call AsyncHooks destroy callbacks. - */ - emitDestroy(): void; + export interface ExceptionInfo { + text: string; + } - /** - * @return the unique ID assigned to this AsyncResource instance. - */ - asyncId(): number; + export interface BreakResponse { + script?: ScriptDesc; + exception?: ExceptionInfo; + sourceLine: number; + sourceLineText: string; + sourceColumn: number; + } - /** - * @return the trigger ID for this AsyncResource instance. - */ - triggerAsyncId(): number; - } + export function SourceInfo(body: BreakResponse): string; + + export interface ClientInstance extends NodeJS.EventEmitter { + protocol: Protocol; + scripts: ScriptDesc[]; + handles: ScriptDesc[]; + breakpoints: Breakpoint[]; + currentSourceLine: number; + currentSourceColumn: number; + currentSourceLineText: string; + currentFrame: number; + currentScript: string; + + connect(port: number, host: string): void; + req(req: any, cb: RequestHandler): void; + reqFrameEval(code: string, frame: number, cb: RequestHandler): void; + mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; + setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; + clearBreakpoint(rq: Request, cb: RequestHandler): void; + listbreakpoints(cb: RequestHandler): void; + reqSource(from: number, to: number, cb: RequestHandler): void; + reqScripts(cb: any): void; + reqContinue(cb: RequestHandler): void; + } + + export var Client: { + new(): ClientInstance + } } - -declare module "http2" { - import * as events from "events"; - import * as fs from "fs"; - import * as net from "net"; - import * as stream from "stream"; - import * as tls from "tls"; - import * as url from "url"; - - import { IncomingHttpHeaders, OutgoingHttpHeaders } from "http"; - export { IncomingHttpHeaders, OutgoingHttpHeaders } from "http"; - - // Http2Stream - - export interface StreamPriorityOptions { - exclusive?: boolean; - parent?: number; - weight?: number; - silent?: boolean; - } - - export interface StreamState { - localWindowSize?: number; - state?: number; - streamLocalClose?: number; - streamRemoteClose?: number; - sumDependencyWeight?: number; - weight?: number; - } - - export interface ServerStreamResponseOptions { - endStream?: boolean; - getTrailers?: (trailers: OutgoingHttpHeaders) => void; - } - - export interface StatOptions { - offset: number; - length: number; - } - - export interface ServerStreamFileResponseOptions { - statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void | boolean; - getTrailers?: (trailers: OutgoingHttpHeaders) => void; - offset?: number; - length?: number; - } - - export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions { - onError?: (err: NodeJS.ErrnoException) => void; - } - - export interface Http2Stream extends stream.Duplex { - readonly aborted: boolean; - readonly destroyed: boolean; - priority(options: StreamPriorityOptions): void; - readonly rstCode: number; - rstStream(code: number): void; - rstWithNoError(): void; - rstWithProtocolError(): void; - rstWithCancel(): void; - rstWithRefuse(): void; - rstWithInternalError(): void; - readonly session: Http2Session; - setTimeout(msecs: number, callback?: () => void): void; - readonly state: StreamState; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: () => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - addListener(event: "pipe", listener: (src: stream.Readable) => void): this; - addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - addListener(event: "streamClosed", listener: (code: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted"): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "frameError", frameType: number, errorCode: number): boolean; - emit(event: "pipe", src: stream.Readable): boolean; - emit(event: "unpipe", src: stream.Readable): boolean; - emit(event: "streamClosed", code: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: () => void): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - on(event: "pipe", listener: (src: stream.Readable) => void): this; - on(event: "unpipe", listener: (src: stream.Readable) => void): this; - on(event: "streamClosed", listener: (code: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: () => void): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - once(event: "pipe", listener: (src: stream.Readable) => void): this; - once(event: "unpipe", listener: (src: stream.Readable) => void): this; - once(event: "streamClosed", listener: (code: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: () => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependListener(event: "streamClosed", listener: (code: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: () => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; - prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; - prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ClientHttp2Stream extends Http2Stream { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "headers", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "response", headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ServerHttp2Stream extends Http2Stream { - additionalHeaders(headers: OutgoingHttpHeaders): void; - readonly headersSent: boolean; - readonly pushAllowed: boolean; - pushStream(headers: OutgoingHttpHeaders, callback?: (pushStream: ServerHttp2Stream) => void): void; - pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (pushStream: ServerHttp2Stream) => void): void; - respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; - respondWithFD(fd: number, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void; - respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void; - } - - // Http2Session - - export interface Settings { - headerTableSize?: number; - enablePush?: boolean; - initialWindowSize?: number; - maxFrameSize?: number; - maxConcurrentStreams?: number; - maxHeaderListSize?: number; - } - - export interface ClientSessionRequestOptions { - endStream?: boolean; - exclusive?: boolean; - parent?: number; - weight?: number; - getTrailers?: (trailers: OutgoingHttpHeaders, flags: number) => void; - } - - export interface SessionShutdownOptions { - graceful?: boolean; - errorCode?: number; - lastStreamID?: number; - opaqueData?: Buffer | Uint8Array; - } - - export interface SessionState { - effectiveLocalWindowSize?: number; - effectiveRecvDataLength?: number; - nextStreamID?: number; - localWindowSize?: number; - lastProcStreamID?: number; - remoteWindowSize?: number; - outboundQueueSize?: number; - deflateDynamicTableSize?: number; - inflateDynamicTableSize?: number; - } - - export interface Http2Session extends events.EventEmitter { - destroy(): void; - readonly destroyed: boolean; - readonly localSettings: Settings; - readonly pendingSettingsAck: boolean; - readonly remoteSettings: Settings; - rstStream(stream: Http2Stream, code?: number): void; - setTimeout(msecs: number, callback?: () => void): void; - shutdown(callback?: () => void): void; - shutdown(options: SessionShutdownOptions, callback?: () => void): void; - readonly socket: net.Socket | tls.TLSSocket; - readonly state: SessionState; - priority(stream: Http2Stream, options: StreamPriorityOptions): void; - settings(settings: Settings): void; - readonly type: number; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - addListener(event: "localSettings", listener: (settings: Settings) => void): this; - addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; - emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean; - emit(event: "localSettings", settings: Settings): boolean; - emit(event: "remoteSettings", settings: Settings): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - on(event: "localSettings", listener: (settings: Settings) => void): this; - on(event: "remoteSettings", listener: (settings: Settings) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - once(event: "localSettings", listener: (settings: Settings) => void): this; - once(event: "remoteSettings", listener: (settings: Settings) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; - prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; - prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - export interface ClientHttp2Session extends Http2Session { - request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - } - - export interface ServerHttp2Session extends Http2Session { - readonly server: Http2Server | Http2SecureServer; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - } - - // Http2Server - - export interface SessionOptions { - maxDeflateDynamicTableSize?: number; - maxReservedRemoteStreams?: number; - maxSendHeaderBlockLength?: number; - paddingStrategy?: number; - peerMaxConcurrentStreams?: number; - selectPadding?: (frameLen: number, maxFrameLen: number) => number; - settings?: Settings; - } - - export type ClientSessionOptions = SessionOptions; - export type ServerSessionOptions = SessionOptions; - - export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { } - export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { } - - export interface ServerOptions extends ServerSessionOptions { - allowHTTP1?: boolean; - } - - export interface SecureServerOptions extends SecureServerSessionOptions { - allowHTTP1?: boolean; - } - - export interface Http2Server extends net.Server { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } - - export interface Http2SecureServer extends tls.Server { - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - addListener(event: "sessionError", listener: (err: Error) => void): this; - addListener(event: "socketError", listener: (err: Error) => void): this; - addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - addListener(event: "timeout", listener: () => void): this; - addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; - emit(event: "sessionError", err: Error): boolean; - emit(event: "socketError", err: Error): boolean; - emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; - emit(event: "timeout"): boolean; - emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - on(event: "sessionError", listener: (err: Error) => void): this; - on(event: "socketError", listener: (err: Error) => void): this; - on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - on(event: "timeout", listener: () => void): this; - on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - once(event: "sessionError", listener: (err: Error) => void): this; - once(event: "socketError", listener: (err: Error) => void): this; - once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - once(event: "timeout", listener: () => void): this; - once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependListener(event: "sessionError", listener: (err: Error) => void): this; - prependListener(event: "socketError", listener: (err: Error) => void): this; - prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependListener(event: "timeout", listener: () => void): this; - prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; - prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; - prependOnceListener(event: "socketError", listener: (err: Error) => void): this; - prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; - } - - export interface Http2ServerRequest extends stream.Readable { - headers: IncomingHttpHeaders; - httpVersion: string; - method: string; - rawHeaders: string[]; - rawTrailers: string[]; - setTimeout(msecs: number, callback?: () => void): void; - socket: net.Socket | tls.TLSSocket; - stream: ServerHttp2Stream; - trailers: IncomingHttpHeaders; - url: string; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted", hadError: boolean, code: number): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - } - - export interface Http2ServerResponse extends events.EventEmitter { - addTrailers(trailers: OutgoingHttpHeaders): void; - connection: net.Socket | tls.TLSSocket; - end(callback?: () => void): void; - end(data?: string | Buffer, callback?: () => void): void; - end(data?: string | Buffer, encoding?: string, callback?: () => void): void; - readonly finished: boolean; - getHeader(name: string): string; - getHeaderNames(): string[]; - getHeaders(): OutgoingHttpHeaders; - hasHeader(name: string): boolean; - readonly headersSent: boolean; - removeHeader(name: string): void; - sendDate: boolean; - setHeader(name: string, value: number | string | string[]): void; - setTimeout(msecs: number, callback?: () => void): void; - socket: net.Socket | tls.TLSSocket; - statusCode: number; - statusMessage: ''; - stream: ServerHttp2Stream; - write(chunk: string | Buffer, callback?: (err: Error) => void): boolean; - write(chunk: string | Buffer, encoding?: string, callback?: (err: Error) => void): boolean; - writeContinue(): void; - writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void; - writeHead(statusCode: number, statusMessage?: string, headers?: OutgoingHttpHeaders): void; - createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void; - - addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "aborted", hadError: boolean, code: number): boolean; - emit(event: "close"): boolean; - emit(event: "drain"): boolean; - emit(event: "error", error: Error): boolean; - emit(event: "finish"): boolean; - - on(event: string, listener: (...args: any[]) => void): this; - on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "finish", listener: () => void): this; - - once(event: string, listener: (...args: any[]) => void): this; - once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "finish", listener: () => void): this; - - prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - - prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - } - - // Public API - - export namespace constants { - export const NGHTTP2_SESSION_SERVER: number; - export const NGHTTP2_SESSION_CLIENT: number; - export const NGHTTP2_STREAM_STATE_IDLE: number; - export const NGHTTP2_STREAM_STATE_OPEN: number; - export const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; - export const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; - export const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; - export const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; - export const NGHTTP2_STREAM_STATE_CLOSED: number; - export const NGHTTP2_NO_ERROR: number; - export const NGHTTP2_PROTOCOL_ERROR: number; - export const NGHTTP2_INTERNAL_ERROR: number; - export const NGHTTP2_FLOW_CONTROL_ERROR: number; - export const NGHTTP2_SETTINGS_TIMEOUT: number; - export const NGHTTP2_STREAM_CLOSED: number; - export const NGHTTP2_FRAME_SIZE_ERROR: number; - export const NGHTTP2_REFUSED_STREAM: number; - export const NGHTTP2_CANCEL: number; - export const NGHTTP2_COMPRESSION_ERROR: number; - export const NGHTTP2_CONNECT_ERROR: number; - export const NGHTTP2_ENHANCE_YOUR_CALM: number; - export const NGHTTP2_INADEQUATE_SECURITY: number; - export const NGHTTP2_HTTP_1_1_REQUIRED: number; - export const NGHTTP2_ERR_FRAME_SIZE_ERROR: number; - export const NGHTTP2_FLAG_NONE: number; - export const NGHTTP2_FLAG_END_STREAM: number; - export const NGHTTP2_FLAG_END_HEADERS: number; - export const NGHTTP2_FLAG_ACK: number; - export const NGHTTP2_FLAG_PADDED: number; - export const NGHTTP2_FLAG_PRIORITY: number; - export const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; - export const DEFAULT_SETTINGS_ENABLE_PUSH: number; - export const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; - export const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; - export const MAX_MAX_FRAME_SIZE: number; - export const MIN_MAX_FRAME_SIZE: number; - export const MAX_INITIAL_WINDOW_SIZE: number; - export const NGHTTP2_DEFAULT_WEIGHT: number; - export const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; - export const NGHTTP2_SETTINGS_ENABLE_PUSH: number; - export const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; - export const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; - export const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; - export const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; - export const PADDING_STRATEGY_NONE: number; - export const PADDING_STRATEGY_MAX: number; - export const PADDING_STRATEGY_CALLBACK: number; - export const HTTP2_HEADER_STATUS: string; - export const HTTP2_HEADER_METHOD: string; - export const HTTP2_HEADER_AUTHORITY: string; - export const HTTP2_HEADER_SCHEME: string; - export const HTTP2_HEADER_PATH: string; - export const HTTP2_HEADER_ACCEPT_CHARSET: string; - export const HTTP2_HEADER_ACCEPT_ENCODING: string; - export const HTTP2_HEADER_ACCEPT_LANGUAGE: string; - export const HTTP2_HEADER_ACCEPT_RANGES: string; - export const HTTP2_HEADER_ACCEPT: string; - export const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; - export const HTTP2_HEADER_AGE: string; - export const HTTP2_HEADER_ALLOW: string; - export const HTTP2_HEADER_AUTHORIZATION: string; - export const HTTP2_HEADER_CACHE_CONTROL: string; - export const HTTP2_HEADER_CONNECTION: string; - export const HTTP2_HEADER_CONTENT_DISPOSITION: string; - export const HTTP2_HEADER_CONTENT_ENCODING: string; - export const HTTP2_HEADER_CONTENT_LANGUAGE: string; - export const HTTP2_HEADER_CONTENT_LENGTH: string; - export const HTTP2_HEADER_CONTENT_LOCATION: string; - export const HTTP2_HEADER_CONTENT_MD5: string; - export const HTTP2_HEADER_CONTENT_RANGE: string; - export const HTTP2_HEADER_CONTENT_TYPE: string; - export const HTTP2_HEADER_COOKIE: string; - export const HTTP2_HEADER_DATE: string; - export const HTTP2_HEADER_ETAG: string; - export const HTTP2_HEADER_EXPECT: string; - export const HTTP2_HEADER_EXPIRES: string; - export const HTTP2_HEADER_FROM: string; - export const HTTP2_HEADER_HOST: string; - export const HTTP2_HEADER_IF_MATCH: string; - export const HTTP2_HEADER_IF_MODIFIED_SINCE: string; - export const HTTP2_HEADER_IF_NONE_MATCH: string; - export const HTTP2_HEADER_IF_RANGE: string; - export const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; - export const HTTP2_HEADER_LAST_MODIFIED: string; - export const HTTP2_HEADER_LINK: string; - export const HTTP2_HEADER_LOCATION: string; - export const HTTP2_HEADER_MAX_FORWARDS: string; - export const HTTP2_HEADER_PREFER: string; - export const HTTP2_HEADER_PROXY_AUTHENTICATE: string; - export const HTTP2_HEADER_PROXY_AUTHORIZATION: string; - export const HTTP2_HEADER_RANGE: string; - export const HTTP2_HEADER_REFERER: string; - export const HTTP2_HEADER_REFRESH: string; - export const HTTP2_HEADER_RETRY_AFTER: string; - export const HTTP2_HEADER_SERVER: string; - export const HTTP2_HEADER_SET_COOKIE: string; - export const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; - export const HTTP2_HEADER_TRANSFER_ENCODING: string; - export const HTTP2_HEADER_TE: string; - export const HTTP2_HEADER_UPGRADE: string; - export const HTTP2_HEADER_USER_AGENT: string; - export const HTTP2_HEADER_VARY: string; - export const HTTP2_HEADER_VIA: string; - export const HTTP2_HEADER_WWW_AUTHENTICATE: string; - export const HTTP2_HEADER_HTTP2_SETTINGS: string; - export const HTTP2_HEADER_KEEP_ALIVE: string; - export const HTTP2_HEADER_PROXY_CONNECTION: string; - export const HTTP2_METHOD_ACL: string; - export const HTTP2_METHOD_BASELINE_CONTROL: string; - export const HTTP2_METHOD_BIND: string; - export const HTTP2_METHOD_CHECKIN: string; - export const HTTP2_METHOD_CHECKOUT: string; - export const HTTP2_METHOD_CONNECT: string; - export const HTTP2_METHOD_COPY: string; - export const HTTP2_METHOD_DELETE: string; - export const HTTP2_METHOD_GET: string; - export const HTTP2_METHOD_HEAD: string; - export const HTTP2_METHOD_LABEL: string; - export const HTTP2_METHOD_LINK: string; - export const HTTP2_METHOD_LOCK: string; - export const HTTP2_METHOD_MERGE: string; - export const HTTP2_METHOD_MKACTIVITY: string; - export const HTTP2_METHOD_MKCALENDAR: string; - export const HTTP2_METHOD_MKCOL: string; - export const HTTP2_METHOD_MKREDIRECTREF: string; - export const HTTP2_METHOD_MKWORKSPACE: string; - export const HTTP2_METHOD_MOVE: string; - export const HTTP2_METHOD_OPTIONS: string; - export const HTTP2_METHOD_ORDERPATCH: string; - export const HTTP2_METHOD_PATCH: string; - export const HTTP2_METHOD_POST: string; - export const HTTP2_METHOD_PRI: string; - export const HTTP2_METHOD_PROPFIND: string; - export const HTTP2_METHOD_PROPPATCH: string; - export const HTTP2_METHOD_PUT: string; - export const HTTP2_METHOD_REBIND: string; - export const HTTP2_METHOD_REPORT: string; - export const HTTP2_METHOD_SEARCH: string; - export const HTTP2_METHOD_TRACE: string; - export const HTTP2_METHOD_UNBIND: string; - export const HTTP2_METHOD_UNCHECKOUT: string; - export const HTTP2_METHOD_UNLINK: string; - export const HTTP2_METHOD_UNLOCK: string; - export const HTTP2_METHOD_UPDATE: string; - export const HTTP2_METHOD_UPDATEREDIRECTREF: string; - export const HTTP2_METHOD_VERSION_CONTROL: string; - export const HTTP_STATUS_CONTINUE: number; - export const HTTP_STATUS_SWITCHING_PROTOCOLS: number; - export const HTTP_STATUS_PROCESSING: number; - export const HTTP_STATUS_OK: number; - export const HTTP_STATUS_CREATED: number; - export const HTTP_STATUS_ACCEPTED: number; - export const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; - export const HTTP_STATUS_NO_CONTENT: number; - export const HTTP_STATUS_RESET_CONTENT: number; - export const HTTP_STATUS_PARTIAL_CONTENT: number; - export const HTTP_STATUS_MULTI_STATUS: number; - export const HTTP_STATUS_ALREADY_REPORTED: number; - export const HTTP_STATUS_IM_USED: number; - export const HTTP_STATUS_MULTIPLE_CHOICES: number; - export const HTTP_STATUS_MOVED_PERMANENTLY: number; - export const HTTP_STATUS_FOUND: number; - export const HTTP_STATUS_SEE_OTHER: number; - export const HTTP_STATUS_NOT_MODIFIED: number; - export const HTTP_STATUS_USE_PROXY: number; - export const HTTP_STATUS_TEMPORARY_REDIRECT: number; - export const HTTP_STATUS_PERMANENT_REDIRECT: number; - export const HTTP_STATUS_BAD_REQUEST: number; - export const HTTP_STATUS_UNAUTHORIZED: number; - export const HTTP_STATUS_PAYMENT_REQUIRED: number; - export const HTTP_STATUS_FORBIDDEN: number; - export const HTTP_STATUS_NOT_FOUND: number; - export const HTTP_STATUS_METHOD_NOT_ALLOWED: number; - export const HTTP_STATUS_NOT_ACCEPTABLE: number; - export const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; - export const HTTP_STATUS_REQUEST_TIMEOUT: number; - export const HTTP_STATUS_CONFLICT: number; - export const HTTP_STATUS_GONE: number; - export const HTTP_STATUS_LENGTH_REQUIRED: number; - export const HTTP_STATUS_PRECONDITION_FAILED: number; - export const HTTP_STATUS_PAYLOAD_TOO_LARGE: number; - export const HTTP_STATUS_URI_TOO_LONG: number; - export const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; - export const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; - export const HTTP_STATUS_EXPECTATION_FAILED: number; - export const HTTP_STATUS_TEAPOT: number; - export const HTTP_STATUS_MISDIRECTED_REQUEST: number; - export const HTTP_STATUS_UNPROCESSABLE_ENTITY: number; - export const HTTP_STATUS_LOCKED: number; - export const HTTP_STATUS_FAILED_DEPENDENCY: number; - export const HTTP_STATUS_UNORDERED_COLLECTION: number; - export const HTTP_STATUS_UPGRADE_REQUIRED: number; - export const HTTP_STATUS_PRECONDITION_REQUIRED: number; - export const HTTP_STATUS_TOO_MANY_REQUESTS: number; - export const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; - export const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; - export const HTTP_STATUS_INTERNAL_SERVER_ERROR: number; - export const HTTP_STATUS_NOT_IMPLEMENTED: number; - export const HTTP_STATUS_BAD_GATEWAY: number; - export const HTTP_STATUS_SERVICE_UNAVAILABLE: number; - export const HTTP_STATUS_GATEWAY_TIMEOUT: number; - export const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; - export const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; - export const HTTP_STATUS_INSUFFICIENT_STORAGE: number; - export const HTTP_STATUS_LOOP_DETECTED: number; - export const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; - export const HTTP_STATUS_NOT_EXTENDED: number; - export const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; - } - - export function getDefaultSettings(): Settings; - export function getPackedSettings(settings: Settings): Settings; - export function getUnpackedSettings(buf: Buffer | Uint8Array): Settings; - - export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server; - - export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer; - - export function connect(authority: string | url.URL, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session; - export function connect(authority: string | url.URL, options?: ClientSessionOptions | SecureClientSessionOptions, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session; -} - -declare module "perf_hooks" { - export interface PerformanceEntry { - /** - * The total number of milliseconds elapsed for this entry. - * This value will not be meaningful for all Performance Entry types. - */ - readonly duration: number; - - /** - * The name of the performance entry. - */ - readonly name: string; - - /** - * The high resolution millisecond timestamp marking the starting time of the Performance Entry. - */ - readonly startTime: number; - - /** - * The type of the performance entry. - * Currently it may be one of: 'node', 'mark', 'measure', 'gc', or 'function'. - */ - readonly entryType: string; - - /** - * When performanceEntry.entryType is equal to 'gc', the performance.kind property identifies - * the type of garbage collection operation that occurred. - * The value may be one of perf_hooks.constants. - */ - readonly kind?: number; - } - - export interface PerformanceNodeTiming extends PerformanceEntry { - /** - * The high resolution millisecond timestamp at which the Node.js process completed bootstrap. - */ - readonly bootstrapComplete: number; - - /** - * The high resolution millisecond timestamp at which cluster processing ended. - */ - readonly clusterSetupEnd: number; - - /** - * The high resolution millisecond timestamp at which cluster processing started. - */ - readonly clusterSetupStart: number; - - /** - * The high resolution millisecond timestamp at which the Node.js event loop exited. - */ - readonly loopExit: number; - - /** - * The high resolution millisecond timestamp at which the Node.js event loop started. - */ - readonly loopStart: number; - - /** - * The high resolution millisecond timestamp at which main module load ended. - */ - readonly moduleLoadEnd: number; - - /** - * The high resolution millisecond timestamp at which main module load started. - */ - readonly moduleLoadStart: number; - - /** - * The high resolution millisecond timestamp at which the Node.js process was initialized. - */ - readonly nodeStart: number; - - /** - * The high resolution millisecond timestamp at which preload module load ended. - */ - readonly preloadModuleLoadEnd: number; - - /** - * The high resolution millisecond timestamp at which preload module load started. - */ - readonly preloadModuleLoadStart: number; - - /** - * The high resolution millisecond timestamp at which third_party_main processing ended. - */ - readonly thirdPartyMainEnd: number; - - /** - * The high resolution millisecond timestamp at which third_party_main processing started. - */ - readonly thirdPartyMainStart: number; - - /** - * The high resolution millisecond timestamp at which the V8 platform was initialized. - */ - readonly v8Start: number; - } - - export interface Performance { - /** - * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline. - * If name is provided, removes entries with name. - * @param name - */ - clearFunctions(name?: string): void; - - /** - * If name is not provided, removes all PerformanceMark objects from the Performance Timeline. - * If name is provided, removes only the named mark. - * @param name - */ - clearMarks(name?: string): void; - - /** - * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline. - * If name is provided, removes only objects whose performanceEntry.name matches name. - */ - clearMeasures(name?: string): void; - - /** - * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime. - * @return list of all PerformanceEntry objects - */ - getEntries(): PerformanceEntry[]; - - /** - * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type. - * @param name - * @param type - * @return list of all PerformanceEntry objects - */ - getEntriesByName(name: string, type?: string): PerformanceEntry[]; - - /** - * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.entryType is equal to type. - * @param type - * @return list of all PerformanceEntry objects - */ - getEntriesByType(type: string): PerformanceEntry[]; - - /** - * Creates a new PerformanceMark entry in the Performance Timeline. - * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark', - * and whose performanceEntry.duration is always 0. - * Performance marks are used to mark specific significant moments in the Performance Timeline. - * @param name - */ - mark(name?: string): void; - - /** - * Creates a new PerformanceMeasure entry in the Performance Timeline. - * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', - * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. - * - * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify - * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, - * then startMark is set to timeOrigin by default. - * - * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp - * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. - * @param name - * @param startMark - * @param endMark - */ - measure(name: string, startMark: string, endMark: string): void; - - /** - * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones. - */ - readonly nodeTiming: PerformanceNodeTiming; - - /** - * @return the current high resolution millisecond timestamp - */ - now(): number; - - /** - * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured. - */ - readonly timeOrigin: number; - - /** - * Wraps a function within a new function that measures the running time of the wrapped function. - * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed. - * @param fn - */ - timerify<T extends (...optionalParams: any[]) => any>(fn: T): T; - } - - export interface PerformanceObserverEntryList { - /** - * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime. - */ - getEntries(): PerformanceEntry[]; - - /** - * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type. - */ - getEntriesByName(name: string, type?: string): PerformanceEntry[]; - - /** - * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime - * whose performanceEntry.entryType is equal to type. - */ - getEntriesByType(type: string): PerformanceEntry[]; - } - - export type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; - - export class PerformanceObserver { - constructor(callback: PerformanceObserverCallback); - - /** - * Disconnects the PerformanceObserver instance from all notifications. - */ - disconnect(): void; - - /** - * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes. - * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance. - * Property buffered defaults to false. - * @param options - */ - observe(options: { entryTypes: string[], buffered?: boolean }): void; - } - - export namespace constants { - export const NODE_PERFORMANCE_GC_MAJOR: number; - export const NODE_PERFORMANCE_GC_MINOR: number; - export const NODE_PERFORMANCE_GC_INCREMENTAL: number; - export const NODE_PERFORMANCE_GC_WEAKCB: number; - } - - const performance: Performance; -} \ No newline at end of file diff --git a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts index a6ec588d5a6..605f48afab8 100644 --- a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts +++ b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts @@ -146,7 +146,7 @@ function showContextMenu(e) { }) ); - menu.popup({ window: remote.getCurrentWindow() }); + menu.popup(remote.getCurrentWindow()); } } diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index d578e8c752b..238f3fb5b4f 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -61,8 +61,6 @@ import { LogLevelSetterChannel } from 'vs/platform/log/common/logIpc'; import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { ElectronURLListener } from 'vs/platform/url/electron-main/electronUrlListener'; import { serve as serveDriver } from 'vs/platform/driver/electron-main/driver'; -import { join } from 'path'; -import { copy, exists, rename } from 'vs/base/node/pfs'; export class CodeApplication { @@ -264,55 +262,49 @@ export class CodeApplication { this.logService.debug(`from: ${this.environmentService.appRoot}`); this.logService.debug('args:', this.environmentService.args); - // Handle local storage (TODO@Ben remove me after a while) - this.logService.trace('Handling localStorage if needed...'); - return this.handleLocalStorage().then(() => { + // Make sure we associate the program with the app user model id + // This will help Windows to associate the running program with + // any shortcut that is pinned to the taskbar and prevent showing + // two icons in the taskbar for the same app. + if (platform.isWindows && product.win32AppUserModelId) { + app.setAppUserModelId(product.win32AppUserModelId); + } - // Make sure we associate the program with the app user model id - // This will help Windows to associate the running program with - // any shortcut that is pinned to the taskbar and prevent showing - // two icons in the taskbar for the same app. - if (platform.isWindows && product.win32AppUserModelId) { - app.setAppUserModelId(product.win32AppUserModelId); + // Create Electron IPC Server + this.electronIpcServer = new ElectronIPCServer(); + + // Resolve unique machine ID + this.logService.trace('Resolving machine identifier...'); + return this.resolveMachineId().then(machineId => { + this.logService.trace(`Resolved machine identifier: ${machineId}`); + + // Spawn shared process + this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); + this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); + + // Services + const appInstantiationService = this.initServices(machineId); + + let promise: TPromise<any> = TPromise.as(null); + + // Create driver + if (this.environmentService.driverHandle) { + serveDriver(this.electronIpcServer, this.environmentService.driverHandle, appInstantiationService).then(server => { + this.logService.info('Driver started at:', this.environmentService.driverHandle); + this.toDispose.push(server); + }); } - // Create Electron IPC Server - this.electronIpcServer = new ElectronIPCServer(); + return promise.then(() => { + // Setup Auth Handler + const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); + this.toDispose.push(authHandler); - // Resolve unique machine ID - this.logService.trace('Resolving machine identifier...'); - return this.resolveMachineId().then(machineId => { - this.logService.trace(`Resolved machine identifier: ${machineId}`); + // Open Windows + appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); - // Spawn shared process - this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); - this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); - - // Services - const appInstantiationService = this.initServices(machineId); - - let promise: TPromise<any> = TPromise.as(null); - - // Create driver - if (this.environmentService.driverHandle) { - serveDriver(this.electronIpcServer, this.environmentService.driverHandle, appInstantiationService).then(server => { - this.logService.info('Driver started at:', this.environmentService.driverHandle); - this.toDispose.push(server); - }); - } - - return promise.then(() => { - - // Setup Auth Handler - const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); - this.toDispose.push(authHandler); - - // Open Windows - appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); - - // Post Open Windows Tasks - appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); - }); + // Post Open Windows Tasks + appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); }); }); } @@ -332,36 +324,6 @@ export class CodeApplication { }); } - private handleLocalStorage(): TPromise<void> { - const localStorageFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage'); - const localStorageJournalFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal'); - const localStorageBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage.vscbak'); - const localStorageJournalBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal.vscbak'); - - // Electron 1.7.12: Restore storage - if (process.versions.electron === '1.7.12') { - return exists(localStorageBackupFile).then(localStorageBackupFileExists => { - return exists(localStorageJournalBackupFile).then(localStorageJournalBackupFileExists => { - return TPromise.join([ - localStorageBackupFileExists ? rename(localStorageBackupFile, localStorageFile) : TPromise.as(void 0), - localStorageJournalBackupFileExists ? rename(localStorageJournalBackupFile, localStorageJournalFile) : TPromise.as(void 0) - ]); - }); - }).then(() => void 0, () => void 0); - } - - // Electron 2.0: Backup - else { - return exists(localStorageBackupFile).then(backupExists => { - if (backupExists) { - return void 0; // do not backup if backup already exists - } - - return copy(localStorageFile, localStorageBackupFile).then(() => copy(localStorageJournalFile, localStorageJournalBackupFile)); - }).then(() => void 0, () => void 0); - } - } - private initServices(machineId: string): IInstantiationService { const services = new ServiceCollection(); @@ -519,4 +481,4 @@ export class CodeApplication { private dispose(): void { this.toDispose = dispose(this.toDispose); } -} \ No newline at end of file +} diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index e5968577d0b..af71a291e7b 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -186,6 +186,23 @@ export class CodeWindow implements ICodeWindow { this._win = new BrowserWindow(options); this._id = this._win.id; + // Bug in Electron (https://github.com/electron/electron/issues/10862). On multi-monitor setups, + // it can happen that the position we set to the window is not the correct one on the display. + // To workaround, we ask the window for its position and set it again if not matching. + // This only applies if the window is not fullscreen or maximized and multiple monitors are used. + if (isWindows && !isFullscreenOrMaximized) { + try { + if (screen.getAllDisplays().length > 1) { + const [x, y] = this._win.getPosition(); + if (x !== this.windowState.x || y !== this.windowState.y) { + this._win.setPosition(this.windowState.x, this.windowState.y, false); + } + } + } catch (err) { + this.logService.warn(`Unexpected error fixing window position on windows with multiple windows: ${err}\n${err.stack}`); + } + } + if (useCustomTitleStyle) { this._win.setSheetOffset(22); // offset dialogs by the height of the custom title bar if we have any } @@ -938,6 +955,11 @@ export class CodeWindow implements ICodeWindow { this.touchBarGroups.push(groupTouchBar); } + // Ugly workaround for native crash on macOS 10.12.1. We are not + // leveraging the API for changing the ESC touch bar item. + // See https://github.com/electron/electron/issues/10442 + (<any>this._win)._setEscapeTouchBarItem = () => { }; + this._win.setTouchBar(new TouchBar({ items: this.touchBarGroups })); } diff --git a/src/vs/platform/update/electron-main/updateService.darwin.ts b/src/vs/platform/update/electron-main/updateService.darwin.ts index 629ca60be86..aae291e1630 100644 --- a/src/vs/platform/update/electron-main/updateService.darwin.ts +++ b/src/vs/platform/update/electron-main/updateService.darwin.ts @@ -49,7 +49,7 @@ export class DarwinUpdateService extends AbstractUpdateService { protected setUpdateFeedUrl(quality: string): boolean { try { - electron.autoUpdater.setFeedURL({ url: createUpdateURL('darwin', quality) }); + electron.autoUpdater.setFeedURL(createUpdateURL('darwin', quality)); } catch (e) { // application is very likely not signed this.logService.error('Failed to set update feed URL'); diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index c6c432a65c0..d63f117ff44 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -24,17 +24,14 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ToggleActivityBarVisibilityAction } from 'vs/workbench/browser/actions/toggleActivityBarVisibility'; -import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; import { ACTIVITY_BAR_BACKGROUND, ACTIVITY_BAR_BORDER, ACTIVITY_BAR_FOREGROUND, ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_DRAG_AND_DROP_BACKGROUND } from 'vs/workbench/common/theme'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { CompositeBar } from 'vs/workbench/browser/parts/compositebar/compositeBar'; import { ToggleCompositePinnedAction } from 'vs/workbench/browser/parts/compositebar/compositeBarActions'; -import { isMacintosh } from 'vs/base/common/platform'; -import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { Dimension, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom'; -import { Color } from 'vs/base/common/color'; import { ViewLocation, ViewsRegistry } from 'vs/workbench/common/views'; import { ViewletDescriptor } from 'vs/workbench/browser/viewlet'; +import { Dimension } from 'vs/base/browser/dom'; export class ActivitybarPart extends Part { @@ -62,8 +59,7 @@ export class ActivitybarPart extends Part { @IContextMenuService private contextMenuService: IContextMenuService, @IInstantiationService private instantiationService: IInstantiationService, @IPartService private partService: IPartService, - @IThemeService themeService: IThemeService, - @ILifecycleService private lifecycleService: ILifecycleService + @IThemeService themeService: IThemeService ) { super(id, { hasTitle: false }, themeService); @@ -142,27 +138,6 @@ export class ActivitybarPart extends Part { // Top Actionbar with action items for each viewlet action this.createGlobalActivityActionBar($('.global-activity').appendTo($result).getHTMLElement()); - // TODO@Ben: workaround for https://github.com/Microsoft/vscode/issues/45700 - // It looks like there are rendering glitches on macOS with Chrome 61 when - // using --webkit-mask with a background color that is different from the image - // The workaround is to promote the element onto its own drawing layer. We do - // this only after the workbench has loaded because otherwise there is ugly flicker. - if (isMacintosh) { - this.lifecycleService.when(LifecyclePhase.Running).then(() => { - scheduleAtNextAnimationFrame(() => { // another delay... - scheduleAtNextAnimationFrame(() => { // ...to prevent more flickering on startup - registerThemingParticipant((theme, collector) => { - const activityBarForeground = theme.getColor(ACTIVITY_BAR_FOREGROUND); - if (activityBarForeground && !activityBarForeground.equals(Color.white)) { - // only apply this workaround if the color is different from the image one (white) - collector.addRule('.monaco-workbench .activitybar > .content > .composite-bar > .monaco-action-bar .action-label { will-change: transform; }'); - } - }); - }); - }); - }); - } - return $result.getHTMLElement(); } diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index 5692c84329a..93ba3e987c8 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -43,7 +43,7 @@ import { IIntegrityService } from 'vs/platform/integrity/common/integrity'; import { EditorWorkerServiceImpl } from 'vs/editor/common/services/editorWorkerServiceImpl'; import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService'; import { ExtensionService } from 'vs/workbench/services/extensions/electron-browser/extensionService'; -import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import { IStorageService } from 'vs/platform/storage/common/storage'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; @@ -83,7 +83,7 @@ import { HashService } from 'vs/workbench/services/hash/node/hashService'; import { IHashService } from 'vs/workbench/services/hash/common/hashService'; import { ILogService } from 'vs/platform/log/common/log'; import { WORKBENCH_BACKGROUND } from 'vs/workbench/common/theme'; -import { stat, existsSync } from 'fs'; +import { stat } from 'fs'; import { join } from 'path'; import { ILocalizationsChannel, LocalizationsChannelClient } from 'vs/platform/localizations/common/localizationsIpc'; import { ILocalizationsService } from 'vs/platform/localizations/common/localizations'; @@ -128,7 +128,6 @@ export class WorkbenchShell { private lifecycleService: LifecycleService; private mainProcessServices: ServiceCollection; private notificationService: INotificationService; - private mainProcessClient: IPCClient; private container: HTMLElement; private toUnbind: IDisposable[]; @@ -140,9 +139,7 @@ export class WorkbenchShell { private configuration: IWindowConfiguration; private workbench: Workbench; - private hasLocalStorageData: boolean; - - constructor(container: HTMLElement, coreServices: ICoreServices, mainProcessServices: ServiceCollection, mainProcessClient: IPCClient, configuration: IWindowConfiguration) { + constructor(container: HTMLElement, coreServices: ICoreServices, mainProcessServices: ServiceCollection, private mainProcessClient: IPCClient, configuration: IWindowConfiguration) { this.container = container; this.configuration = configuration; @@ -155,13 +152,9 @@ export class WorkbenchShell { this.storageService = coreServices.storageService; this.mainProcessServices = mainProcessServices; - this.mainProcessClient = mainProcessClient; this.toUnbind = []; this.previousErrorTime = 0; - - // TODO@Ben remove me later - this.hasLocalStorageData = !!this.storageService.get('releaseNotes/lastVersion', StorageScope.GLOBAL); } private createContents(parent: HTMLElement): HTMLElement { @@ -227,11 +220,6 @@ export class WorkbenchShell { if (!this.environmentService.extensionTestsPath && this.contextService.getWorkbenchState() === WorkbenchState.FOLDER) { this.logLocalStorageMetrics(); } - - // localStorage migration (TODO@Ben remove me later) - if (!this.environmentService.extensionTestsPath) { - this.logLocalStorageMigrationStatus(); - } }); return workbench; @@ -306,17 +294,17 @@ export class WorkbenchShell { } perf.mark('willReadLocalStorage'); - const readyToSend = this.storageService.getBoolean('localStorageMetricsReadyToSend4'); + const readyToSend = this.storageService.getBoolean('localStorageMetricsReadyToSend2'); perf.mark('didReadLocalStorage'); if (!readyToSend) { - this.storageService.store('localStorageMetricsReadyToSend4', true); + this.storageService.store('localStorageMetricsReadyToSend2', true); return; // avoid logging localStorage metrics directly after the update, we prefer cold startup numbers } - if (!this.storageService.getBoolean('localStorageMetricsSent4')) { + if (!this.storageService.getBoolean('localStorageMetricsSent2')) { perf.mark('willWriteLocalStorage'); - this.storageService.store('localStorageMetricsSent4', true); + this.storageService.store('localStorageMetricsSent2', true); perf.mark('didWriteLocalStorage'); perf.mark('willStatLocalStorage'); @@ -334,7 +322,7 @@ export class WorkbenchShell { "size": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ - this.telemetryService.publicLog('localStorageTimers4', { + this.telemetryService.publicLog('localStorageTimers2', { 'statTime': perf.getDuration('willStatLocalStorage', 'didStatLocalStorage'), 'accessTime': perf.getDuration('willAccessLocalStorage', 'didAccessLocalStorage'), 'firstReadTime': perf.getDuration('willReadWorkspaceIdentifier', 'didReadWorkspaceIdentifier'), @@ -347,38 +335,6 @@ export class WorkbenchShell { } } - private logLocalStorageMigrationStatus(): void { - if (product.quality === 'insider' && !this.storageService.getBoolean('localStorageMigrationStatusLogged')) { - this.storageService.store('localStorageMigrationStatusLogged', true); - - stat(join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage.vscbak'), (error, stat) => { - // if we have a backup of localStorage it means a migration was attempted - // by Electron 2.0. We log to telemetry if we had data initially which means - // the migration was successful. - if (stat) { - /* __GDPR__ - "localStorageMigrationStatus" : { - "platform": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "arch": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "migrated": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "size": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "sqliteStillExists": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, - "sqliteJournalExists": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } - } - */ - this.telemetryService.publicLog('localStorageMigrationStatus', { - 'platform': process.platform, - 'arch': process.arch, - 'migrated': this.hasLocalStorageData, - 'size': stat.size, - 'sqliteStillExists': existsSync(join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage')), - 'sqliteJournalExists': existsSync(join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal')) - }); - } - }); - } - } - private initServiceCollection(container: HTMLElement): [IInstantiationService, ServiceCollection] { const serviceCollection = new ServiceCollection(); serviceCollection.set(IWorkspaceContextService, this.contextService); diff --git a/src/vs/workbench/node/extensionHostProcess.ts b/src/vs/workbench/node/extensionHostProcess.ts index fb05c3f3c2e..b91ad78ad4d 100644 --- a/src/vs/workbench/node/extensionHostProcess.ts +++ b/src/vs/workbench/node/extensionHostProcess.ts @@ -13,24 +13,6 @@ import { Protocol } from 'vs/base/parts/ipc/node/ipc.net'; import { createConnection } from 'net'; import { Event, filterEvent } from 'vs/base/common/event'; -// TODO@ben: with Electron 2.x and node.js 8.x the "natives" module -// can cause a native crash (see https://github.com/nodejs/node/issues/19891 and -// https://github.com/electron/electron/issues/10905). To prevent this from -// happening we essentially blocklist this module from getting loaded in any -// extension by patching the node require() function. -(function () { - const Module = require.__$__nodeRequire('module') as any; - const originalLoad = Module._load; - - Module._load = function (request) { - if (request === 'natives') { - throw new Error('Either the extension or a NPM dependency is using the "natives" node module which is unsupported as it can cause a crash of the extension host. Click [here](https://go.microsoft.com/fwlink/?linkid=871887) to find out more'); - } - - return originalLoad.apply(this, arguments); - }; -})(); - interface IRendererConnection { protocol: IMessagePassingProtocol; initData: IInitData; @@ -146,6 +128,8 @@ createExtHostProtocol().then(protocol => { return extensionHostMain.start(); }).catch(err => console.error(err)); + + function patchExecArgv() { // when encountering the prevent-inspect flag we delete this // and the prior flag diff --git a/src/vs/workbench/services/configuration/node/configurationService.ts b/src/vs/workbench/services/configuration/node/configurationService.ts index 99e62f15189..f304dc4c546 100644 --- a/src/vs/workbench/services/configuration/node/configurationService.ts +++ b/src/vs/workbench/services/configuration/node/configurationService.ts @@ -16,8 +16,8 @@ import { Queue } from 'vs/base/common/async'; import { stat, writeFile } from 'vs/base/node/pfs'; import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; import { IWorkspaceContextService, Workspace, WorkbenchState, IWorkspaceFolder, toWorkspaceFolders, IWorkspaceFoldersChangeEvent, WorkspaceFolder } from 'vs/platform/workspace/common/workspace'; -import { isLinux, isWindows, isMacintosh } from 'vs/base/common/platform'; import { IFileService } from 'vs/platform/files/common/files'; +import { isLinux } from 'vs/base/common/platform'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ConfigurationChangeEvent, ConfigurationModel, DefaultConfigurationModel } from 'vs/platform/configuration/common/configurationModels'; import { IConfigurationChangeEvent, ConfigurationTarget, IConfigurationOverrides, keyFromOverrideIdentifier, isConfigurationOverrides, IConfigurationData } from 'vs/platform/configuration/common/configuration'; @@ -349,19 +349,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat const folderPath = URI.file(singleFolderWorkspaceIdentifier); return stat(folderPath.fsPath) .then(workspaceStat => { - let ctime: number; - if (isLinux) { - ctime = workspaceStat.ino; // Linux: birthtime is ctime, so we cannot use it! We use the ino instead! - } else if (isMacintosh) { - ctime = workspaceStat.birthtime.getTime(); // macOS: birthtime is fine to use as is - } else if (isWindows) { - if (typeof workspaceStat.birthtimeMs === 'number') { - ctime = Math.floor(workspaceStat.birthtimeMs); // Windows: fix precision issue in node.js 8.x to get 7.x results (see https://github.com/nodejs/node/issues/19897) - } else { - ctime = workspaceStat.birthtime.getTime(); - } - } - + const ctime = isLinux ? workspaceStat.ino : workspaceStat.birthtime.getTime(); // On Linux, birthtime is ctime, so we cannot use it! We use the ino instead! const id = createHash('md5').update(folderPath.fsPath).update(ctime ? String(ctime) : '').digest('hex'); const folder = URI.file(folderPath.fsPath); return new Workspace(id, getBaseLabel(folder), toWorkspaceFolders([{ path: folder.fsPath }]), null, ctime); diff --git a/src/vs/workbench/services/contextview/electron-browser/contextmenuService.ts b/src/vs/workbench/services/contextview/electron-browser/contextmenuService.ts index 6382148634b..5c323ca2409 100644 --- a/src/vs/workbench/services/contextview/electron-browser/contextmenuService.ts +++ b/src/vs/workbench/services/contextview/electron-browser/contextmenuService.ts @@ -18,7 +18,6 @@ import { unmnemonicLabel } from 'vs/base/common/labels'; import { Event, Emitter } from 'vs/base/common/event'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IContextMenuDelegate, ContextSubMenu, IEvent } from 'vs/base/browser/contextmenu'; -import { once } from 'vs/base/common/functional'; export class ContextMenuService implements IContextMenuService { @@ -43,15 +42,7 @@ export class ContextMenuService implements IContextMenuService { } return TPromise.timeout(0).then(() => { // https://github.com/Microsoft/vscode/issues/3638 - const onHide = once(() => { - if (delegate.onHide) { - delegate.onHide(undefined); - } - - this._onDidContextMenu.fire(); - }); - - const menu = this.createMenu(delegate, actions, onHide); + const menu = this.createMenu(delegate, actions); const anchor = delegate.getAnchor(); let x: number, y: number; @@ -70,18 +61,16 @@ export class ContextMenuService implements IContextMenuService { x *= zoom; y *= zoom; - menu.popup({ - window: remote.getCurrentWindow(), - x: Math.floor(x), - y: Math.floor(y), - positioningItem: delegate.autoSelectFirstItem ? 0 : void 0, - callback: () => onHide() - }); + menu.popup(remote.getCurrentWindow(), { x: Math.floor(x), y: Math.floor(y), positioningItem: delegate.autoSelectFirstItem ? 0 : void 0 }); + this._onDidContextMenu.fire(); + if (delegate.onHide) { + delegate.onHide(undefined); + } }); }); } - private createMenu(delegate: IContextMenuDelegate, entries: (IAction | ContextSubMenu)[], onHide: () => void): Electron.Menu { + private createMenu(delegate: IContextMenuDelegate, entries: (IAction | ContextSubMenu)[]): Electron.Menu { const menu = new remote.Menu(); const actionRunner = delegate.actionRunner || new ActionRunner(); @@ -90,7 +79,7 @@ export class ContextMenuService implements IContextMenuService { menu.append(new remote.MenuItem({ type: 'separator' })); } else if (e instanceof ContextSubMenu) { const submenu = new remote.MenuItem({ - submenu: this.createMenu(delegate, e.entries, onHide), + submenu: this.createMenu(delegate, e.entries), label: unmnemonicLabel(e.label) }); @@ -102,13 +91,6 @@ export class ContextMenuService implements IContextMenuService { type: !!e.checked ? 'checkbox' : !!e.radio ? 'radio' : void 0, enabled: !!e.enabled, click: (menuItem, win, event) => { - - // To preserve pre-electron-2.x behaviour, we first trigger - // the onHide callback and then the action. - // Fixes https://github.com/Microsoft/vscode/issues/45601 - onHide(); - - // Run action which will close the menu this.runAction(actionRunner, e, delegate, event); } }; diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index ad9aab56112..7a1508c2eec 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -193,13 +193,13 @@ export class ExtensionHostProcessWorker { }, 100); // Print out extension host output - onDebouncedOutput(output => { - const inspectorUrlMatch = !this._environmentService.isBuilt && output.data && output.data.match(/ws:\/\/([^\s]+)/); - if (inspectorUrlMatch) { - console.log(`%c[Extension Host] %cdebugger inspector at chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=${inspectorUrlMatch[1]}`, 'color: blue', 'color: black'); + onDebouncedOutput(data => { + const inspectorUrlIndex = !this._environmentService.isBuilt && data.data && data.data.indexOf('chrome-devtools://'); + if (inspectorUrlIndex >= 0) { + console.log(`%c[Extension Host] %cdebugger inspector at ${data.data.substr(inspectorUrlIndex)}`, 'color: blue', 'color: black'); } else { console.group('Extension Host'); - console.log(output.data, ...output.format); + console.log(data.data, ...data.format); console.groupEnd(); } }); From aaa191d9a2d893a7d42b6e2233430c5fe5064d9e Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 16:24:27 +0200 Subject: [PATCH 1063/1070] localStorage: restore from backup if any --- src/vs/code/electron-main/app.ts | 100 +++++++++++++++++++------------ 1 file changed, 62 insertions(+), 38 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 238f3fb5b4f..2060846bfc5 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -61,6 +61,8 @@ import { LogLevelSetterChannel } from 'vs/platform/log/common/logIpc'; import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { ElectronURLListener } from 'vs/platform/url/electron-main/electronUrlListener'; import { serve as serveDriver } from 'vs/platform/driver/electron-main/driver'; +import { join } from 'path'; +import { exists, rename } from 'vs/base/node/pfs'; export class CodeApplication { @@ -262,49 +264,54 @@ export class CodeApplication { this.logService.debug(`from: ${this.environmentService.appRoot}`); this.logService.debug('args:', this.environmentService.args); - // Make sure we associate the program with the app user model id - // This will help Windows to associate the running program with - // any shortcut that is pinned to the taskbar and prevent showing - // two icons in the taskbar for the same app. - if (platform.isWindows && product.win32AppUserModelId) { - app.setAppUserModelId(product.win32AppUserModelId); - } + // Handle local storage (TODO@Ben remove me after a while) + return this.handleLocalStorage().then(() => { - // Create Electron IPC Server - this.electronIpcServer = new ElectronIPCServer(); - - // Resolve unique machine ID - this.logService.trace('Resolving machine identifier...'); - return this.resolveMachineId().then(machineId => { - this.logService.trace(`Resolved machine identifier: ${machineId}`); - - // Spawn shared process - this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); - this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); - - // Services - const appInstantiationService = this.initServices(machineId); - - let promise: TPromise<any> = TPromise.as(null); - - // Create driver - if (this.environmentService.driverHandle) { - serveDriver(this.electronIpcServer, this.environmentService.driverHandle, appInstantiationService).then(server => { - this.logService.info('Driver started at:', this.environmentService.driverHandle); - this.toDispose.push(server); - }); + // Make sure we associate the program with the app user model id + // This will help Windows to associate the running program with + // any shortcut that is pinned to the taskbar and prevent showing + // two icons in the taskbar for the same app. + if (platform.isWindows && product.win32AppUserModelId) { + app.setAppUserModelId(product.win32AppUserModelId); } - return promise.then(() => { - // Setup Auth Handler - const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); - this.toDispose.push(authHandler); + // Create Electron IPC Server + this.electronIpcServer = new ElectronIPCServer(); - // Open Windows - appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); + // Resolve unique machine ID + this.logService.trace('Resolving machine identifier...'); + return this.resolveMachineId().then(machineId => { + this.logService.trace(`Resolved machine identifier: ${machineId}`); - // Post Open Windows Tasks - appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); + // Spawn shared process + this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); + this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); + + // Services + const appInstantiationService = this.initServices(machineId); + + let promise: TPromise<any> = TPromise.as(null); + + // Create driver + if (this.environmentService.driverHandle) { + serveDriver(this.electronIpcServer, this.environmentService.driverHandle, appInstantiationService).then(server => { + this.logService.info('Driver started at:', this.environmentService.driverHandle); + this.toDispose.push(server); + }); + } + + return promise.then(() => { + + // Setup Auth Handler + const authHandler = appInstantiationService.createInstance(ProxyAuthHandler); + this.toDispose.push(authHandler); + + // Open Windows + appInstantiationService.invokeFunction(accessor => this.openFirstWindow(accessor)); + + // Post Open Windows Tasks + appInstantiationService.invokeFunction(accessor => this.afterWindowOpen(accessor)); + }); }); }); } @@ -324,6 +331,23 @@ export class CodeApplication { }); } + private handleLocalStorage(): TPromise<void> { + const localStorageFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage'); + const localStorageJournalFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal'); + const localStorageBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage.vscbak'); + const localStorageJournalBackupFile = join(this.environmentService.userDataPath, 'Local Storage', 'file__0.localstorage-journal.vscbak'); + + // Electron 1.7.12: Restore storage + return exists(localStorageBackupFile).then(localStorageBackupFileExists => { + return exists(localStorageJournalBackupFile).then(localStorageJournalBackupFileExists => { + return TPromise.join([ + localStorageBackupFileExists ? rename(localStorageBackupFile, localStorageFile) : TPromise.as(void 0), + localStorageJournalBackupFileExists ? rename(localStorageJournalBackupFile, localStorageJournalFile) : TPromise.as(void 0) + ]); + }); + }).then(() => void 0, () => void 0); + } + private initServices(machineId: string): IInstantiationService { const services = new ServiceCollection(); From 2a54d2960c4d01272dab1f7e150b03165e95fd70 Mon Sep 17 00:00:00 2001 From: isidor <inikolic@microsoft.com> Date: Fri, 20 Apr 2018 17:38:12 +0200 Subject: [PATCH 1064/1070] minor rename --- .../workbench/parts/files/electron-browser/fileCommands.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts index fa3c104b434..06a87609635 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts @@ -386,11 +386,11 @@ CommandsRegistry.registerCommand({ } }); -function revealResourcesInOS(resources: URI[], windowsService: IWindowsService, notificationService: INotificationService, workSpaceContextService: IWorkspaceContextService): void { +function revealResourcesInOS(resources: URI[], windowsService: IWindowsService, notificationService: INotificationService, workspaceContextService: IWorkspaceContextService): void { if (resources.length) { sequence(resources.map(r => () => windowsService.showItemInFolder(paths.normalize(r.fsPath, true)))); - } else if (workSpaceContextService.getWorkspace().folders.length) { - windowsService.showItemInFolder(paths.normalize(workSpaceContextService.getWorkspace().folders[0].uri.fsPath, true)); + } else if (workspaceContextService.getWorkspace().folders.length) { + windowsService.showItemInFolder(paths.normalize(workspaceContextService.getWorkspace().folders[0].uri.fsPath, true)); } else { notificationService.info(nls.localize('openFileToReveal', "Open a file first to reveal")); } From 3df75e9194207aca819941df98e24fba268c4d27 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero <benjpas@microsoft.com> Date: Fri, 20 Apr 2018 17:42:26 +0200 Subject: [PATCH 1065/1070] back to IWorkbenchEditorService for creating file input (for #48275) --- .../parts/files/electron-browser/files.contribution.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/files.contribution.ts b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts index 48906d6533e..1da4ee90a94 100644 --- a/src/vs/workbench/parts/files/electron-browser/files.contribution.ts +++ b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts @@ -136,7 +136,7 @@ class FileEditorInputFactory implements IEditorInputFactory { const resource = !!fileInput.resourceJSON ? URI.revive(fileInput.resourceJSON) : URI.parse(fileInput.resource); const encoding = fileInput.encoding; - return accessor.get(IInstantiationService).createInstance(FileEditorInput, resource, encoding); + return accessor.get(IWorkbenchEditorService).createInput({ resource, encoding }) as FileEditorInput; }); } } From d9d5663a69295a34dedbeaed5bab515b36961792 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Fri, 20 Apr 2018 17:00:21 +0200 Subject: [PATCH 1066/1070] scm viewlet: call setVisible on contributed panels --- .../parts/scm/electron-browser/scmViewlet.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 51dadcef081..17c764c629e 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -1185,14 +1185,23 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { } setVisible(visible: boolean): TPromise<void> { - const result = super.setVisible(visible); + const promises: TPromise<any>[] = []; + promises.push(super.setVisible(visible)); if (!visible) { this.cachedMainPanelHeight = this.getPanelSize(this.mainPanel); } this._onDidChangeVisibility.fire(visible); - return result; + + const start = this.getContributedViewsStartIndex(); + + for (let i = 0; i < this.contributedViews.viewDescriptors.length; i++) { + const panel = this.panels[start + i] as ViewsViewletPanel; + promises.push(panel.setVisible(visible)); + } + + return TPromise.join(promises) as TPromise<any>; } getOptimalWidth(): number { @@ -1351,6 +1360,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel { }) as ViewsViewletPanel; this.addPanels([{ panel, size: size || panel.minimumSize, index: start + index }]); + panel.setVisible(true); const contextMenuDisposable = addDisposableListener(panel.draggableElement, 'contextmenu', e => { e.stopPropagation(); From 9c4ad2db686b7e29c89f52c172376fe1e7574256 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Fri, 20 Apr 2018 17:26:08 +0200 Subject: [PATCH 1067/1070] rename uri api --- src/vs/vscode.proposed.d.ts | 8 ++++---- .../workbench/api/electron-browser/mainThreadUrls.ts | 6 +++--- src/vs/workbench/api/node/extHost.api.impl.ts | 4 ++-- src/vs/workbench/api/node/extHost.protocol.ts | 6 +++--- src/vs/workbench/api/node/extHostUrls.ts | 12 ++++++------ 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 8158008cd85..8c7906ceae9 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -656,16 +656,16 @@ declare module 'vscode' { //#region URLs - export interface UrlHandler { - handleUrl(uri: Uri): void; + export interface ExternalUriHandler { + handleExternalUri(uri: Uri): void; } export namespace window { /** - * Registers a URL handler. + * Registers a protocol handler capable of handling system-wide URIs. */ - export function registerUrlHandler(handler: UrlHandler): Disposable; + export function registerExternalUriHandler(handler: ExternalUriHandler): Disposable; } //#endregion diff --git a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts index 64d74d4f23e..b84eecd04e8 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts @@ -23,7 +23,7 @@ class ExtensionUrlHandler implements IURLHandler { return TPromise.as(false); } - return this.proxy.$handleUrl(this.handle, uri).then(() => true); + return this.proxy.$handleExternalUri(this.handle, uri).then(() => true); } } @@ -41,7 +41,7 @@ export class MainThreadUrls implements MainThreadUrlsShape { this.proxy = context.getProxy(ExtHostContext.ExtHostUrls); } - $registerUrlHandler(handle: number, extensionId: string): TPromise<void> { + $registerExternalUriHandler(handle: number, extensionId: string): TPromise<void> { const handler = new ExtensionUrlHandler(this.proxy, handle, extensionId); const disposable = this.urlService.registerHandler(handler); this.handlers.set(handle, disposable); @@ -49,7 +49,7 @@ export class MainThreadUrls implements MainThreadUrlsShape { return TPromise.as(null); } - $unregisterUrlHandler(handle: number): TPromise<void> { + $unregisterExternalUriHandler(handle: number): TPromise<void> { const disposable = this.handlers.get(handle); if (!disposable) { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 054977f834d..688f4f3460f 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -434,8 +434,8 @@ export function createApiFactory( registerWebviewPanelSerializer: proposedApiFunction(extension, (viewType: string, serializer: vscode.WebviewPanelSerializer) => { return extHostWebviews.registerWebviewPanelSerializer(viewType, serializer); }), - registerUrlHandler: proposedApiFunction(extension, (handler: vscode.UrlHandler) => { - return extHostUrls.registerUrlHandler(extension.id, handler); + registerExternalUriHandler: proposedApiFunction(extension, (handler: vscode.ExternalUriHandler) => { + return extHostUrls.registerExternalUriHandler(extension.id, handler); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 9c1906697da..a31a36c4c7c 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -373,12 +373,12 @@ export interface ExtHostWebviewsShape { } export interface MainThreadUrlsShape extends IDisposable { - $registerUrlHandler(handle: number, extensionId: string): TPromise<void>; - $unregisterUrlHandler(handle: number): TPromise<void>; + $registerExternalUriHandler(handle: number, extensionId: string): TPromise<void>; + $unregisterExternalUriHandler(handle: number): TPromise<void>; } export interface ExtHostUrlsShape { - $handleUrl(handle: number, uri: UriComponents): TPromise<void>; + $handleExternalUri(handle: number, uri: UriComponents): TPromise<void>; } export interface MainThreadWorkspaceShape extends IDisposable { diff --git a/src/vs/workbench/api/node/extHostUrls.ts b/src/vs/workbench/api/node/extHostUrls.ts index a9e946c0c6d..c4ba32abf0e 100644 --- a/src/vs/workbench/api/node/extHostUrls.ts +++ b/src/vs/workbench/api/node/extHostUrls.ts @@ -14,7 +14,7 @@ export class ExtHostUrls implements ExtHostUrlsShape { private static HandlePool = 0; private readonly _proxy: MainThreadUrlsShape; - private handlers = new Map<number, vscode.UrlHandler>(); + private handlers = new Map<number, vscode.ExternalUriHandler>(); constructor( mainContext: IMainContext @@ -22,25 +22,25 @@ export class ExtHostUrls implements ExtHostUrlsShape { this._proxy = mainContext.getProxy(MainContext.MainThreadUrls); } - registerUrlHandler(extensionId: string, handler: vscode.UrlHandler): vscode.Disposable { + registerExternalUriHandler(extensionId: string, handler: vscode.ExternalUriHandler): vscode.Disposable { const handle = ExtHostUrls.HandlePool++; this.handlers.set(handle, handler); - this._proxy.$registerUrlHandler(handle, extensionId); + this._proxy.$registerExternalUriHandler(handle, extensionId); return toDisposable(() => { this.handlers.delete(handle); - this._proxy.$unregisterUrlHandler(handle); + this._proxy.$unregisterExternalUriHandler(handle); }); } - $handleUrl(handle: number, uri: UriComponents): TPromise<void> { + $handleExternalUri(handle: number, uri: UriComponents): TPromise<void> { const handler = this.handlers.get(handle); if (!handler) { return TPromise.as(null); } - handler.handleUrl(URI.revive(uri)); + handler.handleExternalUri(URI.revive(uri)); return TPromise.as(null); } } \ No newline at end of file From 1421074796dd565115f6956f1453d178a59cd6c8 Mon Sep 17 00:00:00 2001 From: Joao Moreno <jomo@microsoft.com> Date: Fri, 20 Apr 2018 19:00:24 +0200 Subject: [PATCH 1068/1070] inactive extension url handler --- .../inactiveExtensionUrlHandler.ts | 122 ++++++++++++++++++ .../api/electron-browser/mainThreadUrls.ts | 25 ++-- .../workbench/electron-browser/workbench.ts | 4 + .../node/extensionDescriptionRegistry.ts | 6 + 4 files changed, 148 insertions(+), 9 deletions(-) create mode 100644 src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts diff --git a/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts b/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts new file mode 100644 index 00000000000..9f9c05762c9 --- /dev/null +++ b/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts @@ -0,0 +1,122 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IURLService, IURLHandler } from 'vs/platform/url/common/url'; +import URI from 'vs/base/common/uri'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import { IDisposable, toDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; + +const FIVE_MINUTES = 5 * 60 * 1000; +const THIRTY_SECONDS = 30 * 1000; + +function isExtensionId(value: string): boolean { + return /^[a-z0-9][a-z0-9\-]*\.[a-z0-9][a-z0-9\-]*$/i.test(value); +} + +export const IInactiveExtensionUrlHandler = createDecorator<IInactiveExtensionUrlHandler>('inactiveExtensionUrlHandler'); + +export interface IInactiveExtensionUrlHandler { + readonly _serviceBrand: any; + registerExtensionHandler(extensionId: string, handler: IURLHandler): void; + unregisterExtensionHandler(extensionId: string): void; +} + +/** + * This class handles URLs which are directed towards inactive extensions. + * If a URL is directed towards an inactive extension, it buffers it, + * activates the extension and re-opens the URL once the extension registers + * a URL handler. If the extension never registers a URL handler, the urls + * will eventually be garbage collected. + */ +export class InactiveExtensionUrlHandler implements IInactiveExtensionUrlHandler, IURLHandler { + + readonly _serviceBrand: any; + + private extensionIds = new Set<string>(); + private uriBuffer = new Map<string, { timestamp: number, uri: URI }[]>(); + private disposable: IDisposable; + + constructor( + @IURLService urlService: IURLService, + @IExtensionService private extensionService: IExtensionService + ) { + const interval = setInterval(() => this.garbageCollect(), THIRTY_SECONDS); + + this.disposable = combinedDisposable([ + urlService.registerHandler(this), + toDisposable(() => clearInterval(interval)) + ]); + } + + handleURL(uri: URI): TPromise<boolean> { + if (!isExtensionId(uri.authority)) { + return TPromise.as(false); + } + + const extensionId = uri.authority; + + // let the ExtensionUrlHandler instance handle this + if (this.extensionIds.has(extensionId)) { + return TPromise.as(false); + } + + // collect URI for eventual extension activation + const timestamp = new Date().getTime(); + let uris = this.uriBuffer.get(extensionId); + + if (!uris) { + uris = []; + this.uriBuffer.set(extensionId, uris); + } + + uris.push({ timestamp, uri }); + + // activate the extension + return this.extensionService.activateByEvent(`onExternalUri:${extensionId}`) + .then(() => true); + } + + registerExtensionHandler(extensionId: string, handler: IURLHandler): void { + this.extensionIds.add(extensionId); + + const uris = this.uriBuffer.get(extensionId) || []; + + for (const { uri } of uris) { + handler.handleURL(uri); + } + + this.uriBuffer.delete(extensionId); + } + + unregisterExtensionHandler(extensionId: string): void { + this.extensionIds.delete(extensionId); + } + + // forget about all uris buffered more than 5 minutes ago + private garbageCollect(): void { + console.log('garbage collect'); + + const now = new Date().getTime(); + const uriBuffer = new Map<string, { timestamp: number, uri: URI }[]>(); + + this.uriBuffer.forEach((uris, extensionId) => { + uris = uris.filter(({ timestamp }) => now - timestamp < FIVE_MINUTES); + + if (uris.length > 0) { + uriBuffer.set(extensionId, uris); + } + }); + + this.uriBuffer = uriBuffer; + } + + dispose(): void { + this.disposable.dispose(); + this.extensionIds.clear(); + this.uriBuffer.clear(); + } +} \ No newline at end of file diff --git a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts index b84eecd04e8..1923e437eb1 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts @@ -9,13 +9,14 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IURLService, IURLHandler } from 'vs/platform/url/common/url'; import URI from 'vs/base/common/uri'; import { IDisposable } from 'vs/base/common/lifecycle'; +import { IInactiveExtensionUrlHandler } from 'vs/platform/url/electron-browser/inactiveExtensionUrlHandler'; class ExtensionUrlHandler implements IURLHandler { constructor( private readonly proxy: ExtHostUrlsShape, private readonly handle: number, - private readonly extensionId: string + readonly extensionId: string ) { } handleURL(uri: URI): TPromise<boolean> { @@ -31,12 +32,12 @@ class ExtensionUrlHandler implements IURLHandler { export class MainThreadUrls implements MainThreadUrlsShape { private readonly proxy: ExtHostUrlsShape; - - private handlers = new Map<number, IDisposable>(); + private handlers = new Map<number, { extensionId: string, disposable: IDisposable }>(); constructor( context: IExtHostContext, - @IURLService private urlService: IURLService + @IURLService private urlService: IURLService, + @IInactiveExtensionUrlHandler private inactiveExtensionUrlHandler: IInactiveExtensionUrlHandler ) { this.proxy = context.getProxy(ExtHostContext.ExtHostUrls); } @@ -44,25 +45,31 @@ export class MainThreadUrls implements MainThreadUrlsShape { $registerExternalUriHandler(handle: number, extensionId: string): TPromise<void> { const handler = new ExtensionUrlHandler(this.proxy, handle, extensionId); const disposable = this.urlService.registerHandler(handler); - this.handlers.set(handle, disposable); + + this.handlers.set(handle, { extensionId, disposable }); + this.inactiveExtensionUrlHandler.registerExtensionHandler(extensionId, handler); return TPromise.as(null); } $unregisterExternalUriHandler(handle: number): TPromise<void> { - const disposable = this.handlers.get(handle); + const tuple = this.handlers.get(handle); - if (!disposable) { + if (!tuple) { return TPromise.as(null); } - disposable.dispose(); + const { extensionId, disposable } = tuple; + + this.inactiveExtensionUrlHandler.unregisterExtensionHandler(extensionId); this.handlers.delete(handle); + disposable.dispose(); return TPromise.as(null); } dispose(): void { - + this.handlers.forEach(({ disposable }) => disposable.dispose()); + this.handlers.clear(); } } diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index c007900105a..4ea24f29b42 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -110,6 +110,7 @@ import { IPCClient } from 'vs/base/parts/ipc/common/ipc'; import { registerWindowDriver } from 'vs/platform/driver/electron-browser/driver'; import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; import { PreferencesService } from 'vs/workbench/services/preferences/browser/preferencesService'; +import { IInactiveExtensionUrlHandler, InactiveExtensionUrlHandler } from 'vs/platform/url/electron-browser/inactiveExtensionUrlHandler'; export const EditorsVisibleContext = new RawContextKey<boolean>('editorIsOpen', false); export const InZenModeContext = new RawContextKey<boolean>('inZenMode', false); @@ -616,6 +617,9 @@ export class Workbench implements IPartService { // SCM Service serviceCollection.set(ISCMService, new SyncDescriptor(SCMService)); + // Inactive extension URL handler + serviceCollection.set(IInactiveExtensionUrlHandler, new SyncDescriptor(InactiveExtensionUrlHandler)); + // Text Model Resolver Service serviceCollection.set(ITextModelService, new SyncDescriptor(TextModelResolverService)); diff --git a/src/vs/workbench/services/extensions/node/extensionDescriptionRegistry.ts b/src/vs/workbench/services/extensions/node/extensionDescriptionRegistry.ts index 0d97bec7ccb..5fbb9357739 100644 --- a/src/vs/workbench/services/extensions/node/extensionDescriptionRegistry.ts +++ b/src/vs/workbench/services/extensions/node/extensionDescriptionRegistry.ts @@ -33,6 +33,12 @@ export class ExtensionDescriptionRegistry { if (Array.isArray(extensionDescription.activationEvents)) { for (let j = 0, lenJ = extensionDescription.activationEvents.length; j < lenJ; j++) { let activationEvent = extensionDescription.activationEvents[j]; + + // TODO@joao: there's no easy way to contribute this + if (activationEvent === 'onExternalUri') { + activationEvent = `onExternalUri:${extensionDescription.id}`; + } + this._activationMap[activationEvent] = this._activationMap[activationEvent] || []; this._activationMap[activationEvent].push(extensionDescription); } From d52cc1bd0ae85643453c0833594313b503f92fee Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao <ramyar@microsoft.com> Date: Fri, 20 Apr 2018 10:23:38 -0700 Subject: [PATCH 1069/1070] Stop sending OSVersion as PlatformVersion is used post Nova --- src/vs/platform/telemetry/node/commonProperties.ts | 2 -- .../telemetry/test/electron-browser/commonProperties.test.ts | 1 - 2 files changed, 3 deletions(-) diff --git a/src/vs/platform/telemetry/node/commonProperties.ts b/src/vs/platform/telemetry/node/commonProperties.ts index 493d2692402..e997435d9c1 100644 --- a/src/vs/platform/telemetry/node/commonProperties.ts +++ b/src/vs/platform/telemetry/node/commonProperties.ts @@ -21,8 +21,6 @@ export function resolveCommonProperties(commit: string, version: string, machine result['version'] = version; // __GDPR__COMMON__ "common.platformVersion" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.platformVersion'] = (os.release() || '').replace(/^(\d+)(\.\d+)?(\.\d+)?(.*)/, '$1$2$3'); - // __GDPR__COMMON__ "common.osVersion" : { "classification": "EndUserPseudonymizedInformation", "purpose": "FeatureInsight" } - result['common.osVersion'] = result['common.platformVersion']; // TODO: Drop this after the move to Nova // __GDPR__COMMON__ "common.platform" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.platform'] = Platform.Platform[Platform.platform]; // __GDPR__COMMON__ "common.nodePlatform" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } diff --git a/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts b/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts index 2970c6b00bd..1c5e341b12b 100644 --- a/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts +++ b/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts @@ -48,7 +48,6 @@ suite('Telemetry - common properties', function () { // assert.ok('common.version.shell' in first.data); // only when running on electron // assert.ok('common.version.renderer' in first.data); - assert.ok('common.osVersion' in props, 'osVersion'); assert.ok('common.platformVersion' in props, 'platformVersion'); assert.ok('version' in props); assert.equal(props['common.source'], 'my.install.source'); From 953cdf7f3df21e55e070ab38490fdebcf82e90e3 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao <ramyar@microsoft.com> Date: Fri, 20 Apr 2018 10:29:50 -0700 Subject: [PATCH 1070/1070] Update vscode-extension-telemetry version --- extensions/git/package.json | 2 +- extensions/html-language-features/package.json | 2 +- extensions/json-language-features/package.json | 2 +- extensions/markdown-language-features/package.json | 2 +- extensions/typescript-language-features/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/git/package.json b/extensions/git/package.json index 3c69526c68e..f6d86f0a91b 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -1114,7 +1114,7 @@ "file-type": "^7.2.0", "iconv-lite": "0.4.19", "jschardet": "^1.6.0", - "vscode-extension-telemetry": "0.0.15", + "vscode-extension-telemetry": "0.0.16", "vscode-nls": "^3.2.1", "which": "^1.3.0" }, diff --git a/extensions/html-language-features/package.json b/extensions/html-language-features/package.json index 7de2bb112bc..2de21c20bd7 100644 --- a/extensions/html-language-features/package.json +++ b/extensions/html-language-features/package.json @@ -172,7 +172,7 @@ } }, "dependencies": { - "vscode-extension-telemetry": "0.0.15", + "vscode-extension-telemetry": "0.0.16", "vscode-languageclient": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.2" diff --git a/extensions/json-language-features/package.json b/extensions/json-language-features/package.json index 807a17db050..9d4028b62fc 100644 --- a/extensions/json-language-features/package.json +++ b/extensions/json-language-features/package.json @@ -100,7 +100,7 @@ } }, "dependencies": { - "vscode-extension-telemetry": "0.0.15", + "vscode-extension-telemetry": "0.0.16", "vscode-languageclient": "^4.0.0", "vscode-languageserver-protocol-foldingprovider": "^2.0.0-next.2", "vscode-nls": "^3.2.2" diff --git a/extensions/markdown-language-features/package.json b/extensions/markdown-language-features/package.json index 6fa682e351d..54338021532 100644 --- a/extensions/markdown-language-features/package.json +++ b/extensions/markdown-language-features/package.json @@ -288,7 +288,7 @@ "highlight.js": "9.5.0", "markdown-it": "^8.4.0", "markdown-it-named-headers": "0.0.4", - "vscode-extension-telemetry": "0.0.15", + "vscode-extension-telemetry": "0.0.16", "vscode-nls": "^3.2.1" }, "devDependencies": { diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index 836a370e785..64a2132a32c 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -17,7 +17,7 @@ ], "dependencies": { "semver": "4.3.6", - "vscode-extension-telemetry": "0.0.15", + "vscode-extension-telemetry": "0.0.16", "vscode-nls": "^3.2.1" }, "devDependencies": {